onclick - 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 文件的链接如下:
解决方案
您可以使用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;
推荐阅读
- sql-server - Terada 中的 BIGINT 到 INT 转换
- javascript - 如果当前显示虚拟键盘,则提交表单按钮需要在移动设备上单击两次
- gradle - 使用 Gradle 配置 Swagger 代码生成器。提供的 Gradle 脚本如何工作?
- java - 有没有办法使用意图将任何类型的文件附加到电子邮件中?
- javascript - 使用 .filter 从数组中删除一个项目并返回新数组
- c# - 如何在 .Net C# Windows 窗体中将文件上传到 Firebase 存储?
- python - 如何增强脚本以从多个 CSV 文件中查找
- c# - 为什么这个属性没有在我的 mvc 项目中被序列化?
- pandas - pd.datetime 没有正确索引
- c++ - 从成员函数返回 boost iterator_range