使用Google Maps API查找某​​个位置的平均速度

时间:2010-11-08 21:55:20

标签: google-maps

我正在尝试获取特定位置的当前交通状况。提到的GTrafficOverlay对象here仅在现有地图上提供叠加效果。

有谁知道如何使用他们的API从Google获取此数据?

2 个答案:

答案 0 :(得分:0)

Google没有为此数据提供公开API。

雅虎有一个饲料(example),有交通条件 - 建筑,事故等。有关如何访问它的文章是here

如果您想要实际的道路速度,您可能需要与商业提供商合作。

答案 1 :(得分:0)

这仅仅是理论上的,但是也许有一种使用distancematrix api提取那些数据的方法。

方法

1)

创建一个具有节点和边的拓扑路网,如下所示:

enter image description here

每个边缘将具有四个属性:[EDGE_NUMBER;EDGE_SPEED;EDGE_TIME,EDGE_LENGTH] 您可以使用openstreetmap数据创建此网络。 在开始时,每个边缘将具有相同的道路速度,例如50km / h。 您只需要使用drivelink并删除其他边缘。还应考虑到有些道路是单向的。

2)

随机选择两个距离不超过5公里或10公里的节点

  • 使用dijsktra最短路径算法来计算这两个节点之间的最短路径(成本= EDGE_TIME)。使用您的拓扑网络来做到这一点。输出将如下所示:

    NODE = [NODE_23,NODE_44] PATH = [EDGE_3,EDGE_130,EDGE_49,EDGE_39]

  • 使用距离矩阵api计算在两个节点之间行驶所需的时间。

预分配大小为N X number_of_edge且填充零值的矩阵A 预分配大小为1 X number_of_edge并填充零值的矩阵B

在矩阵A的第一行中,如果相应的边缘在路径中,则用边缘的长度填充每一列(与每个边缘相对应)。

[col_1,col_2,col_3,...,col_39,...,col_49,...,col_130]
[0,    0,    len_3,...,len_39,...,len_49,...,len_130] %row 1

在矩阵B的第一行中,输入用距离矩阵api计算的时间。

然后选择第一个路径中未使用的两个新闻节点,并重复操作,直到没有节点为止。 (因此您将填充第2行,第3行...)

现在您可以求解线性方程组:Ax = B其中speed = 1/x

将新计算出的速度分配给每个边。

3)

迭代点 2),直到您计算出的速度开始收敛。

评论

我不确定计算出的速度是否会收敛,测试该方法会很有趣。如果有时间,我会尝试这样做。 距离矩阵API没有提供比1分钟更精确的行进时间,这就是为什么一对节点之间的距离至少应为5或10或更大的原因。 同样,此方法不遵守Google的服务条款。