Openlayers 3 Max Extent

15

Quiero restringir donde el usuario puede desplazarse en el mapa, pero parece que no puedo encontrar ningún recurso que indique cómo establecer la extensión máxima de una vista de mapa en OpenLayers 3. Sé que había una solución en OpenLayers 2. ¿Es posible en la nueva versión?

    
pregunta CaitlinW 15.10.2014 - 14:35

4 respuestas

18

Esto se puede hacer simplemente definiendo extent en el objeto Ver. por ejemplo,

var view = new ol.View({
    ...
    extent: [minx,miny,maxx,maxy]
    ...
});
var map = new ol.Map({
    ...
    view: view,
    ...
});
    
respondido por el Ragnagord 15.10.2014 - 14:56
3

Otra opción es:

...
var map = new ol.Map({
          layers: [...],
          overlays: [...],
          target: document.getElementById('map'),
          view: new ol.View({
             center: ol.proj.transform([minx,miny,maxx,maxy], 
                     'EPSG:4326', 'EPSG:3857'),
             zoom: ...,    
             maxZoom: ..., 
             minZoom: ..., 
             extent: ol.proj.transform([minx-n,miny-n,maxx+n,maxy+n], 
                     'EPSG:4326', 'EPSG:3857')
             })
        });
...
    
respondido por el uri 17.07.2015 - 22:00
1

Como Ragnagord ya señaló, es necesario establecer el extent en su ol.view .

Dependiendo de lo que quiera hacer referencia a la forma más fácil es obtener la extensión directamente de su proyección deseada ( ol.proj.Projection ) o capa (cualquier clase de ol.layer ) usando la función getExtent() . En el caso de EPSG: 3857 esto funciona:

var map = new ol.Map({
    ...
    view: new ol.View({
        ...
        extent: ol.proj.get("EPSG:3857").getExtent()
  })
});
    
respondido por el Lars 07.09.2016 - 15:32
1

Tengo que señalar si consideramos la proyección del mapa, en mi caso entre WGS84 y Spherical Mercator, hay una alternativa con ol.proj.transformExtent . Se encontró una respuesta aquí . La extensión se asigna de la siguiente manera:

var map = new ol.Map({
   .
   .
   .
   view: new ol.View({
        extent:  ol.proj.transformExtent([minx, miny, maxx, maxy], 'EPSG:4326', 'EPSG:3857');
         .
         .
         .
        )}
)}
    
respondido por el Dejan P. 23.02.2017 - 12:42

Lea otras preguntas en las etiquetas