Openlayers 3 Max Extent


15

Saya ingin membatasi di mana pengguna dapat menggeser peta, tapi sepertinya saya tidak dapat menemukan sumber daya apa pun yang memberi tahu cara mengatur batas maksimal tampilan peta di OpenLayers 3. Saya tahu ada solusi di OpenLayers 2. Apakah mungkin di versi baru?

Jawaban:


18

Ini bisa dilakukan dengan mendefinisikan extentdalam objek View. misalnya

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

Tetapi dalam openlayers.org/en/v3.0.0/apidoc/ol.View.html tidak ada opsi seperti itu
Daviddd

Banyak yang tidak didokumentasikan, atau eksperimental dan hanya terlihat ketika stabil tidak dicentang
CJStuart

4
Ini bukan tingkat nyata. Itu hanya membuat luasan dalam tampilan, yang berarti ada ruang putih yang buruk di sekitar luasnya.
Mitchell Ingram

Sementara itu, extenttelah menjadi fitur terdokumentasi yang tepat: openlayers.org/en/latest/apidoc/module-ol_View-View.html (pada saat penulisan, "terbaru" = v5.3.0)
Christallkeks

3

Pilihan lain adalah:

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

Seperti yang Ragnagord sudah tunjukkan, Anda perlu mengaturnya extentdi ol.view.

Bergantung pada apa yang ingin Anda rujuk ke cara termudah adalah untuk mendapatkan jangkauan langsung dari proyeksi yang Anda inginkan ( ol.proj.Projection) atau layer (kelas apa saja ol.layer) menggunakan getExtent()fungsi. Dalam hal EPSG: 3857 ini berfungsi:

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

1

Saya harus menunjukkan jika kita mempertimbangkan proyeksi peta, dalam kasus saya antara WGS84 dan Spherical Mercator, ada alternatif dengan ol.proj.transformExtent. Sebuah jawaban ditemukan di sini . Luas ditetapkan sebagai berikut:

var map = new ol.Map({
   .
   .
   .
   view: new ol.View({
        extent:  ol.proj.transformExtent([minx, miny, maxx, maxy], 'EPSG:4326', 'EPSG:3857');
         .
         .
         .
        )}
)}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.