当标记靠近边缘时将传单地图居中

Centering a leaflet map when marker is close to the edges

我不确定这个问题的确切技术术语是什么,所以请原谅这个菜鸟问题。

我有这样一张传单地图:

 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);

这很好用,但是由于地图在不断移动,效果在视觉上不是很赏心悦目。我只想移动标记,直到它靠近地图的边缘,然后将地图重新​​居中。那可能吗 ?任何 hints/solutions 将不胜感激。

每次检查(每隔几秒),您可以将标记位置与地图边界进行比较:

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