Openlayers 3 Max Extent


15

ฉันต้องการ จำกัด ตำแหน่งที่ผู้ใช้สามารถเลื่อนบนแผนที่ได้ แต่ฉันไม่สามารถหาแหล่งข้อมูลใด ๆ ที่บอกวิธีตั้งค่าขอบเขตสูงสุดของมุมมองแผนที่ใน OpenLayers 3 ฉันรู้ว่ามีวิธีแก้ปัญหาใน OpenLayers 2 หรือไม่ เป็นไปได้ในเวอร์ชั่นใหม่

คำตอบ:


18

สิ่งนี้สามารถทำได้โดยการกำหนดextentในวัตถุมุมมอง เช่น

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

มากไม่ได้บันทึกไว้หรือทดลองและจะปรากฏเฉพาะเมื่อไม่ตรวจสอบความ
เสถียร

4
นี่ไม่ใช่ขอบเขตจริง มันทำให้ขอบเขตในมุมมองซึ่งหมายความว่ามีพื้นที่สีขาวน่าเกลียดทั่วทุกมุม
Mitchell Ingram

ในขณะเดียวกันextentได้กลายเป็นคุณสมบัติเอกสารที่เหมาะสม: openlayers.org/en/latest/apidoc/module-ol_View-View.html (ตามที่เขียน, "ล่าสุด" =
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

เช่นเดียวกับ Ragnagord ชี้แล้วออกมาก็เป็นสิ่งจำเป็นที่จะตั้งในของคุณextentol.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 และทรงกลม Mercator ol.proj.transformExtentที่มีทางเลือกด้วย คำตอบที่ถูกพบที่นี่ ขอบเขตถูกกำหนดดังนี้:

var map = new ol.Map({
   .
   .
   .
   view: new ol.View({
        extent:  ol.proj.transformExtent([minx, miny, maxx, maxy], 'EPSG:4326', 'EPSG:3857');
         .
         .
         .
        )}
)}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.