以编程方式删除 Leaflet overlayMaps 图层

Mar*_*den 3 layer leaflet

使用传单javascript。我想让我的“清除按钮”做两件事......

1) 取消选中所有 L.Control 图层 2) 从地图中删除当前覆盖

我可以使用以下代码轻松完成第一个:

var checks = document.querySelectorAll('[type = "checkbox"]'), i;
    function uncheckBoxes() {
        for (i = 0; i < checks.length; ++i) {
            checks[i].checked = false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

接下来就有点棘手了。我曾尝试使用 removeLayer() 和 clearLayers() 函数,但它们不起作用。我在传单文档中没有看到从地图中删除 L.control overlayMap 图层的方法,除非您自己取消选中它。

对此的任何见解将不胜感激。

ghy*_*ybs 5

不确定以编程方式从地图中删除某些图层/叠加层的困难是什么。

它通常是微不足道的 ( map.removeLayer(layer)),并且图层控件会自动反映地图上发生的情况(在这种情况下,如果layer是叠加层之一,则其关联的复选框将变为未选中状态)。

至于从地图中删除所有叠加层,您只需要保留对这些叠加层的引用,遍历它们并将它们从地图中删除:

var overlays = {
  'Name 1': someLayer,
  'Name 2': someOtherLayer
};

L.control.layers(null, overlays).addTo(map);

// Whenever you want to remove all overlays:
for (var name in overlays) {
  map.removeLayer(overlays[name]);
}
Run Code Online (Sandbox Code Playgroud)

演示:https : //jsfiddle.net/3v7hd2vx/357/