【问题标题】:Using the same Plug-in for multiple purposes in leaflet在传单中将同一插件用于多种用途
【发布时间】:2021-08-25 08:24:57
【问题描述】:

我正在尝试将传单绘制工具用于两种不同的事情:

  1. 作为创建新几何图形的“常规”工具
  2. 如果我画一条线,我会使用 turf.js 执行一些计算,在附近给我点数。

我为每个目的设置了两个单独的绘图控件。对于第二个,我除了 draw:polyline 之外的所有东西都被禁用了。问题:我用

保存我的元素
map.on('draw:created', function(){...});

“命令”。但是这样我(或事件处理程序,分别:))无法区分,如果线是用第一个或第二个按钮绘制的。所以基本上我可以将绘图工具用于一件事或另一件事。有没有一种方法可以让我在同一张地图上为不同的应用程序使用同一个工具?

感谢任何提示或解决方法。

【问题讨论】:

    标签: leaflet leaflet.draw turfjs


    【解决方案1】:

    另一种方法是使用 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')
      }
    });
    

    https://jsfiddle.net/falkedesign/r0sm9auo/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 2019-02-07
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多