2016-10-18 49 views
0

我的目的是當我們拖動地圖時將地圖平移到一定的極限(完全像谷歌地圖),之後它應該鎖定。此支持在使用邊界的Openlayer 2.0版中提供。但在版本3中,我必須在初始化視圖時設置extent屬性。我被困在這個階段。初始化地圖後未設置視圖。如何使用openlayer3初始化map之後在視圖中設置extent屬性?

var map = new ol.Map({ 
    target: 'map', 
    layers: [ 
     new ol.layer.Tile({ 
     source: new ol.source.OSM() 
     }) 
    ], 
    view: new ol.View({ 
     center: ol.proj.fromLonLat([73.8, 18.5]), 
     zoom: 12 
    }) 
    }); 

現在我想成立 '程度' 屬性鑑於

map.setView(new ol.View({ 
    center: ol.proj.fromLonLat([73.8, 18.5]), 
    extent: map.getView().calculateExtent(map.getSize()), 
    zoom : 12 
    })); 

此代碼不能正常工作。有沒有其他的方式來做到這一點,或者我做錯了什麼? 控制檯中沒有錯誤。但地圖不顯示。

+0

https://jsfiddle.net/nh9fs74k/ – Anudeep

回答

0

代替map.setView(new ol.View({...........

使用這一段代碼地圖初始化後

..... 
var myExtent = [xmin,ymin,xmax,ymax]; 
map.getView().fit(myExtent , map.getSize()); 
........ 

UPDATE 爲了從當前範圍之外拖動地圖防止執行以下操作:

map.setView(
new ol.View({ 
    center: ol.proj.fromLonLat([73.8, 18.5]), 
    extent: map.getView().calculateExtent(map.getSize()), 
    zoom: 12 
    }) 
); 

這裏是一個fiddle

+0

感謝您回覆帕夫洛。 Yaa很好。其實我從「map.getView()。calculateExtent(map.getSize())」得到這些值(xmin,ymin,xmaz,ymax),你的代碼片段是絕對正確的,但是我的目的沒有解決,那個map區域應在某個區域後鎖定。如果我直接在'extent'屬性視圖的初始值設定項上直接編碼該值,它就會起作用。但那不可行。 – Anudeep

+0

你在做什麼?你什麼意思是鎖定?防止移出境外。請詳細解釋或者更好地演示你的問題。 – pavlos

+0

是的。防止移出境外。 – Anudeep

相關問題