如何解决在传单中将同一插件用于多种用途
我正在尝试将传单绘制工具用于两种不同的事情:
- 作为创建新几何图形的“常规”工具
- 如果我画一条线,我会用 turf.js 执行一些计算,给我附近的点。
我为每个目的设置了两个单独的绘图控件。对于第二个,除了 draw:polyline 之外我都禁用了。问题:我用
保存我的元素map.on('draw:created',function(){...});
“命令”。但是这样我(或事件处理程序,分别为:))无法区分,如果线条是用第一个或第二个按钮绘制的。所以基本上我可以将绘图工具用于一件事或另一件事。有没有办法让我在同一张地图上为不同的应用程序使用相同的工具?
解决方法
另一种方法是使用 Leaflet-Geoman 而不是 Leaflet-Draw。
您可以在那里创建 Draw 实例的副本并为它们添加一个新的形状名称:
// copy a rectangle and customize its name,block,title and actions
map.pm.Toolbar.copyDrawControl('Polygon',{
name: 'PolygonCopy',block: 'custom',title: 'Display text on hover button',actions: ['cancel','removeLastVertex','finish'],});
然后您可以在创建事件中检查形状名称:
// listen to when a new layer is created
map.on('pm:create',function(e) {
console.log(e)
if(e.shape === 'Polygon'){
alert('Original Polygon')
}else if(e.shape === 'PolygonCopy'){
alert('Copy Polygon')
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。