我有一个可以从地图上单独删除所有图层的功能:
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的新手。
答案 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
。