Ошибка при получении адреса местоположения в Android

#android #gps #location

#Android #gps #Расположение

Вопрос:

на основе этого руководства:http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial /. Теперь я могу получить широту и дальность на основе местоположения. Теперь я пытаюсь получить точный адрес с помощью геокодера: (Main — это код класса, к которому принадлежит приведенный выше)

 GPSTracker GPS = new GPSTracker(Main.this);

double latitude = GPS.getLatitude();
double longitude = GPS.getLongitude();

Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(Main.this, Locale.getDefault());
addresses = geocoder.getFromLocation(latitude, longitude, 1);
String address = addresses.get(0).getAddressLine(0);
  

LogCat сообщает:

 07-06 11:29:41.911: W/System.err(1670): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
  

Интересно, что я делаю не так?

Комментарии:

1. размер addresses равен 0, поэтому вы не можете получить первый индекс

2. означает ли это, что геокодеру не удается заполнить список из местоположения или неправильное объявление списка?

3. Я думаю, что первая идея верна, перед получением адреса проверьте размер списка, если больше 0, то получите ваши данные,

4. Хорошо бы предотвратить ошибку, но я все еще не получаю строку адреса, поскольку размер списка по-прежнему равен 0

5. проверьте getFromLocation функцию с помощью Google API ( developers.google.com/maps/documentation/geocoding/?csw=1 )

Ответ №1:

 GPSTracker GPS = new GPSTracker(Main.this);

double latitude = GPS.getLatitude();
double longitude = GPS.getLongitude();

Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(Main.this, Locale.getDefault());

addresses = geocoder.getFromLocation(latitude, longitude, 1);
if(addresses!=null amp;amp; addresses.size()!=0){

    String address = addresses.get(0).getAddressLine(0);

}
  

//если(addresses!=null amp;amp; addresses.size()!=0) … проверьте эту часть..ваш адрес не может быть нулевым, а размер массива не должен быть равен нулю…

Комментарии:

1. если (addresses!=null amp;amp; addresses.size()!=0) … проверьте эту часть.. ваш адрес не может быть нулевым, а размер массива не должен быть равен нулю…