Как удалить все слои с карты? - PullRequest
1 голос
/ 05 ноября 2019

У меня есть функция, которая удаляет все мои слои с карты по отдельности:

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);
}

Я предполагаю, что есть лучший способ? Я пытался объединить их в группу, но проблема в том, что я уже добавил их на карту отдельно, чтобы их можно было вызывать с помощью кнопок на моей странице, и я не знаю, как сгруппировать их, не добавляя их на карту какgroup.

Я попробовал следующее:

function resetMap() {

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

    map.removeLayer(allLayers);
}

, и это не работает. Веб-консоль говорит «t не определена», но я не знаю, что это значит? Что такое т и почему L.layerGroup не работает? Как мне это сделать? Извините, я новичок в Javascript.

1 Ответ

0 голосов
/ 05 ноября 2019

Предполагая, что у вас есть слои, которые вы хотите удалить в массиве, вы можете использовать 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 для каждого слоя.

...