2017-07-26 67 views
1

使用单张JavaScript。我想我的“清除按钮”做两件事情......以编程方式移除单张覆盖图层图层

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

我可以用做第1易足够此代码:

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图层的方法,除非您自己实际取消选中它。

任何对此的深入了解将不胜感激。

回答

1

不完全确定您在编程上从您的地图中移除某些图层/覆盖图时遇到了什么困难。

通常很平常(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/