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

Posted

技术标签:

【中文标题】缩放以适合 LeafletJS 地图上的所有标记【英文标题】:Zoom to Fit All Markers on LeafletJS Map 【发布时间】:2016-11-04 11:07:11 【问题描述】:

在 LeafletJS 地图中添加一系列标记后,是否可以让 Leaflet 缩放并重新调整焦点以显示每个标记?我看到 many similar questions 与 Google 地图有关,但与 Leaflet 无关。

类似:

map.fitAllMarkers();

我还注意到several functions in Leaflet 可以获取地图的边界,但我不确定如何使用它们来达到预期的效果。

【问题讨论】:

【参考方案1】:

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

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

map.fitBounds(fg.getBounds());

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

【讨论】:

【参考方案2】:

最后,这实际上很简单,虽然没有统一为一个功能。首先,您需要创建一个 Leaflet bounds 对象:

var bounds = new L.LatLngBounds();

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

bounds.extend(markerObject.getLatLng());

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

mapObject.fitBounds(bounds);

【讨论】:

以上是关于缩放以适合 LeafletJS 地图上的所有标记的主要内容,如果未能解决你的问题,请参考以下文章

Leafletjs中的L.polygon边界

设置地图缩放以覆盖所有标记;确保以特定标记为中心

如何设置谷歌地图缩放级别以显示所有标记?

适合放大 iPhone 上的地图

缩放以适合非标准尺寸地图的所有注释

单击地图时添加新标记(OpenStreetMap,Leaflet JS)