2015-12-08 49 views
0

我不确定这个问题的确切技术术语是什么,所以请原谅这个不问问题。当标记靠近边缘时居中传单地图

我有一个单张地图是这样的:

var map = L.map("dvMapContainer", 
       { 

       }).setView([39.782388193, -86.14135265], 14); 

我加入一个标记,这个地图是这样的:

var vehicleMarker = new L.Marker([39.782388193, -86.14135265], { id: 'vehicle', icon: cssIcon }); 
    map.addLayer(vehicleMarker); 

每隔几秒钟,我更新vehicleMarker和中心的位置地图

vehicleMarker.setLatLng(newLatLng); 
           map.setView(newLatLng, 18); 

这工作正常,但效果是不是非常视觉愉快,因为米ap正在不断移动。我只想移动标记直到接近地图边缘,然后重新映射地图。那可能吗 ?任何提示/解决方案将不胜感激。

回答

2

每次检查(每隔几秒钟),你可以在地图范围比较标记位置:

var bounds = map.getBounds(); 
if(vehicleMarker.getLatLng().lng > bounds.getEast()-.001 || vehicleMarker.getLatLng().lng < bounds.getWest()+.001 || vehicleMarker.getLatLng().lat > bounds.getNorth()-.001 || vehicleMarker.getLatLng().lat < bounds.getSouth()+.001) 
    //change bounds 

如果你的下一个标记位置是靠近你的当前边界,然后更改地图的当前范围。

您可以根据缩小的距离改变.001。上界

此处了解详情:http://leafletjs.com/reference.html#latlngbounds

+1

感谢您准备代码和文档的链接。我希望这可以帮助其他任何人在这种情况下。谢谢 – w2olves

相关问题