Очистить все полилинии от листовки карты


Я изо всех сил пытаюсь очистить все полилинии от моей карты, я очищаю только самые новые.

var polylines;

// add map polylines
function addPolyline(polyArray, colour) {
    polylines = L.polyline(polyArray, {color: colour});
    polylines.addTo(map);
}

// clear polylines   
function clearPolylines() {
    map.removeLayer(polylines);
}

Где addPolylines вызывается несколько раз, а clear Polylines вызывается один раз. Как я могу очистить все полилинии на карте?

2 7

2 ответа:

Вам придется запомнить их все или немного сжульничать и заглянуть в map._layers, чтобы найти их.

Редактировать добавление примера кода с помощью @Ben:

function clearMap() {
    for(i in m._layers) {
        if(m._layers[i]._path != undefined) {
            try {
                m.removeLayer(m._layers[i]);
            }
            catch(e) {
                console.log("problem with " + e + m._layers[i]);
            }
        }
    }
}

Следующие действия удалят как полигоны, так и маркеры, но сохранят плитки изображения в фоновом режиме:

for (i in map._layers) {
    if (map._layers[i].options.format == undefined) {
        try {
            map.removeLayer(map._layers[i]);
        } catch (e) {
            console.log("problem with " + e + map._layers[i]);
        }
    }
}