我使用传单绘制在地图上绘制多边形。 目前,我只能删除点击的多边形。
这是我现在拥有的一个示例: http://leaflet.github.io/Leaflet.draw/docs/examples-0.7.x/full.html
假设您绘制了3个多边形。如果要删除前两个,则必须单击垃圾桶图标,单击前两个,然后单击保存。我要实现的是不必单击第二个。我实际上有第二个ID,但我无法将其添加到保留点击的图层的removingLayers
数组中。
我有atm:
function deleteSubPolygons(e) {
var layersToRemove = [];
if (e.layer && e.layer._originalPoints != null && e.layer._latlngs != null && e.layer.id != null && Number.isInteger(e.layer.id)) {
var polygonChildren = getPoligonChildren(e.layer.id);
for (var l in map._layers) {
if (polygonChildren.indexOf(map._layers[l].id) > -1) {
polygonsToDelete.push(map._layers[l].id);
layersToRemove.push(map._layers[l]);
}
}
for (var i = 0; i < layersToRemove.length; i++) {
map.removeLayer(layersToRemove[i]);
}
}
}
我设法从视图中手动删除它们,但是revert选项不再起作用。我敢肯定,我应该将要删除的图层推送到leaflet-draw.js列表中在做:
this._deletableLayers.removeLayer(e),
this._deletedLayers.addLayer(e)
我的问题是:如何从外部访问_deletedLayers
?
答案 0 :(得分:1)
当我处于删除模式时,通过在要删除的多边形上触发click事件来解决此问题:
for (var l in map._layers) {
if (polygonChildren.indexOf(map._layers[l].id) > -1) {
map._layers[l].fireEvent('click');
}
}