Можно ли получить согласованные данные address_components из API геокодера?

Я использую это: geocoder.geocode(geoRequest, function(results, status) { ... ... }

Проблема в том, что данные, возвращаемые геокодером, кажутся противоречивыми. Вероятно, стоит упомянуть, что когда я загружаю файл js для API карт перед вызовом геокодера, я указываю язык (а также указываю страну (например, AU для Австралии) в переменной geoRequest в файле geocoder.geocode. вызов).

Чтобы другим было проще увидеть, что я пытаюсь понять, мы можем просто использовать этот URL: http://maps.googleapis.com/maps/api/geocode/json?components=country:AU&language=en&address.=darwin

Интересная часть результата заключается в том, что этот запрос возвращает эти address_components long_name:

Австралия

Северная территория (short_name=NT)

Дарвин

Если я включу в поиск «улица Бриггса», я получу этот URL-адрес: http://maps.googleapis.com/maps/api/geocode/json?components=country:AU&language=en&address=briggs+street,darwin

затем я получаю эти address_components long_name:

Австралия

Северная территория (short_name=NT)

Муниципалитет Дарвина

Дарвин Сити

Бриггс-стрит

Мои вопросы:

Почему «Дарвин» не возвращается во втором примере, где я ищу «бриггс-стрит, дарвин»? В данном случае текст:

Муниципалитет Дарвина

Дарвин Сити

Можно ли сообщить API-интерфейсу геокодера, что я хочу, чтобы возвращались согласованные иерархические результаты, как с указанием, так и без указания, например. дорога?

Причина, по которой я спрашиваю, заключается в том, что я хочу собрать некоторую статистическую информацию на основе указанных пользователем местоположений, либо путем ввода названия города, либо улицы. Я надеюсь, что смогу использовать возвращенные component_addresses для создания базы данных с другой информацией от клиента (пользователя).

Но статистические отчеты не будут очень последовательными, если, например. нужно увидеть некоторые статистические данные для Дарвина (те, которые зарегистрированы пользователями, вводящими только «дарвин»), поскольку данные, введенные пользователем, вводящим «бриггс-стрит, дарвин», не будут получать данные, хранящиеся под местоположением «Дарвин» (как для первый пользователь) - поскольку "Дарвин" отличается от "Дарвин-Сити" и "Мини-города Дарвина".

Аналогичное несоответствие можно наблюдать при поиске "fulton street,brooklyn" и "brooklyn"

Этот поиск для Бруклина: ?components=country:US&address=brooklyn

возвращает:

США

Нью-Йорк (short_name=NY)

Кингс Каунти

Нью-Йорк

Бруклин

Но... этот поиск "fulton+street,brooklyn": ?components=country:US&address=fulton+street,brooklyn

возвращает:

США

Нью-Йорк (short_name=NY)

Кингс Каунти

Бруклин

Фултон-стрит

Почему между «Кингс Каунти» и «Бруклином» нет «Нью-Йорка» в последнем результате выше? Опять... кажется, есть некоторая несогласованность.


person bongobongo    schedule 05.07.2016    source источник


Ответы (2)


Вот еще один пример, теперь для Дании:

Поиск odense: http://maps.googleapis.com/maps/api/geocode/json?components=country:DK&language=en&address=odense

дает мне этот результат:

Дания

Регион Сидданмарк (administrative_area_level_1)

[...]

Если я ищу улицу Риттергаде в Оденсе, например, так: http://maps.googleapis.com/maps/api/geocode/json?components=country:DK&language=en&address=ryttergade,odense

то регион «Регион Сидданмарк» (administrative_area_level_1) отсутствует в наборе результатов. Почему это так?

Есть ли способ сообщить геокодеру, что я хочу, чтобы admin_area_level_1 возвращался в наборах результатов, где, например. название улицы включено?

person bongobongo    schedule 05.07.2016
comment
Пожалуйста, добавьте примеры, отредактировав свой вопрос, а не отвечая на него. - person miguev; 29.08.2016

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

Дарвин

address=Darwin возвращает разговорный город , который отличается от "Город Дарвин", вы получаете address=briggs+street,darwin. Разговорные города отмечены "types": ["colloquial_area", "locality", "political"] вместо "types" : ["locality", "political"].

(Неразговорное) «Город Дарвина» входит в состав «Муниципалитета Дарвина», а разговорный город «Дарвин» - нет. Последний входит только в следующее (более крупное) политическое подразделение, «Северная территория», в которое также входит «Муниципалитет Дарвина». Это объясняет компоненты, которые вы видите.

Бруклин

Бруклин и некоторые другие районы Нью-Йорка немного особенные. Там название города (Нью-Йорк) не имеет значения для почтовых адресов. Вот почему адреса на уровне улиц не должны иметь местонахождение, как и address_components.

Оденсе

То же, что и в Бруклине, за исключением того, что это, похоже, имеет место по всей стране: компонент administrative_area_level_1 не отображается, потому что он не относится к адресам на уровне улиц.

person miguev    schedule 26.08.2016