小编典典

Google地图:给定一个点,如何查找给定道路距离上的所有点?

algorithm

在我的应用中,GPS会选择车辆的位置。然后,如果车辆在任何方向行驶1公里,都应该在所有可能的点上放置标记(请注意,道路可能在其1公里范围内分叉多次)。

有人可以建议我该怎么做吗?提前致谢。


阅读 324

收藏
2020-07-28

共1个答案

小编典典

使用Google Maps API解决这是一个非常棘手的问题。以下是您可能要考虑的一种方法:

  1. 您可以轻松地计算出GPS点周围1公里的边界圆,并且还可以轻松计算出在任何角度下都落在该圆周上的点。该距离将作为“乌鸦文件”,而不是实际的道路距离,但是您可能需要查看以下帖子,以实现此目标的具体实现:

在半径为1 km的边界圆上以20度间隔标记的屏幕截图:

删除了死的ImageShack链接-如何计算一个点与另一个点有一定距离的纬度?

  1. 还有一个技巧可以将这些点捕捉到最近的街道。您可以查看Mike Williams的Snap指向街道示例,以实现此目的。

可以使用Google MapsAPI的路线服务来计算从GPS点到每个捕捉的道路点的道路距离。请注意,这仅适用于在Google地图中支持方向的国家/地区,但更重要的是,道路距离几乎总是大于1公里,因为“当乌鸦飞翔时”,我们的边界半径为1公里。但是,如果您可以使用近似信息,则可能已经是一种解决方案。

  1. 您也可以考虑从上述解决方案开始(1公里的边界圆,计算圆周上的x个点,然后将其捕捉到最近的道路),然后计算每条路径的道路距离(从GPS点到各个捕捉点),然后那么您可以针对每个路径递归地重复此操作,每次使用较小的边界圈,直到达到接近1公里的道路距离为止。您可以根据误差幅度按比例减小每次递归的边界圆,以使算法更有效。

更新:

我发现一个非常整洁的实现,似乎正在使用与上述方法类似的方法:

请注意如何从顶部更改度数间隔。在较大的间隔内,您将获得快速的结果,但是您很容易错过一些路线。

屏幕截图:

删除了死的ImageShack链接-Driving Radius

2020-07-28