Me gustaría usar OpenLayers 3 (vi una pregunta similar para OpenLayers 2) para mostrar una capa de GeoServer usando WMS, y hacer zoom a la extensión de la capa automáticamente obteniendo la información de extensión de esta capa. Al igual que cuando la vista previa de la capa en GeoServer, muestra la capa dentro de la extensión de la capa y no importa lo que el CRS de la capa es.
He instalado Opengeo suite 4.5 y he creado un visor con la plantilla suite-sdk viewer. Depuro con suite-sdk debug -g http/to/geoserver path/to/app
El visor utiliza la biblioteca OpenLayers 3. He añadido la capa de OSM y mi capa de GeoServer con la fuente ol.source.TileWMS y mostrarlos con éxito.
Obtengo las capacidades de mi servicio local GeoServer WMS ( ejemplo de ol3 ). Con los resultados, marcando el nombre de cada capa, me gustaría hacer zoom a mi capa de destino.
//
// the codes add layers to ol.map and intial the ol.view
//
// TODO: zoom to layer
var featurePrefix = '***';
var featureType = '***';
var url = 'http://localhost:port/geoserver/wms?request=GetCapabilities&service=WMS&version=1.1.1';
var parser = new ol.format.WMSCapabilities();
$.ajax(url).then(function(response) {
var result = parser.read(response);
var Layers = result.Capability.Layer.Layer;
var extent;
for (var i=0, len = Layers.length; i<len; i++) {
var layerobj = Layers[i];
if (layerobj.Name == featurePrefix + ':' + featureType) {
extent = layerobj.BoundingBox[0].extent;
break;
}
console.log(layerobj.Name);
}
// THIS DOES NOT WORK
map.getView().fitExtent(extent, map.getSize());
});
Con el código anterior, puedo obtener el BBOX de la capa en su propio sistema de coordenadas que no sea ESPG::3857
. Pero el mapa no se acercó a esa capa. Creo que es un problema del sistema de coordinación.
¿Cómo puedo resolverlo, u otro enfoque para obtener la medida?
(He comprobado que el código actual no es agradable)