javascript – leaflet.draw垃圾按钮删除所有多边形并保存

前端之家收集整理的这篇文章主要介绍了javascript – leaflet.draw垃圾按钮删除所有多边形并保存前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用 javascript,如何更改leaflet.draw“废纸篓”按钮以删除已绘制并自动保存的所有多边形.下面是我实现的代码,但它是一个完整的黑客.它删除了活动多边形,但是当我在控制台中出现错误删除一个对象后,当我点击NotfoundError之类的“Trash”图标时:找不到Node并且TypeError:this._deletedLayers为null
map.on('draw:editstart',function (e) {
            if(e.handler == 'remove' && typeof drawnItem != 'undefined' && drawnItem !== null){
                if(window.console) window.console.log('Drawing deleted...');
                if(typeof drawnItem != 'undefined' && drawnItem !== null){
                    drawnItems.removeLayer(drawnItem);
                }
                $('.leaflet-draw.leaflet-control .leaflet-draw-actions').hide();
                $('.leaflet-popup-pane .leaflet-draw-tooltip').remove();
            }
        });

解决方法

像jduhls的答案,但使用Leaflet.draw CSS类:
L.Control.RemoveAll = L.Control.extend(
{
    options:
    {
        position: 'topleft',},onAdd: function (map) {
        var controlDiv = L.DomUtil.create('div','leaflet-draw-toolbar leaflet-bar');
        L.DomEvent
            .addListener(controlDiv,'click',L.DomEvent.stopPropagation)
            .addListener(controlDiv,L.DomEvent.preventDefault)
        .addListener(controlDiv,function () {
            drawnItems.clearLayers();
        });

        var controlUI = L.DomUtil.create('a','leaflet-draw-edit-remove',controlDiv);
        controlUI.title = 'Remove All Polygons';
        controlUI.href = '#';
        return controlDiv;
    }
});
var removeAllControl = new L.Control.RemoveAll();
map.addControl(removeAllControl);

猜你在找的JavaScript相关文章