leaflet - 如何获取control.layers中选定的图层?

标签 leaflet

有没有办法使用传单 api 选择 control.layers 中的所有选定图层?

我可以在 jquery 的帮助下做到这一点,如下所示:

$('.leaflet-control-layers-selector:checked')

但是也许有一个api

enter image description here

谢谢

最佳答案

没有可用的 API,但您可以轻松地自己创建一个:

// Add method to layer control class
L.Control.Layers.include({
    getActiveOverlays: function () {

        // Create array for holding active layers
        var active = [];

        // Iterate all layers in control
        this._layers.forEach(function (obj) {

            // Check if it's an overlay and added to the map
            if (obj.overlay && this._map.hasLayer(obj.layer)) {

                // Push layer to active array
                active.push(obj.layer);
            }
        });

        // Return array
        return active;
    }
});

var control = new L.Control.Layers(...),
    active = control.getActiveOverlays();

关于leaflet - 如何获取control.layers中选定的图层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44322326/

相关文章:

javascript - 如何删除 leaflet.draw 中的绘图层?

javascript - 全局变量仅返回循环中最后一个实例的值

javascript - 如何使用angularjs在传单标记上触发事件

javascript - 如何在传单中选择底层

jquery - 如何在jquery方法中添加以逗号作为分隔符的标签?

leaflet - Mapbox 鼠标右键单击

javascript - 为什么在js文件中用json声明变量而不是读取json?

javascript - 使用 Leaflet.MarkerCluster.LayerSupport 插件在 Leaflet 中显示 PopUp

javascript - 调用两个 JS 函数并同步它们(snakeAnim 和 Animated Marker)

javascript - null 不是对象 - jQuery + leaflet