检查Point是否位于(或接近)凸多边形边

时间:2017-05-01 20:24:02

标签: android polygon android-maps-v2 android-maps-utils convex-polygon

所以我将KML文件加载到我的谷歌地图上,它们在地图上显示为凸多边形。
我也有用户位置,基本上我想知道用户是否位于多边形的一个边缘(这是一个凸多边形)。
并且因为位置服务不是100%准确,如果位置接近(边缘距离15米) - 那很好:)

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

我觉得我错过了一些东西,应该有一个更好(更准确)的方法来解决我的问题,甚至可能是一个已经解决这个问题的android的java库。

谢谢:)

2 个答案:

答案 0 :(得分:2)

您可以使用PolyUtil.isLocationOnEdge(),这正是您想要的。

答案 1 :(得分:0)

您应该实现一个确定从点到线段的距离的函数。您可以在此处找到整个网络上的代码,例如:“Shortest distance between a point and a line segment”。 然后迭代多边形的每个段。即使多边形是非凸的,这也适用。

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