缩放以适合 LeafletJS 地图上的所有标记

lae*_*aef 5 javascript leaflet

在向 LeafletJS 地图添加一系列标记后,是否可以让 Leaflet 缩放并重新对齐它的焦点以显示每个标记?我看到许多类似的问题与谷歌地图有关,但没有与传单有关。

就像是:

map.fitAllMarkers();
Run Code Online (Sandbox Code Playgroud)

我还注意到Leaflet 中的几个函数来获取地图的边界,但我不确定如何使用这些函数来达到预期的效果。

ghy*_*ybs 9

您还可以利用特意制作的featureGroup.getBounds()方法使地图适合标记的范围:

var fg = L.featureGroup([arrayOfMarkers]).addTo(map);

map.fitBounds(fg.getBounds());
Run Code Online (Sandbox Code Playgroud)

演示:http : //jsfiddle.net/3v7hd2vx/28/


lae*_*aef 3

最后,这实际上非常简单,尽管没有统一为一个函数。首先,您需要创建一个 Leaflet 边界对象:

var bounds = new L.LatLngBounds();
Run Code Online (Sandbox Code Playgroud)

然后,对于地图上的每个标记:

bounds.extend(markerObject.getLatLng());
Run Code Online (Sandbox Code Playgroud)

最后,将新边界应用到地图:

mapObject.fitBounds(bounds);
Run Code Online (Sandbox Code Playgroud)