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 下方:
您可以使用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;
我有简单的代码,但不知道如何让它工作。我的想法是按下“删除”按钮,将 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 下方:
您可以使用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;