所以我将KML文件加载到我的谷歌地图上,它们在地图上显示为凸多边形。
我也有用户位置,基本上我想知道用户是否位于多边形的一个边缘(这是一个凸多边形)。
并且因为位置服务不是100%准确,如果位置接近(边缘距离15米) - 那很好:)
我的解决方案是找到在2个顶点之间传递的函数y = f(x),然后检查用户位置是否低于f(x)+ a和高于f(x)-a。
我觉得我错过了一些东西,应该有一个更好(更准确)的方法来解决我的问题,甚至可能是一个已经解决这个问题的android的java库。
谢谢:)
答案 0 :(得分:2)
您可以使用PolyUtil.isLocationOnEdge(),这正是您想要的。
答案 1 :(得分:0)
您应该实现一个确定从点到线段的距离的函数。您可以在此处找到整个网络上的代码,例如:“Shortest distance between a point and a line segment”。 然后迭代多边形的每个段。即使多边形是非凸的,这也适用。
实际上,您可以为凸多边形实现更好的时间复杂度,但这可能不值得实施。