algorithm - Google Maps : Given a point, 如何找到给定道路距离内的所有点?

标签 algorithm google-maps

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

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

最佳答案

这是一个很难用 Google Maps API 解决的问题。以下是您可能要考虑的一种方法:

  1. 您可以轻松计算出围绕您的 GPS 点 1 公里的边界圆,也可以轻松计算落在该圆周上的任何角度的点。该距离将“作为乌鸦文件”而不是实际道路距离,但您可能需要查看以下 Stack Overflow 帖子以了解具体实现方式:

    How to calculate the latlng of a point a certain distance away from another?

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

删除了无效的 ImageShack 链接 - 如何计算与另一个点相距一定距离的点的经纬度?

  1. 还有一个技巧可以将这些点捕捉到最近的街道。你可以看看Mike Williams' Snap point to street examples为了很好地实现这一点。

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

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


更新:

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

请注意如何更改从顶部开始的度数间隔。如果间隔较宽,您会很快获得结果,但您很容易错过几条路线。

截图:

删除了无效的 ImageShack 链接 - Driving Radius

关于algorithm - Google Maps : Given a point, 如何找到给定道路距离内的所有点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2856992/

相关文章:

algorithm - 针对慢速 CPU 传输到快速 CPU 的纠错码

algorithm - 无约束优化方法及其收敛

java - 如何从数据库访问所有用户?

java - 如何通过给定值在一个区域中获取特殊值?

java - 如何计算二 fork 树查找的空间复杂度

algorithm - 最大限度地减少运输时间

javascript - Google map + OverlappingMarkerSpiderfier 自定义标记不起作用

javascript - Google Maps V3 在确切位置上重叠标记

android - Webview 仅在第一次加载

javascript - 如何清除 map 上当前的标记