Google Distance Matrix API: как указать пары отправителя и получателя? - PullRequest
0 голосов
/ 02 июня 2018

Я использую клиентскую библиотеку Python для API Карт Google ( ссылка Github ).

Я хотел бы получить цифры duration_in_traffic для следующих поездок:

  • Address1 до Address2

  • Address2 до Address1

  • Address1 доAddress3

  • Address3 до Address1

Но синтаксис Google Distance Matrix API ( документация ) проблематичен в своей самонадеянности.Предполагается, что пользователь хочет получить данные для всех возможных пар адресов отправителя и получателя.

Проблема заключается в следующем коде ( source ) ...

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")

выдает девять результатов (то есть каждую возможную комбинацию пар «источник-пункт назначения»), когда мне нужны только ранее заявленные четыре .

Я понимаю, что яЯ могу проанализировать эти результаты, чтобы извлечь только четыре нужные мне длительности, но я не хочу излишне удваивать время выполнения моего скрипта, заставляя его загружать ненужные мне данные.

Я также понимаю,что я могу отправить 4 отдельных запроса, чтобы получить только желаемую продолжительность (т. е. одно сопряжение на запрос), но я стараюсь не превышать квоту для моей бесплатной, не премиальной учетной записи API «Матрица расстояний».

Итак, возможно ли указать пары отправитель-получатель в одном запросе?

1 Ответ

0 голосов
/ 15 августа 2018

Если я правильно понял вопрос, я думаю, что вы можете решить его, используя словарь:

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)

Для последней части вам нужно извлечь duration_in_traffic из массива Distance Matrix, но вы должны получить только4 результата, которые вы действительно хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...