我正在使用Google Maps SDK,允许用户通过点击在地图上绘制多边形。如果用户按照一条路径绘制多边形并沿着该路径继续而不穿过线路,那么一切都可以完美地工作。但如果出现穿越线路的情况,则会出现此结果:
然而,如果用户犯了错误,跨越或改变了他们“点击”路径的方向,就会发生这种情况:
我需要做以下两件事之一:
A)警告用户他们创建了无效的多边形,并且必须撤消该操作;或者
B)更正多边形形状以形成完整的多边形。
根据我所做的研究,选项A似乎更可行和简单,因为选项B需要重新排列多边形点的路径。
我已经进行了研究,并找到了检测线交叉的算法和公式,但是我还没有找到任何在Swift中识别基于点(在这种情况下是纬度和经度)的多边形自相交的解决方案。我不需要知道点,只需要回答“这个多边形是否自相交?”的TRUE或FALSE。多边形通常会有不到20个面。
也许GoogleMaps SDK中已经内置了解决方案,但我还没有找到它。此外,我了解到已经存在解决这些问题的算法,但我在将它们实现到Swift 2或3中遇到了麻烦。感谢任何帮助!
根据我所做的研究,选项A似乎更可行和简单,因为选项B需要重新排列多边形点的路径。
我已经进行了研究,并找到了检测线交叉的算法和公式,但是我还没有找到任何在Swift中识别基于点(在这种情况下是纬度和经度)的多边形自相交的解决方案。我不需要知道点,只需要回答“这个多边形是否自相交?”的TRUE或FALSE。多边形通常会有不到20个面。
也许GoogleMaps SDK中已经内置了解决方案,但我还没有找到它。此外,我了解到已经存在解决这些问题的算法,但我在将它们实现到Swift 2或3中遇到了麻烦。感谢任何帮助!