如何在显示或隐藏Leaflet LayerGroup时收到通知?

时间:2015-04-04 15:01:35

标签: javascript javascript-events leaflet onclicklistener

我希望每当用户点击"城市"图层控件中的复选框 - 显示或隐藏linked example中的城市标记。这是一个JSFiddle来玩。

Leaflet screenshot

我看到LayerGroup派生了一些events from FeatureGroup。如果我错了,请纠正我:据我所知,显示和隐藏标记与layeraddlayerremove不同?!

input元素不会绑定id

<label>
    <input class="leaflet-control-layers-selector" type="checkbox" checked="">
    <span> Cities</span>
</label>

如何在标记“&#39;能见度被切换?

1 个答案:

答案 0 :(得分:5)

您可以使用jQuery选择输入元素,使用其类:

$('.leaflet-control-layers-selector').click(function(){
    alert('something')
});

此外,如果您有多个图层,则可以在单击其中一个复选框时检查地图是否包含一个图层。

$('.leaflet-control-layers-selector').click(function(){
    if(map.hasLayer(cities)) alert('something');
});

<强>更新

您还可以使用地图事件overlayadd和overlayremove,如下所示:

map.on({
    overlayadd: function(e) {
        if (e.name === 'Cities') alert('added');
    },
    overlayremove: function(e) {
        if (e.name === 'Cities') alert('removed');
    }
});

这是您的示例的更新JSFiddle:http://jsfiddle.net/pufanalexandru/g54efr69/1/