我正在使用
Google Maps Drawing Manager来允许用户绘制多边形.
用户可以绘制多边形,但它必须是“简单”多边形,而不是“复杂”,即它不能自相交.
谷歌地图库似乎没有任何内置支持来检测/防止自相交,所以我打算听取用户创建每个点,之后我运行检测算法来检查当前的折线/线串是自相交的.
不幸的是,唯一的events in the documentation是overlaycomplete事件.
我可以等到用户完成绘制多边形之后再进行验证并告诉他们不允许这样做,但如果我能阻止他们将点放在第一位,这将是一个更好的体验,可能会节省他们很多浪费时间和精力.
我可以使用我需要的功能构建我自己的绘图工具,但是当Google提供的产品非常接近我需要时,我宁愿避免创建和维护这样的东西.
我已经准备好了验证码,我正在使用similar questions here on SO提供的JSTS代码,这是我正在询问的图纸管理器功能.
最佳答案 我发现当用户将每个点放在多边形中时,没有记录的事件,只有在完成创建多边形时才有事件.
所以我必须使用它,直到我有时间从头开始制作自己的绘图管理器.
事实证明,JSTS非常大(文件大小缩小),所以我放弃了.
由于我的多边形的点数总是很低,所以我采用了一种更简单的方法,我测试了多边形中的每一条线,看它们是否与多边形中的任何其他线相交.它相当“蛮力”,但它仍然足够快,最终用户不会注意到它.