фильтрация компонентов геокода с местностью поля не работает должным образом

Я использую API геокода Google Map, чтобы получить значения широты и долготы для этого адреса в Манхэттене: 123 Dr Martin Luther King Jr Blvd, New York, NY 10035, USA

Мой первоначальный запрос выглядит так: https://maps.google.com/maps/api/geocode/json?address=123%20mlk%20blvd.

Этот запрос не возвращает желаемый адрес, поэтому, чтобы отфильтровать результаты только на Манхэттене, я изменил запрос, включив параметр фильтрации компонентов locality:Manhattan.

Как определено в документации здесь: https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering

Итак, мой вопрос - почему этот URL: https://maps.google.com/maps/api/geocode/json?address=123%20mlk%20blvd&components=locality:Manhattan не возвращает мой желаемый адрес?

И все же - использование фильтра компонентов postal_code:10035 действительно возвращает мой желаемый адрес: https://maps.google.com/maps/api/geocode/json?address=123%20mlk%20blvd&components=postal_code:10035

Спасибо


person joe    schedule 19.01.2018    source источник


Ответы (1)


Я думаю, что главная деталь, о которой вам следует знать, это то, что Google недавно изменил поведение фильтров компонентов. Это изменение было внесено 15 января 2018 г. Теперь в документации содержится следующий текст:

Фильтры по маршруту, местоположению и административной_ области влияют на результаты, но не гарантируют сдерживание Точно так же, как адресный запрос.

источник: https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering

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

Если вам нужен населенный пункт, вы должны включить его в параметр address вашего запроса, чтобы сделать его менее неоднозначным.

E.g.

https://maps.googleapis.com/maps/api/geocode/json?address=123%20mlk%20blvd%20Manhattan&key=YOUR_API_KEY

Вам следует придерживаться лучших практик API геокодирования, которые доступны по адресу:

https://developers.google.com/maps/faq#geocoder_queryformat https://developers.google.com/maps/documentation/geocoding/best-practices

Надеюсь, мой ответ объяснит ваши сомнения!

person xomena    schedule 22.01.2018