Как ограничить запрос Google Geocode несколькими странами?

Я пытаюсь отправить пользовательский запрос в Google Maps Geocoding API и ограничить его странами, в которых будет работать мой сервис. Если мне нужны результаты только из Великобритании, то при поиске quay работает следующий запрос:

https://maps.googleapis.com/maps/api/place/autocomplete/json?key=$apiKey&input=quay&language=en-gb&location=0,0&radius=50000&components=country:uk

Если я хочу ограничить результаты только Францией, то работает следующее:

https://maps.googleapis.com/maps/api/place/autocomplete/json?key=$apiKey&input=quay&language=en-gb&location=0,0&radius=50000&components=country:uk

Согласно https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering A filter consists of a list of component:value pairs separated by a pipe (|). Итак, чтобы выполнить поиск как в Великобритании, так и во Франции, я подумал, что будет работать следующее:

https://maps.googleapis.com/maps/api/place/autocomplete/json?key=$apiKey&input=quay&language=en-gb&location=0,0&radius=50000&components=country:uk|fr

Но это не так, вместо этого он возвращает следующее:

{ "predictions": [], "status": "INVALID_REQUEST" }

Я также попытался изменить часть компонентов в конце URL-адреса на components=country:uk|country:fr. Кажется, это работает, но все, что он делает, это ищет последние country:value в URL-адресе.

Насколько я могу судить, мои варианты:

  • Найдите отдельно Великобританию и Францию, а затем объедините результаты. Это потребует в два раза больше звонков и будет увеличиваться с каждой добавленной страной. Мне также нужно будет определить, как взвешивать результаты.
  • Снимите ограничение на компоненты, чтобы я получал все результаты со всего мира, и самостоятельно фильтруйте ответы по Великобритании и Франции. Существует большая вероятность того, что результаты, возвращаемые API геокодирования, не будут отображаться.

Как я могу сделать один звонок, чтобы вернуть результаты только для Великобритании и Франции? Это вообще возможно?


person Arthur    schedule 28.10.2015    source источник
comment
Проверьте этот ответ, он мне помогает stackoverflow.com/a/42901194/3933302   -  person Sourabh Sharma    schedule 16.06.2017
comment
Спасибо @SourabhSharma, Google обновил API, так что теперь вы можете это сделать.   -  person Arthur    schedule 23.06.2017
comment
@Arthur Эта функциональность все еще не работает, особенно при использовании почтового индекса PR в качестве адреса и использовании фильтров для обоих компонентов страны: США и страны: pr. Кроме того, ответы ведут себя по-разному в зависимости от того, какой почтовый индекс США передается. Иногда результаты не возвращаются при использовании двух стран, но возвращаются результаты с использованием одного и того же адреса и одной страны.   -  person Joseph Persie III    schedule 09.02.2021


Ответы (1)


В настоящее время это невозможно за 1 вызов, см. https://code.google.com/p/gmaps-api-issues/issues/detail?id=4233

person StryKaizer    schedule 05.11.2015