所以我将kml文件加载到我的Google地图上,它们在地图上显示为凸多边形。
我也有用户位置,基本上我想知道用户是否位于多边形的边缘之一(这是凸多边形(。
而且由于位置服务不是100%准确的,如果位置接近(边缘远远超过15m( - 很好:(
我的解决方案是找到通过2个顶点之间传递的函数y = f(x(,然后检查用户位置是否低于f(x( a和f(x(-a。
我觉得我缺少一些东西,应该有一种更好(更准确(解决我的问题的方法,甚至应该有一个已经解决此问题的Java库。
谢谢:(
您可以使用polyutil.islocationonedge((,这正是您想要的。
您应该实现一个函数,以确定从点到线段的距离。您可以在网络上找到代码,例如:"点和线段之间的最短距离"。然后迭代多边形的每个段。即使多边形是非convex。
,这也起作用。您实际上可以实现凸多边形的更好的时间复杂性,但这可能不值得实施工作。