【问题标题】:LeafletJs GeoMan Polygon EditLeafletJs GeoMan 多边形编辑
【发布时间】:2020-07-23 01:01:06
【问题描述】:

当我创建一个新多边形时,在“PM:DRAWSTART”上我初始化事件“pm:vertexadded”

它允许我检测是否:

  • 新点位于现有多边形内,因此我将其删除。 *
  • 如果创建的最后一条线与现有多边形 (TurfJS lineIntersect) 相交,我将其删除。
  • 如果最后一行创建了“扭结”(TurfJS 也是),我将其删除。

  • 我使用:"map.pm.Draw["Polygon"]._removeLastVertex();"删除最后一点。

我的问题。

当多边形关闭时(最后一个点点击第一个)“PM:DRAWEND”事件被执行。 所以在这种情况下,我无法检查新多边形是否与现有多边形重叠,就像我对事件“pm:vertexadded”所做的那样。

如果新多边形与现有多边形重叠,是否可以在事件“PM:CREATE”上进入编辑模式 ( polygon.toggleEdit() ) 并返回舞台,因为我没有点击最后一个点来关闭多边形。

非常感谢。

【问题讨论】:

    标签: javascript leaflet leaflet-geoman


    【解决方案1】:

    您可以使用现有的纬度重新初始化绘制多边形:

    map.on('pm:create',function (e) {
      e.layer.removeFrom(map);
      setTimeout(function (){ //Needed because snapping
        map.pm.enableDraw('Polygon');
        var latlngs = e.layer.getLatLngs();
        if(!L.LineUtil.isFlat(latlngs)){
          latlngs = latlngs[0];
        }
        latlngs.forEach(function (latlng) {
          map.pm.Draw.Polygon._createVertex({latlng: latlng})
        })
      },100);
    })
    

    示例:https://jsfiddle.net/falkedesign/omw2pt34/ 画一个多边形

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 2022-10-17
      • 2019-03-16
      • 1970-01-01
      • 2023-03-29
      • 2019-11-11
      • 2017-08-02
      相关资源
      最近更新 更多