如何从地图上删除所有图层?

时间:2019-11-05 16:19:20

标签: javascript leaflet geojson

我有一个可以从地图上单独删除所有图层的功能:

function resetMap() {

map.removeLayer(Frog1Layer);
map.removeLayer(Frog2Layer);
map.removeLayer(Frog3Layer);
map.removeLayer(Frog4Layer);
map.removeLayer(Frog5Layer);
map.removeLayer(Frog6Layer);
map.removeLayer(Frog7Layer);
map.removeLayer(Frog8Layer);
}

我认为有更好的方法吗?我尝试将它们分成一组,但是问题是,我已经将它们分别添加到地图中,因此可以通过页面上的按钮触发它们,而且我不知道如何将它们分组而不将它们添加到地图中。组。

我尝试了以下操作:

function resetMap() {

    var allLayers = L.layerGroup([Frog1Layer, Frog2Layer, Frog3Layer, 
    Frog4Layer, Frog5Layer, Frog6Layer, Frog7Layer, Frog8Layer])

    map.removeLayer(allLayers);
}

,它不起作用。 Web控制台显示“未定义”,但我不知道这意味着什么吗? t是什么,为什么L.layerGroup不起作用?我该怎么做呢?抱歉,我是Java的新手。

1 个答案:

答案 0 :(得分:0)

假设数组中有要删除的图层,则可以使用forEach遍历图层并从map中删除每个图层:

var layerArray = [Frog1Layer, Frog2Layer, Frog3Layer, Frog4Layer, Frog5Layer, Frog6Layer, Frog7Layer, Frog8Layer];
layerArray.forEach(function(layer) { map.removeLayer(layer); })

除非将特定的LayerGroup添加到地图上,否则删除LayerGroup无效。如果您打算以其他方式一起使用这些层,则可能值得将它们构造为LayerGroup。如果要执行此操作,请将其添加到LayerGroup,然后使用map.addLayer添加组对象,而不是对每个图层执行map.addLayer