Android: Адрес (из GeoCode) имеет фиксированный формат? - PullRequest
1 голос
/ 22 июня 2011

Мне нужно определить адрес для географического местоположения, поэтому я использовал GeoCoder и Address, я попытался напечатать объект Address и получил следующее:

(по соображениям конфиденциальности я использовал некоторые поддельные данные, но данные, полученные на моем устройстве, являются реальными)

Address [addressLines = [0: "123 ABC St", 1: "Melbourne VIC 1234", 2: "Australia"], функция = 123, admin = Виктория, sub-admin = null, местность = Мельбурн, магистраль = ABC St, postalCode = 1234, countryCode = AU, countryName = Австралия, hasLatitude = true, широта = -123.321, hasLongitude = true, долгота = 123.321, телефон = ноль, url = ноль, дополнительные функции = ноль]

Теперь мне интересно, могу ли я предположить, что:

  1. адрес строки индекса 0 всегда является адресом улицы?
  2. и индекс 1 и to - это пригород, штат, пара почтовых индексов и индекс 2 - страна?
  3. "особенность" - это фактически номер улицы (т.е. 123)?
  4. "admin" - это состояние?

Если формат НЕ фиксированный, как я могу получить адресную информацию? Спасибо!

Ответы [ 2 ]

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

Вот фрагмент кода, который может помочь.

-> с использованием GeoCoder

    String currentAddress = "";

    try {
        Geocoder geoCoder = new Geocoder(context);
        List<Address> adds = geoCoder.getFromLocation(
                        latitude
                        , longitude
                        , 1);

        if (adds!=null && adds.size()>0) {
             Address add = adds.get(0);
             int max = add.getMaxAddressLineIndex();
             if (max!=-1) {
                   for (int i=0; i<max;i++)
                   currentAddress += add.getAddressLine(i) + " ";
             }
        }
}
catch (Exception ex) {
     Log.w(TAG, "geocoding_fromAndroid->"+ex.toString());
     currentAddress = "";
}

Помните, что GeoCoder НЕ реализован на всех устройствах Android: |в этом случае вы можете напрямую использовать Google API

-> http://code.google.com/apis/maps/documentation/geocoding/

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

Я не думаю, что формат является фиксированным, и вы не должны полагаться на индексы массива.Из документов:

Количество деталей в обратном геокодированном описании местоположения может отличаться, например, один может содержать полный адрес улицы ближайшего здания, тогда как другой может содержать только название города и почтовый индекс.код.Класс Geocoder требует бэкэнд-сервис, который не включен в базовую платформу Android.

Сервис геокодирования реализован сервисом Google Maps, который работает в backgroind, как мне кажется.Вы должны использовать Address class для извлечения элементов нужного вам адреса.

...