【问题标题】:Finding Self-Intersections in Leaflet polygons using JSTS Library使用 JSTS 库在 Leaflet 多边形中查找自相交
【发布时间】:2017-12-05 05:26:58
【问题描述】:

我正在使用带有 Leaflet Draw 的 Mapbox,我想避免自相交的多边形。

我已经可以在创建绘图控件时指定不允许交叉点,但它仅在我使用控件创建新多边形时才有效。但是,如果我尝试编辑一个已经存在的多边形,它允许那里有交叉点。

我四处搜索,发现 JSTS Library 正是我想要的,我还发现这个 JSFiddle 用作示例,它基于 Google Maps API 工作。

所以我根据以上两个链接使用 Mapbox 创建了自己的JSFiddle。在这里,如果是多边形编辑,则“findSelfIntersects”函数会启动,如果是新多边形,则不会使用它。这个想法是,如果有交叉点,我会向用户显示警报并取消编辑。但是,当我尝试这样做时,我收到了 uncaught exception: [object Object] 错误。

错误似乎是在findSelfIntersects函数的这一行形成的:

var shell = geometryFactory.createLinearRing(coordinates);

我查看了 Google 地图示例返回的坐标,这看起来与我得到的坐标相似。但我不确定为什么会出现此错误。

【问题讨论】:

    标签: javascript mapbox leaflet.draw self-intersection


    【解决方案1】:

    我刚刚注意到,在 Google 地图示例中,坐标数组中的起点和终点是相同的,而我的不是。我最初错过了它。现在我在'for'循环之后添加了下面的代码,它工作正常。

    coordinates.push(new jsts.geom.Coordinate(
        corners[0].lat, corners[0].lng));
    

    这是一个更新的JSFiddle,以防有人想将 JSTS 库与 Mapbox/Leaflet 一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-18
      • 2017-09-02
      • 2014-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多