首页 > 解决方案 > Leaflet 使用按钮从 GoeJson 中删除功能属性

问题描述

我有简单的代码,但不知道如何使它工作。想法是按下“删除”按钮,将 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 文件的链接如下:

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

标签: onclickleafletgeojsongetelementbyidlayer

解决方案


您可以使用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;

推荐阅读