在路线/路径的n km范围内的点数

时间:2011-04-05 15:45:48

标签: google-maps geolocation

我想使用Google maps API在我的客户办公室和他们的客户之间生成路线。

然后我想找到位于例如内的任何客户(来自我的内部数据库)该路线两侧10英里。

基本上我想要复制这个功能: http://gis5.com/pois_along_route/gm_pois_along_route.php

我很感激你在这个

上有任何指示

1 个答案:

答案 0 :(得分:8)

通常,您必须找到给定点(您的客户)和折线(路线)的距离。来自谷歌方向响应的路线被划分为腿,腿由多个步骤组成...在每个步骤中,您有路径[]阵列位置(纬度和经度对)。让我们调用path []数组中的每个位置,即“顶点”。 您必须遍历路径中的所有顶点(从路径中的所有步骤获取所有顶点)并计算从当前“观察”顶点创建的折线与您的POI(兴趣点 - 客户)之间的距离 可以通过呈现两个顶点&来计算最短距离。客户的位置为nVector。在此之后,通过执行矢量的矢量叉积,您可以找到点与折线之间的最短(正交)距离 我最近有类似的问题,我就这样解决了。我从例子Here得到了这个想法(看看DISTANCE POINT到POLYLINE或POLYGON的例子Source code

如果您对所涉及的数学感到困惑,也许this链接可能会帮助您解释 Vector Cross Product 的概念。另请this could also help you了解nVector概念。

因为这种计算距离非常耗时(如果数据库中有许多客户位置),您可能会对从数据库中过滤某些位置而不对它们执行计算感兴趣...在this关于如何根据地图上显示的路线对位置进行过滤的问题的回答。 希望这会有所帮助,并为您提供有关如何开始解决问题的基本想法。我花了很多时间才弄明白。欢呼声。