Відкриті шари 3 Макс


15

Я хочу обмежити, де користувач може розміщувати папку на карті, але я не можу знайти жодних ресурсів, які б розказували, як встановити максимальну міру перегляду карти в OpenLayers 3. Я знаю, що в OpenLayers 2. було рішення. це можливо в новій версії?

Відповіді:


18

Це можна просто зробити, визначившись extentу об’єкті View. напр

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

Але в openlayers.org/en/v3.0.0/apidoc/ol.View.html немає такого варіанту
Daviddd

Багато не задокументовано або експериментально, і видно лише тоді, коли стабільність не перевірена
CJStuart

4
Це не реально. Він просто зберігає розрізи в межах зору, тобто немає потворного білого простору по всьому протягу.
Мітчелл Інграм

Тим часом, extentстало власне документована особливість: openlayers.org/en/latest/apidoc/module-ol_View-View.html (як в письмовій формі, «остання» = v5.3.0)
Christallkeks

3

Ще один варіант:

...
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

Як уже зазначав Рагнагорд, потрібно встановити extentсвоє ol.view.

Залежно від того, на що ви хочете звернутися, найпростіший спосіб - це отримати ступінь прямо з потрібного проекції ( ol.proj.Projection) або шару (будь-якого класу ol.layer) за допомогою getExtent()функції. У випадку EPSG: 3857 це працює:

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

1

Я маю зазначити, якщо ми розглянемо проекцію карти, у моєму випадку між WGS84 та сферичним Меркатором є альтернатива ol.proj.transformExtent. Відповідь була знайдена тут . Обсяг призначається таким чином:

var map = new ol.Map({
   .
   .
   .
   view: new ol.View({
        extent:  ol.proj.transformExtent([minx, miny, maxx, maxy], 'EPSG:4326', 'EPSG:3857');
         .
         .
         .
        )}
)}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.