谷歌地图中两条路线之间的公共距离

时间:2015-06-23 13:09:45

标签: google-maps google-maps-api-3 maps

我对Google maps API有疑问。

假设我们有两位旅行者1和traveller2。 traveller1想从A到B,而traveller2从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等。但找不到任何内容。

我能以任何方式实现这一目标吗?

提前致谢。

2 个答案:

答案 0 :(得分:4)

您可以先使用Google Maps Directions API来完成从A到B以及从C到D的步骤。这应该是 $j("input[name='[04]datestart]'").change(function()

然后你可以比较两条路径来检查哪些是"公共距离"。

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

答案 1 :(得分:2)

没有这方面的API。但是你可以自己制作一些简单的算法。

可能会创建一个来自节点的连接数组,格式为>>> def sumOfList(element): ... if isinstance(element, list): ... return sum([sumOfList(x) for x in element]) ... elif isinstance(element, int): ... return element ... >>> sumOfList([[[1,2,3,4],[1,2,3,4]],[1,2,3]]) 26 ,等等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]]

正如kaho所说,Google Directions API会返回步骤。可以使用routes [0] .legs [0] .steps [i] .end_location,.start_location将这些格式化为您需要的格式,并将它们解析为这些连接。

我最近有一个similar question,关于相似性等等。