Openlayers 3 Max Extensión


15

Quiero restringir dónde puede desplazarse el usuario 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 hubo una solución en OpenLayers 2. Es Es posible en la nueva versión?

Respuestas:


18

Esto se puede hacer simplemente definiendo extenten el objeto Ver. p.ej

var view = new ol.View({
    ...
    extent: [minx,miny,maxx,maxy]
    ...
});
var map = new ol.Map({
    ...
    view: view,
    ...
});


Mucho no está documentado, o es experimental y solo es visible cuando no se verifica la
estabilidad

44
Esto no es una medida real. Simplemente mantiene las extensiones a la vista, lo que significa que hay un espacio en blanco feo alrededor de la extensión.
Mitchell Ingram

Mientras tanto, se extentha convertido en una característica documentada adecuada: openlayers.org/en/latest/apidoc/module-ol_View-View.html (al momento de escribir, "latest" = v5.3.0)
Christallkeks

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')
             })
        });
...

1

Como Ragnagord ya señaló, es necesario configurarlo extenten su ol.view.

Dependiendo de lo que quiera referirse, 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 getExtent()función. En el caso de EPSG: 3857 esto funciona:

var map = new ol.Map({
    ...
    view: new ol.View({
        ...
        extent: ol.proj.get("EPSG:3857").getExtent()
  })
});

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. Aquí se encontró una respuesta . 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');
         .
         .
         .
        )}
)}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.