ฉันต้องการ จำกัด ตำแหน่งที่ผู้ใช้สามารถเลื่อนบนแผนที่ได้ แต่ฉันไม่สามารถหาแหล่งข้อมูลใด ๆ ที่บอกวิธีตั้งค่าขอบเขตสูงสุดของมุมมองแผนที่ใน OpenLayers 3 ฉันรู้ว่ามีวิธีแก้ปัญหาใน OpenLayers 2 หรือไม่ เป็นไปได้ในเวอร์ชั่นใหม่
ฉันต้องการ จำกัด ตำแหน่งที่ผู้ใช้สามารถเลื่อนบนแผนที่ได้ แต่ฉันไม่สามารถหาแหล่งข้อมูลใด ๆ ที่บอกวิธีตั้งค่าขอบเขตสูงสุดของมุมมองแผนที่ใน OpenLayers 3 ฉันรู้ว่ามีวิธีแก้ปัญหาใน OpenLayers 2 หรือไม่ เป็นไปได้ในเวอร์ชั่นใหม่
คำตอบ:
สิ่งนี้สามารถทำได้โดยการกำหนดextent
ในวัตถุมุมมอง เช่น
var view = new ol.View({
...
extent: [minx,miny,maxx,maxy]
...
});
var map = new ol.Map({
...
view: view,
...
});
extent
ได้กลายเป็นคุณสมบัติเอกสารที่เหมาะสม: openlayers.org/en/latest/apidoc/module-ol_View-View.html (ตามที่เขียน, "ล่าสุด" =
ตัวเลือกอื่นคือ:
...
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')
})
});
...
เช่นเดียวกับ Ragnagord ชี้แล้วออกมาก็เป็นสิ่งจำเป็นที่จะตั้งในของคุณ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()
})
});
ฉันต้องชี้ให้เห็นถ้าเราพิจารณาการฉายแผนที่ในกรณีของฉันระหว่าง 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');
.
.
.
)}
)}