谷歌地图:有一点,如何找到给定道路距离的所有点?

use*_*067 21 algorithm google-maps

在我的应用程序中,GPS选择车辆的位置.然后,如果它在任何方向上行驶1公里,那么应该将标记放在车辆可能存在的所有点上(注意道路可能在他1KM范围内多次叉车).

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

Dan*_*llo 21

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

  1. 您可以轻松计算GPS点周围1km的边界圆,并且还可以轻松计算落在该圆周上的点,对于任何角度.这个距离将是"作为乌鸦文件"而不是实际的道路距离,但您可能需要查看以下Stack Overflow帖子,以获得具体实现:

    如何计算距离另一个点一定距离的点的latlng?

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

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

  1. 还有一个技巧可以将这些点捕捉到最近的街道.你可以查看Mike Williams的Snap指向街道示例,以便很好地实现这一点.

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

  2. 您还可以考虑从上述解决方案开始(1km的边界圆,计算圆周上的x点,然后将它们捕捉到最近的道路),然后计算每条路径的道路距离(从GPS点到每个捕捉点),以及那么你可以递归地为每条路径重复这个,每次使用一个较小的边界圆,直到你达到接近1公里的道路距离.您可以减少每次递归中的边界圆,与误差范围成比例,以使您的算法更有效.


更新:

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

请注意如何从顶部更改度数的间隔.间隔很宽,你会得到快速的结果,但你很容易错过几条路线.

截图:

删除死亡的ImageShack链接 - 驾驶半径