谷歌地图中两个路线之间的常见距离

4

我对Google地图API有一个问题。

假设我们有两个旅行者traveler1和traveler2。traveler1想从A点到B点,而traveler2想从C点到D点。

Route1: A --> a --> b --> c --> d --> B
Route2: C --> e --> b --> c --> d --> f --> D

有没有办法找出上述路线Route1和Route2之间的公共距离?我指的是子路线的距离。
b--> c --> d

通过Google Maps API可以找到这样的距离吗?我尝试查看了各种Google API,如Directions API、DistanceMatrix API、Roads API等,但都没有找到相关内容。

有什么方法可以实现吗?

提前感谢。


没有一个API可以为您完成这项任务。如果您从同一个方向服务中获取了两个路线,那么您应该能够找到共同点。 - geocodezip
2个回答

4

您可以首先使用Google Maps Directions API获取从A到B和从C到D的步骤。这应该是response.routes[0].legs[0].steps

然后,您可以比较这两条路径,以检查哪些是“公共距离”。

我创建了一个快速演示,展示了这一点:http://jsfiddle.net/sb6sdj3r/1/


2

这个没有API,但是您可以自己编写一些简单的算法。

也许可以创建一个节点连接的数组,格式为Route1 = [[a,b],[b,c],[c,d]],以此类推到Route2。然后您可以遍历两个数组,找到共同点:

var common = [];
for(var i=0; i<Route1.length; i++){
  for(var j=0; j<Route2.length; j++){
    if(Route1[i] == Route2[j]){
      common.push(Route1[i]);
    }
  }
}

这个例子只返回节点之间的边缘。但是如果您想找到更大的路线块(而不是[[b,c],[c,d]]),则可以扩展此功能,找到一种方法来连接它们并使其成为[b,c,d]
正如kaho所说,Google Directions API返回步骤。这些可以通过使用routes [0] .legs [0] .steps [i] .end_location和.start_location进行格式化,并将它们解析为这些连接。
我最近有一个类似的问题,关于相似性等等。你可以看看这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接