2013-07-20 138 views
2

我的地圖(Mapbox)佔據了網站的整個背景,因此中心位於網站的中間。但是,用戶的地圖焦點在右側,因爲我的內容與左側的地圖重疊。小冊子抓取位置時,它位於地圖的中心,但如果我可以將它設置爲從站點右側三分之一的中心位置抓取位置,那麼這將更加方便,這樣用戶就不會居中與網站左側內容相鄰的目標地圖。如何使用Leaflet API更改地圖的位置中心?

有沒有一種方法可以設置地圖的傳單API的中心或位置焦點?

以下是我有它設置目前,

mapOptions: { 
     maxZoom: 18, 
     zoomControl: false, 
     worldCopyJump: true 
}, 

createMap: function() { 
     Map.map = L.map('map', Map.mapOptions); 
     Map.layer = L.mapbox.tileLayer(Map.mapID, { 
       unloadInvisibleTiles: true, 
     }).addTo(Map.map);    
     Map.map.locate({setView: true}); 
     Map.map.addControl(L.mapbox.geocoderControl(Map.mapID)); 
     new L.Control.Zoom({ position: 'topright' }).addTo(Map.map); 
}, 

回答

9

您可以使用組合panBy()getSize()將覆蓋圖的寬度偏移到地圖上。

這裏有一個片段,它應該讓你一個開始:

// Calculate the offset 
var offset = map.getSize().x*0.15; 
// Then move the map 
map.panBy(new L.Point(-offset, 0), {animate: false}); 

在我的例子,我的疊加是地圖的寬度的33%。因此,我抓住地圖區域的大小,然後乘以0.15(這是基於一些試驗來查看最佳偏移量是多少),並使用panBy()來抵消地圖中心。

這裏是full example

+1

這個伎倆。謝謝! –

+0

真棒,很高興幫助。 –

2

首先,你需要知道lat和長要集中在地圖上的點。然後很簡單,只需調用Map.map.setView傳遞座標和縮放級別即可。 Api參考:http://leafletjs.com/reference.html#map-set-methods

如果你不知道你的座標,那麼你可以通過試驗和錯誤找到它,只需創建一個標記並將其添加到地圖。

+0

setView()正是我所期待的,它在您的鏈接中進行了描述。 – Timo

相關問題