Leaflet 地图框关闭图层

Leaflet 地图框关闭图层,leaflet,mapbox,Leaflet,Mapbox,我有一组23个mapbox图层,可以独立地打开和关闭。我想包括一个主关闭所有切换。我怎样才能做到这一点?代码如下: var map=L.map('map',{center:[56.5,-1],minZoom:7,zoomControl:false,legendControl:true}); map.addControl(新的L.Control.ZoomMin()) var baseLayer=new L.mapbox.tillelayer('inosys.k52e98ob').addTo(ma

我有一组23个mapbox图层,可以独立地打开和关闭。我想包括一个主关闭所有切换。我怎样才能做到这一点?代码如下:


var map=L.map('map',{center:[56.5,-1],minZoom:7,zoomControl:false,legendControl:true});
map.addControl(新的L.Control.ZoomMin())
var baseLayer=new L.mapbox.tillelayer('inosys.k52e98ob').addTo(map);
var ui=document.getElementById('map-ui');
变量覆盖=[
['inosys.k8mg7jp2','Toggle All On',1],
['#','Toggle All Off',1],
['inosys.jgsk2of8','importional Discoveries',99999],
['inosys.gaa3x433','Wells',99999],
['inosys.gaa3xpkf','Hydrogen Fields',3],
['inosys.u0uttr1z','fielddeterminations',3],
....

在选择切换按钮时,您可以运行一个函数,该函数遍历所有层并删除它们,如下所示:

function toggleAllOff(){
  map.eachLayer(function (layer) {
    map.removeLayer(layer);
  });
}
您还可以将所有图层添加到单个图层组中,然后在该组上调用
clearLayers
,如另一个问题中所述

编辑: 下面显示了在您的特定情况下工作所需的代码。该方法删除了基础层,我将其重新添加到中,这有点黑客味。如果您不想删除基础层,可以对此进行快速检查

link.onclick = function (e) {
    e.preventDefault();
    e.stopPropagation();

//Add the following
    if ($(this).text() == 'Toggle All Off') {
        map.eachLayer(function (layer) {
            map.removeLayer(layer);
        });
        map.addLayer(baseLayer);
    } else if (map.hasLayer(layer)) {

//The rest is your old code
        map.removeLayer(layer);
        map.removeLayer(gridlayer);
        map.removeControl(gridControl);
        map.removeControl(legendControl);
        this.className = '';

可能重复谢谢。我如何将上述函数插入上述代码中?我还不太熟悉函数。现在我有了一个“切换关闭位置标记”([“#”,“切换所有关闭”,1],).我该如何从这里调用函数?我需要看更多的代码。你的控件切换设置如何?你能展示一下你现在拥有的吗?Josh-这是JFIDLE-虽然我添加了所有合适的代码,但它在JFIDLE上不起作用:好的,我用新代码更新了你的代码,说明了这个想法。它在JSFIDLE上有些原因不起作用在上(我修复了JSFIDLE中与js文件加载顺序相关的几个错误),但它在您的地图上起作用。我已更新了我的答案,以显示您需要的特定代码。您可能希望在上面做更多的工作,但它显示了总体思路。循环浏览选项并按照说明进行操作。