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

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

解决方法

像jduhls的答案,但使用Leaflet.draw CSS类:
  1. L.Control.RemoveAll = L.Control.extend(
  2. {
  3. options:
  4. {
  5. position: 'topleft',},onAdd: function (map) {
  6. var controlDiv = L.DomUtil.create('div','leaflet-draw-toolbar leaflet-bar');
  7. L.DomEvent
  8. .addListener(controlDiv,'click',L.DomEvent.stopPropagation)
  9. .addListener(controlDiv,L.DomEvent.preventDefault)
  10. .addListener(controlDiv,function () {
  11. drawnItems.clearLayers();
  12. });
  13.  
  14. var controlUI = L.DomUtil.create('a','leaflet-draw-edit-remove',controlDiv);
  15. controlUI.title = 'Remove All Polygons';
  16. controlUI.href = '#';
  17. return controlDiv;
  18. }
  19. });
  20. var removeAllControl = new L.Control.RemoveAll();
  21. map.addControl(removeAllControl);

猜你在找的JavaScript相关文章