【发布时间】:2016-07-11 20:49:34
【问题描述】:
我在将删除函数绑定到从 kml 文件加载的每一层(多边形)时遇到问题(甚至只是从数据库中存储的坐标)。它仅适用于第一次点击 - 我点击的第一层。之后它不适用于其他图层,似乎在第一次单击后被禁用。
当我把 bindPopup 函数放在那里时,它适用于每一层,并且弹出窗口会显示出来,或者 console.log(this) 会显示每个点击层的对象详细信息。所以我不明白为什么 removeLayer 也不适用于每一层。
我想我在这里缺少一些关于 javascript 的知识,你能告诉我吗?
(KMLfile 是 Google 制作的一个文件扩展名,用于从 google earth 应用程序中提取区域/位置/等)
加载KML文件的代码:
var filePath = 'path to my kml file';
var customLayer= 'colors, line weight, etc.';
var runLayer = omnivore.kml(filePath, null, customLayer).on('ready', function() {
map.fitBounds(runLayer.getBounds());
runLayer.eachLayer(function(layer) {
//layer.bindPopup(layer.feature.properties.name+" / "+this);
layer.on('click', function() {
map.removeLayer(layer); // There's the issue, itworks only on first click!
});
});
}).addTo(loadedFeatureGroup);//adding polygons to predefined group
【问题讨论】:
标签: javascript leaflet kml mapbox function-binding