2016-06-27 44 views
5

我使用單張與Mapbox我想設置地圖等等的看法:單張 - Fitbounds並保持中心

  1. 所有標記都可見
  2. 中心設置爲特定的point

用setView和fitbounds分別完成每個點很容易,但我不知道如何同時使用setView和fitBounds來改變中心。解決方案可能是定義中心和縮放,但是如何知道哪個縮放可以讓我的所有標記都可見?

編輯

我實現了由IvanSanchez建議的解決方案,它按預期工作:

let ne=leafletBounds.getNorthEast(); 
let sw=leafletBounds.getSouthWest(); 
let neSymetric=[ne.lat + (center.lat - ne.lat)*2, ne.lng + (center.lng - ne.lng)*2]; 
let swSymetric=[sw.lat +(center.lat - sw.lat)*2, sw.lng + (center.lng - sw.lng)*2]; 
leafletBounds.extend(L.latLngBounds(swSymetric, neSymetric)); 

回答

3

讓您的邊界,並沿着你想要的中心點施加點對稱創建第二個L.Bounds實例。創建一個新的L.Bounds,其中包含原始邊界和對稱邊界。用那個運行fitBounds()

+0

謝謝你,這是一個簡單而有效的解決方案! – DevLR

0

我找到了另一個解決方案。在用fitBound()調整地圖後,您可以直接調用map.panTo([lat,lng])。我正在使用VueJs並在掛載的()生命週期鉤子中調用它。

我很合適,所以你可以看到用戶的位置和遠處的地理特徵,但是我使用panTo,因此用戶的真實位置在fitBounds之後位於地圖的中心。它似乎無縫工作到目前爲止。