Google 使用 Microsoft Bing 地图的距离矩阵
Google Distance Matrix using Microsoft Bing Maps
有没有办法像使用 Google 距离矩阵一样使用 Bing Maps Driving REST 服务?
我希望能够计算距离:
p1 -> p2
p1 -> p3
p1 -> p4
...
p1 -> p15
使用 Google 距离矩阵我可以通过一个请求获得 15 条路线的距离,但是使用 Bing 我找不到一种方法来做到这一点(只有 15 个请求对于每个距离计算)。
Bing 地图不显示距离矩阵 API,但是可以使用 Bing 地图路由服务生成所需的数据。您可以为每个距离发出请求,但这会很慢并且会产生大量事务。 Bing 地图路由服务允许您将最多 25 个 waypoints 传递到单个请求中。因此,您可以使用它来进行批量计算。例如,假设我们有 3 个位置。矩阵将是 3x3 = 9 个单元格,其中 3 个单元格的值为 0(即 A -> A)。这留下了 6 个需要计算的单元格。为了进一步优化,可以假设两个位置之间的距离是相同的,无论行进方向如何(即 A -> B = B -> A)。如果我们做出这个假设,我们只需要计算 3 个单元格的值; A-> B,A-> C,B-> C。为了进一步优化路线计算,我们可以对齐 waypoints ,这样我们就可以最大限度地减少额外计算的数量; A -> B,B -> C,C -> A。通过这样做,我们可以计算出一条从 A -> B -> C -> A 的路线。这将是一条只有 4 waypoints 的路线。然后,路线响应将包含一系列路线路段,每条路段都有定义的距离和时间值,您可以使用它们来生成矩阵。
在您的情况下,您只是计算从一个位置到另外 15 个位置。这是一个 2 x 15 矩阵,与上述方法有点相似。在这种情况下,您可以计算从起点和每个航点来回的多航点路线。假设起点是 S,其他点是 A、B、C,我们可以从 S -> A -> S -> B -> S -> C 计算一条路线。这条路线的响应将有一个数组路线腿。数组中的奇数索引路线段将使您的 distance/times 来自 S -> (A,B,C)。使用此方法,您可以计算从 S 到其他 11 个位置所需的数据。如果您有 15 个位置,则需要进行两次路线请求。请注意,如果您在显示交互式地图时执行此操作,您可以从地图生成会话密钥并在请求中使用它,使路由调用不计费。
我假设您想这样做,以便您可以使用旅行推销员算法计算优化路线。如果是这种情况,您可能会发现此代码示例很有趣:https://code.msdn.microsoft.com/windowsapps/Bing-Maps-trip-optimizer-c4e037f7
有没有办法像使用 Google 距离矩阵一样使用 Bing Maps Driving REST 服务?
我希望能够计算距离:
p1 -> p2
p1 -> p3
p1 -> p4
...
p1 -> p15
使用 Google 距离矩阵我可以通过一个请求获得 15 条路线的距离,但是使用 Bing 我找不到一种方法来做到这一点(只有 15 个请求对于每个距离计算)。
Bing 地图不显示距离矩阵 API,但是可以使用 Bing 地图路由服务生成所需的数据。您可以为每个距离发出请求,但这会很慢并且会产生大量事务。 Bing 地图路由服务允许您将最多 25 个 waypoints 传递到单个请求中。因此,您可以使用它来进行批量计算。例如,假设我们有 3 个位置。矩阵将是 3x3 = 9 个单元格,其中 3 个单元格的值为 0(即 A -> A)。这留下了 6 个需要计算的单元格。为了进一步优化,可以假设两个位置之间的距离是相同的,无论行进方向如何(即 A -> B = B -> A)。如果我们做出这个假设,我们只需要计算 3 个单元格的值; A-> B,A-> C,B-> C。为了进一步优化路线计算,我们可以对齐 waypoints ,这样我们就可以最大限度地减少额外计算的数量; A -> B,B -> C,C -> A。通过这样做,我们可以计算出一条从 A -> B -> C -> A 的路线。这将是一条只有 4 waypoints 的路线。然后,路线响应将包含一系列路线路段,每条路段都有定义的距离和时间值,您可以使用它们来生成矩阵。
在您的情况下,您只是计算从一个位置到另外 15 个位置。这是一个 2 x 15 矩阵,与上述方法有点相似。在这种情况下,您可以计算从起点和每个航点来回的多航点路线。假设起点是 S,其他点是 A、B、C,我们可以从 S -> A -> S -> B -> S -> C 计算一条路线。这条路线的响应将有一个数组路线腿。数组中的奇数索引路线段将使您的 distance/times 来自 S -> (A,B,C)。使用此方法,您可以计算从 S 到其他 11 个位置所需的数据。如果您有 15 个位置,则需要进行两次路线请求。请注意,如果您在显示交互式地图时执行此操作,您可以从地图生成会话密钥并在请求中使用它,使路由调用不计费。
我假设您想这样做,以便您可以使用旅行推销员算法计算优化路线。如果是这种情况,您可能会发现此代码示例很有趣:https://code.msdn.microsoft.com/windowsapps/Bing-Maps-trip-optimizer-c4e037f7