2015-12-08 50 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

相關問題