【问题标题】:Common distance between two routes in google maps谷歌地图中两条路线之间的共同距离
【发布时间】:2015-06-23 13:09:45
【问题描述】:

我有一个关于 Google 地图 API 的问题。

假设我们有两个旅行者 traveller1 和 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 地图 API 找到这样的距离?我尝试查看各种 Google API,例如 Directions API、DistanceMatrix API、Roads API 等。但找不到任何东西。

我有什么办法可以做到这一点?

提前致谢。

【问题讨论】:

  • 没有 API 可以为您做到这一点。如果您有来自公共方向服务的两条路线,您应该能够找到共同点。

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


【解决方案1】:

您可以先使用 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 并将它们解析为这些连接来格式化为您需要的格式。

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

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 1970-01-01
      • 2012-04-29
      • 2014-07-12
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多