Google距离矩阵API:如何指定起点-终点对?

Cri*_*ets 5 python google-maps-api-3 google-distancematrix-api o-d-matrix

我正在使用 Google Maps API 的 Python 客户端库(Github 链接)。

我想获得duration_in_traffic以下旅行的数据:

  • Address1Address2

  • Address2Address1

  • Address1Address3

  • Address3Address1

但 Google Distance Matrix API(文档)的语法因其自以为是而存在问题。它假设用户想要所有可能的起始地址和目的地地址配对的数据。

问题是以下代码(源代码)...

origins = [Address1, Address2, Address3]
destinations = [Address1, Address2, Address3]

matrix = client.distance_matrix(origins, destinations,
                                        mode="driving",
                                        language="en",
                                        units="imperial",
                                        departure_time=now,
                                        traffic_model="best_guess")
Run Code Online (Sandbox Code Playgroud)

当我只需要前面提到的四个结果时,会产生九个结果(即出发地-目的地配对的每种可能的组合)。

我意识到我可以解析这些结果以仅提取我需要的四个持续时间,但我不想通过强制脚本下载我不需要的数据来不必要地使脚本的执行时间加倍。

我还意识到,我可以发送 4 个单独的请求来获取我想要的持续时间(即每个请求一个配对),但我试图不超过我的免费非高级 Distance Matrix API 帐户的配额。

那么,是否可以在同一请求中指定起点-目的地配对?

小智 0

如果我正确理解了这个问题,我认为你可以通过使用字典来解决它:

dict_addresses= {Address1:Address2, Address2:Address1, Address1:Address3, Address3:Address1}

db= dict()

for origin in dict_addresses:
    duration_traffic= client.distance_matrix(origin, dict_addresses[origin], mode="driving", language="en", units="imperial", departure_time=now, traffic_model="best_guess")
    db[origin]= duration_traffic
    print (db)
Run Code Online (Sandbox Code Playgroud)

对于最后一部分,您需要从距离矩阵数组中提取“duration_in_traffic”,但您应该只获得您实际想要的 4 个结果。