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