我对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等。但找不到任何内容。
我能以任何方式实现这一目标吗?
提前致谢。
答案 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,关于相似性等等。