使用Microsoft Bing Maps的Google Distance Matrix

时间:2015-04-20 22:10:36

标签: bing-maps

有没有办法使用Bing Maps Driving REST Service,就像我们使用Google Distance Matrix一样?

我希望能够计算距离:

p1 -> p2 
p1 -> p3
p1 -> p4
   ... 
p1 -> p15

借助Google Distance Matrix,我可以通过一个请求获取15条路线的距离,但是使用Bing我找不到办法(只有15条请求进行每次距离计算)。

1 个答案:

答案 0 :(得分:2)

Bing Maps不会公开距离Matrix API,但可以使用Bing Maps Routing Service生成所需的数据。您可以为每个距离发出请求,但这会很慢并产生大量交易。 Bing Maps Routing Service允许您将最多25个航点传递到单个请求中。因此,您可以使用它来进行批量计算。例如,假设我们有3个位置。矩阵将是3×3 = 9个单元,其中3个将具有值0(即A - > A)。这留下了需要计算的6个细胞。为了进一步优化,可以假设两个位置之间的距离无论行进方向如何都是相同的(即A - > B = B→A)。如果我们做出这个假设,我们只需要计算3个单元格的值; A-> B,A-> C,B-> C.为了进一步优化路线计算,我们可以调整航路点,以便最大限度地减少额外计算的次数; A - > B,B - > C,C - >答:通过这样做,我们可以计算出A - >的路线。 B - > C - >答:这将是一条只有4个航点的航线。然后,路径响应将包含一系列路径支路,每个支路支路都有一个定义的距离和时间值,您可以使用它来生成矩阵。

在您的情况下,您只计算从一个位置到另外15个位置。这是一个2 x 15矩阵,有点类似于上述方法来完成。在这种情况下,您可以从起点和每个航点计算一个来回的多点航线。假设开始是S而其他点是A,B,C,我们可以从S - >计算路线。 A - > S - > B - > S - > C.这条路线的响应将有一系列路线支路。阵列中的奇数索引路线支路将具有距离S - >的距离/时间。 (A,B,C)。使用此方法,您可以计算从S到其他11个位置所需的数据。如果您有15个位置,则需要发出两个路径请求。请注意,如果您在显示交互式地图时执行此操作,则可以从地图生成会话密钥并在请求中使用该会话密钥o使路由调用不可计费。

我假设您要这样做,以便您可以使用旅行推销员算法计算优化路线。如果是这种情况,您可能会发现此代码示例很有趣:https://code.msdn.microsoft.com/windowsapps/Bing-Maps-trip-optimizer-c4e037f7