检查点是否位于凸多边形边缘(还是接近)



所以我将kml文件加载到我的Google地图上,它们在地图上显示为凸多边形。
我也有用户位置,基本上我想知道用户是否位于多边形的边缘之一(这是凸多边形(。
而且由于位置服务不是100%准确的,如果位置接近(边缘远远超过15m( - 很好:(

我的解决方案是找到通过2个顶点之间传递的函数y = f(x(,然后检查用户位置是否低于f(x( a和f(x(-a。

我觉得我缺少一些东西,应该有一种更好(更准确(解决我的问题的方法,甚至应该有一个已经解决此问题的Java库。

谢谢:(

您可以使用polyutil.islocationonedge((,这正是您想要的。

您应该实现一个函数,以确定从点到线段的距离。您可以在网络上找到代码,例如:"点和线段之间的最短距离"。然后迭代多边形的每个段。即使多边形是非convex。

,这也起作用。

您实际上可以实现凸多边形的更好的时间复杂性,但这可能不值得实施工作。

最新更新