使用Leaflet调整标记的fitBounds

7

我有一个名为markers的标记数组,并使用LeafletJs将这些标记添加到地图中。

L.layerGroup(markers).addTo(map);

现在我想专注于一个视口,覆盖所有的标记。
var bounds = L.latLngBounds(markers);
 map.fitBounds(bounds, { padding: [20, 20] });

为什么在map.fitBounds(bounds, { padding: [20, 20] });这一行会出现Cannot read property 'lat' of undefined错误信息。

1个回答

9
你收到错误的原因是因为L.LatLngBounds期望两个L.LatLng对象作为参数,而不是标记数组,如你在文档中所看到的。我建议使用L.FeatureGroup,它是从L.LayerGroup扩展而来但具有一些额外功能。它有一个getBounds方法,可以按照添加到组中的所有要素计算边界框,正好满足你的需求。所以你可以这样做:
var featureGroup = L.featureGroup(markers).addTo(map);
map.fitBounds(featureGroup.getBounds());

这是一个在Plunker上的工作示例:http://plnkr.co/edit/EbzlaF05fLARDYbnXSSk

我按照你说的改了,但问题仍然存在。 - Moshi
那么您一定在做其他错误的事情,但基于您提供的代码无法看到具体内容。这是一个工作正常的Plunker,并已添加到我的答案中:http://plnkr.co/edit/EbzlaF05fLARDYbnXSSk - iH8
需要一个工作示例 "<link data-require="leaflet@1.7.3"" - flywire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接