以编程方式删除 Leaflet overlayMaps 层

Remove Leaflet overlayMaps layer programmatically

使用传单javascript。我想让我的 "clear button" 做两件事...

1) 取消选中所有 L.Control 层 2) 从地图中移除当前叠加层

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

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

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

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

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

它通常是微不足道的 (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]);
}

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