我正在使用带有 Leaflet Draw 的 Mapbox,并且我想避免自相交的多边形。
我已经可以指定在创建绘图控件时不允许相交,但它仅在我使用控件创建新多边形时才有效。但是,如果我尝试编辑一个已经存在的多边形,它允许那里有交叉点。
我四处搜索,发现JSTS 库正是我想要的,我还发现这个JSFiddle可以用作示例,它基于 Google Maps API 工作。
所以我根据上面的两个链接用 Mapbox创建了自己的JSFiddle 。在这里,如果是多边形编辑,则“findSelfIntersects”函数会启动,如果是新多边形,则不会使用它。这个想法是,如果有交叉点,我会向用户显示警报并取消编辑。但是,当我尝试执行此操作时,出现uncaught exception: [object Object]
错误。
错误似乎是在 findSelfIntersects 函数的这一行上形成的:
var shell = geometryFactory.createLinearRing(coordinates);
我检查了谷歌地图示例返回的坐标,这似乎与我得到的坐标相似。但我不确定为什么会收到此错误。