【问题标题】:Remove multiple layers on leaflet draw在传单绘制上删除多个图层
【发布时间】:2018-11-21 14:41:08
【问题描述】:

我使用小册子绘制在地图上绘制多边形。 目前,我只能删除点击的多边形。

这是我现在拥有的一个例子: http://leaflet.github.io/Leaflet.draw/docs/examples-0.7.x/full.html

假设您绘制了 3 个多边形。如果要删除前 2 个,则必须单击垃圾桶图标,单击前 2 个,然后单击保存。我想要实现的是不必点击第二个。我实际上有第二个的 id,但我无法将它添加到保留单击层的 removingLayers 数组中。

我有什么自动取款机:

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]);
            }       
        }   
    }

我设法手动将它们从视图中删除,但恢复选项不再有效。我很确定我应该将要删除的图层推送到 leaflet-draw.js 列表,因为它们正在做:

this._deletableLayers.removeLayer(e),
this._deletedLayers.addLayer(e)

我的问题是:如何从外部访问_deletedLayers

【问题讨论】:

  • 首先,你有没有试过-map._deletedLayers?其次,这个答案不是完全重复,但可能会有所帮助 - stackoverflow.com/questions/21125543/…
  • 我想我已经尝试过了,但没有成功。我在下面发布了我的解决方案。感谢您的评论。

标签: javascript leaflet leaflet-draw


【解决方案1】:

当我处于删除模式时,我通过在要删除的多边形上触发点击事件解决了这个问题:

for (var l in map._layers) {
    if (polygonChildren.indexOf(map._layers[l].id) > -1) {
        map._layers[l].fireEvent('click');
    }
}   

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多