Очистить предыдущий объект Geo JSON - PullRequest
0 голосов
/ 20 февраля 2020

Я работаю над приложением , где пытаюсь очистить предыдущий слой Leaflet Geo JSON в пользу текущего. Я пробовал оба map.removeLayer(geojsonPoint) и map.clearLayer(geojsonPoint), но ни один из них, похоже, не работает в моей функции. Вот как я пытаюсь это решить:

function addPoints(geoJsonMain, responseJson) {
    console.log(geoJsonMain);
    let pointData = L.geoJSON(geoJsonMain);
    for (let j = 0; j < responseJson.data.length; j++) {
        for (let i = 0; i < geoJsonMain.features.length; i++) {
            // console.log(geoJsonMain.features[i].properties.stateCode);
            if (geoJsonMain.features[i].properties.stateCode !== responseJson.data[j].states) {
                map.removeLayer(pointData)
                // console.log(geoJsonMain.features[i].properties.stateCode, ' ', responseJson.data[j].states)
            } else {
                pointData.addTo(map);
                map.fitBounds(pointData.getBounds());
            }
        }
    }

}

, но когда у меня есть removeLayer (pointData), он ничего не очищает. Почему он не очищает текущий слой L.geo JSON? Пожалуйста, обратитесь к связанному repl.it для полного макета. Он ищет сокращения штата (например, NY, N C, S C, et c)

1 Ответ

0 голосов
/ 20 февраля 2020

Возможно, я пропустил то, что вы пытаетесь выполнить sh, но это забирает ваши новые точки, добавляет их на карту и очищает старые точки.

function addPoints(geoJsonMain, responseJson) {
    let pointData = L.geoJSON(geoJsonMain);
    pointData.addTo(map);
    map.fitBounds(pointData.getBounds());

    if(oldPoints){
      oldPoints.removeFrom(map);
    }
    oldPoints = pointData;

}

oldPoints - это глобальное переменная Я установил в качестве флага значение false, чтобы избежать запуска или выдачи ошибки на первом go. После первого запуска он сохранит старые точки и очистит их при каждом последующем запуске.

...