微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 当用户创建形状时禁用Leaflet绘制工具栏,并在删除形状时启用它

我想阻止用户在地图上创建多个形状.例如,如果用户创建多边形,则应禁用工具栏上的所有形状图标.当用户删除先前创建的形状时,应启用工具栏上的图标.

我怎样才能做到这一点?我尝试删除draw:created事件上的工具栏并在draw:deleted事件上添加一个新工具栏,但它会导致错误(参见附件截图).

Error screenshot

最佳答案
Leaflet使我们能够使用remove()和addTo()方法删除添加工具栏.

您需要做的是创建两个工具栏.一个认的L.Control.Draw,另一个没有’draw’组件:

self.drawControlFull = new L.Control.Draw();

self.drawControlEdit = new L.Control.Draw({
  edit: {
    featureGroup: editableLayers,edit: false
  },draw: false
});

map.addControl(drawControlFull);

然后你只是听画:创建和绘制:删除的事件,你根据需要添加/删除它们:

map.on('draw:created',function(e) {
  var type = e.layerType,layer = e.layer;

    self.drawControlFull.remove();
    self.drawControlEdit.addTo(map);

  editableLayers.addLayer(layer);
});

map.on('draw:deleted',function (e) {
    self.drawControlEdit.remove();
    self.drawControlFull.addTo(map);
});

这个解决方案可能并不涵盖所有用例,但它只是一个例子.我还为此创建了一个jsFiddle,这样你就可以看到它是如何工作的.

原文地址:https://www.jb51.cc/js/429077.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐