在Leaflet.js中,有没有办法迭代所有当前存在的标记?

时间:2017-05-23 06:11:00

标签: javascript leaflet

我试图制作它,所以我的地图图标缩放尺寸,而不是静态38x38。如果有任何方法可以用CSS做到这一点,我也可以。我认为这也包括能够遍历所有标记,但我无法找到方法。

提前致谢。

2 个答案:

答案 0 :(得分:0)

标记应该在DOM中都可用,它们有自己的“窗格”,类名为leaflet-pane leaflet-marker-pane。他们自己的标记至少有leaflet-marker-icon类。

您可以使用“标准”DOM查询来访问它们(例如querySelectorAll)。您可能想要检查是否有适用于您的用例的插件,传单具有丰富的插件生态系统。

答案 1 :(得分:0)

这是XY problem。你想用缩放级别改变标记的大小,你想“我知道!我会遍历标记!”,你不知道怎么做,所以你要求一个解决方案第二个问题。

请问,如何根据缩放级别更改标记图标的大小?

有几种方法。

一种是将事件处理程序附加到地图的zoomend事件,并在该事件处理程序内迭代每个标记。您可以致电map.eachLayer(...),检查图层是否为标记(lyr instanceof L.Marker),并重新分配其L.Icon

另一种方法是将事件处理程序附加到地图每个标记的zoomend事件中,有点:

for (i in data) {
    ...
    var marker = L.marker(data[i].coords, ...);
    map.on('zoomend', function(){ 
        if (map.getZoom() > 15) {
            marker.setIcon(...);
        } else {
            marker.setIcon(...);
        }
    });
}

另一种方法是使用Leaflet.ZoomCSS,它将根据缩放级别更改地图的CSS类,允许您在那里处理样式。