我有一个问题,将删除功能绑定到每个图层(多边形)我从kml文件加载(甚至只是从数据库存储的坐标)。它仅适用于第一次单击 - 我点击的第一个图层。之后,它不适用于其他图层,似乎在第一次点击后禁用它。
当我放置bindPopup函数时,它适用于每个图层,弹出窗口显示,或者console.log(this)显示每个单击图层的对象详细信息。所以我不明白为什么removeLayer也不能在每一层之前工作。
我想我在这里用javascript遗漏了一些知识,你能告诉我吗?
(KMLfile是Google为从Google地球应用中提取区域/位置等而制作的文件扩展名)
加载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
答案 0 :(得分:0)
您应该在回调中使用事件对象
layer.on('click', function(e) {
map.removeLayer(e.target);
});
点击此示例中的图层:http://plnkr.co/edit/iY6jqvzsnnX7lMeGuuil?p=preview
答案 1 :(得分:0)
所以问题是L_PREFER_CANVAS设置为true。你可以在这里阅读更多内容: