Понимание результатов Google Geocoding API - PullRequest
6 голосов
/ 07 июня 2011

Я использую API геокодирования Google для обработки данных адреса в произвольной форме и пытаюсь понять результаты (subpremise, administrative_area_level_2 и т. Д.).На данный момент меня интересуют только адреса в США, и я хотел бы отформатировать результаты в виде адреса улицы, города и кода штата.Код штата кажется простым (administrative_area_level_1), но остальные более расплывчаты.Город locality или sublocality или оба или даже больше?Кажется, что сам адрес улицы может содержать любое количество комбинаций других полей.

В идеале, я бы хотел взять formatted_address, убрать код города, штата, почтовый индекс и код страны.и оставь то, что осталось, как мой "адрес улицы".Существуют ли какие-либо рекомендации или рекомендации для обработки всех этих полей, по крайней мере, для большинства случаев (обычные адреса, адреса с номерами единиц и т. Д.)?

Ответы [ 5 ]

7 голосов
/ 15 июня 2011
  • Уличный адрес: street_number и route
  • Город locality
  • Состояние administrative_area_level_1
  • ZIP - postal_code
  • Страна country

Обратите внимание, что Google игнорирует любой номер единицы (например, «Apt 13A»). Вам придется добавить это обратно в себя.

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

1 голос
/ 14 июня 2011

Я делаю обратное геокодирование на Nearlots.com на страницах поиска. По сути, пользователь оставляет маркер где-то на карте, а я печатаю адрес в окне поиска.

Я просто печатаю 'formatted_address' и сдаюсь, если его там нет. Это даст вам что-то вроде этого: «275-291 Бедфорд Авеню, Бруклин, Нью-Йорк 11211, США». Этого более чем достаточно - вы всегда можете лишить США в конце.

1 голос
/ 11 июня 2011

Документация , по-видимому, достаточно четко охватывает значения различных полей.

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

0 голосов
/ 11 ноября 2016

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

var componentForm = {
    locality: 'long_name',
    administrative_area_level_1: 'short_name',
    country: 'long_name',
    postal_code: 'short_name'
};

function fillInAddress(place) {
    for (var component in componentForm) {
        document.getElementById(component).value = '';
        document.getElementById(component).disabled = false;
    }
    for (var i = 0; i < place.address_components.length; i++) {
        var addressType = place.address_components[i].types[0];
        if (componentForm[addressType]) {
            var val = place.address_components[i][componentForm[addressType]];
            document.getElementById(addressType).value = val;
        }
    }
    var parts = $("#searchField").val().split(",");
    $("#street_number").val(parts[0]);
}

Я извлек информацию из автозаполнения как обычно, но пропустил "street_number" и "route". Затем сделал простое разбиение по значению автозаполнения после выбора и использовал первую часть, возвращая адрес улицы в целом (включая фабрику / квартиру / помещение и название улицы).

Эта работа дала мне результаты, которые хорошо работают для того, что мне нужно. Удачи!

0 голосов
/ 15 июня 2011

Я думаю, вам нужно использовать «маршрут» для адреса улицы.

Я использую ту же услугу, и из моего опыта «маршрут» всегда эквивалентен адресу улицы, даже если местоположение нена самом деле улица!

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

...