清除先前的GeoJSON对象

问题描述 投票:0回答:1

我正在app上工作,在这里我试图清除前一个Leaflet GeoJSON层,以支持当前的层。我已经尝试了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.geoJSON层?请参阅链接的repl.it以获取完整布局。它正在寻找州的缩写(即NY,NC,SC等)

javascript leaflet gis
1个回答
0
投票

我可能已经错过了您要完成的工作,但这会将您的新点数添加到地图上,并清除旧点数。

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作为标志,以避免在第一次执行时运行或引发错误。第一次运行后,它将存储旧点并在以后的每次运行中清除它们。

© www.soinside.com 2019 - 2024. All rights reserved.