Leaflet 使用按钮从 GoeJson 中删除特征属性

Leaflet Delete feature properties from GoeJson with button

我有简单的代码,但不知道如何让它工作。我的想法是按下“删除”按钮,将 GeoJson 中制作的每个功能中的“区域”值更改为“0”。下面的代码有效,(但自动,没有按钮),对我来说很清楚:

function onEachFeature(feature, layer) {

feature.properties.area = 'x'; 

};

但是当我想使用按钮开始更改值时(我将函数放在 OnEachFeature 中)该操作仅适用于 geoJson 文件中的最后一个特征..

function onEachFeature(feature, layer) {


function foo(){

feature.properties.area = 'x'; 

}

document.getElementById('delete').onclick = foo;


};

我的问题是如何让它适用于每个功能(按下按钮 -> 更改区域值)? 我将非常感谢您的回答!

GeoJson 文件在 link 下方:

https://api.npoint.io/2ba17bdbb50601803cd0

您可以使用getLayers获取所有特征然后改变它们的面积属性:

var geojson = L.geoJSON(data, {
    onEachFeature: onEachFeature
}).addTo(map);

function deleteArea() {
    var layers = geojson.getLayers();
    for (var i = 0; i < layers.length; i++) {
        layers[i].feature.properties.area = 0;
    }
}

document.getElementById('delete').onclick = deleteArea;