1

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

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

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

谢谢 :)

4

2 回答 2

2

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

于 2017-05-02T08:22:45.223 回答
0

您应该实现一个函数来确定从点到线段的距离。您可以在整个网络上找到相关代码,例如:“点和线段之间的最短距离”。然后遍历多边形的每一段。即使多边形是非凸的,这也有效。

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

于 2017-05-01T23:20:56.057 回答