place_administrative_area_level_1 возвращает разные значения для одной и той же области - PullRequest
0 голосов
/ 31 января 2019

Я использовал api google map, чтобы получить адрес улицы дома в Мадриде, Испания.Затем я получил следующее для place_administrative_area_level_1.

place_administrative_area_level_1_short: Comunidad de Madrid place_administrative_area_level_1_long: Comunidad de Madrid 1007 * Эти данные были сохранены в 1001 ** 1007.Теперь я хочу найти адреса, которые я сохранил из Мадрида.Таким образом, из переднего конца, я снова ищу в Google Place API, Мадрид, Испания.Затем Google возвращает мне следующее для place_administrative_area_level_1.

place_administrative_area_level_1_short: Сообщество Мадрида place_administrative_area_level_1_long: Сообщество Мадрида

* 1016Теперь я не могу использовать эту строку для поиска в моей базе данных, так как она имеет другое значение.В обоих случаях отправляю language = en.Так почему он возвращает разные значения для этого поля адреса?Разница лишь в том, что для первого я использовал адрес улицы дома в Мадриде.Во втором случае я использовал только Мадрид, Испания.Но в обоих случаях он должен возвращать одинаковое значение для place_administrative_area_level_1.Из-за этого я не могу искать в моей базе данных по одному значению.

1 Ответ

0 голосов
/ 01 февраля 2019

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

https://mapsplatform.googleblog.com/2014/11/localization-of-street-addresses-in.html

Адреса уровня улиц, возвращаемые API геокодирования Карт Google для местного языка при сохранении максимально понятного адреса как для пользователя, который читает только запрашиваемый язык, так и для местных жителей.

Если и местный язык, и язык пользователя используют один и тот же алфавит, теперь API геокодирования вернетлокальные названия улиц и населенных пунктов.

В ваших примерах первый запрос выполняет поиск адреса на уровне улицы, поэтому вы получаете испанское имя для компонента адреса administrator_area_level_1 Comunidad de Madrid, как упоминалось выше.

Второй запрос не является адресом уличного уровня, поэтому вышеупомянутая политика не применяется, и вы получаете имя в соответствии с языковым параметром, который является английским Community of Madrid.

Я полагаю, что вас может сильно заинтересоватьследующий запрос функции:

Добавить place_id в каждом address_components

Как только этот функциональный запрос будет реализован, вы сможете сравнивать идентификаторы мест вместо имен в компонентах адреса.

Надеюсь, это решит ваши сомнения.

...