我想阻止用户在地图上创建多个形状.例如,如果用户创建多边形,则应禁用工具栏上的所有形状图标.当用户删除先前创建的形状时,应启用工具栏上的图标.
我怎样才能做到这一点?我尝试删除draw:created事件上的工具栏并在draw:deleted事件上添加一个新工具栏,但它会导致错误(参见附件截图).
最佳答案
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 举报,一经查实,本站将立刻删除。