最近我問了referencing the data of an existing GeoJSON Leaflet object。我的Leaflet地圖由流入我的GeoJSON Leaflet對象的數據組成。用戶輸入可以更改GeoJSON數據的過濾器,因此爲了使過濾器適用於現有數據和新數據,我正在使用名爲myFeatures
的數組跟蹤我的數據。當過濾器更換或myFeatures
改變一個項目,我做到以下幾點:如何修改或刪除GeoJSON Leaflet對象中的一些現有數據?
myGeoJson.clearLayers();
myGeoJson.addData(myFeatures);
這是工作,根據新更新的功能,數據或者在過濾器的變化,使我的地圖更新。
我申請彈出窗口的GeoJSON的對象時,我初始化我GeoJSON的對象:
var myGeoJson = L.geoJson(myFeatures, {
style: function(feature) {
...
},
pointToLayer: function(feature, latlng) {
return L.circleMarker(latlng, geojsonMarkerOptions);
},
filter: function(feature, layer) {
...
},
onEachFeature: function(feature, layer) {
if (feature.properties && feature.properties.popupContent) {
layer.bindPopup(feature.properties.popupContent);
}
}
});
當我點擊某個功能時,會出現彈出。但是,由於clearLayers
和addData
被調用,彈出窗口很快就會解散。 :(
是否有某種方式來阻止彈出在這種情況下解僱
或者 - 更好的問題 - 是有沒有辦法在一個以GeoJSON對象修改現有的數據或刪除某些(不是全部)數據來自GeoJSON對象?
爲了提供一些上下文,我的GeoJSON顯示了每個要素的圓形標記,圓形標記根據要素的屬性進行了着色,該屬性實際上可以隨時間變化,因此標記的樣式需要更新一個標記也會超時一段時間,並且需要從地圖中刪除,但其他標記需要保留在地圖上
您彈出窗口的單獨圖層工作。謝謝。但我很好奇,有什麼「更好的方式做到這一點」? – carmenism