2013-07-20 136 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

相关问题