2011-01-24 2 views
0

Мой код, как показано ниже:Geocoder не работает по getfromlocationName

Geocoder geocoder = new Geocoder(this,Locale.UK); 
     List<Address> addresses = null; 
     Toast.makeText(displaybyName.this, "country: before " , Toast.LENGTH_SHORT).show(); 
    try { 
    Toast.makeText(displaybyName.this, "country: before " , Toast.LENGTH_SHORT).show(); 

    addresses = geocoder.getFromLocationName( 
     "Camden", 1); 

    if (addresses.size() > 0) { 

      geopoint = new GeoPoint(
         (int) (addresses.get(0).getLatitude() * 1E6), 
         (int) (addresses.get(0).getLongitude() * 1E6)); 

      //Animating on display 

      mapcontroller.animateTo(geopoint); 
      mapcontroller.setZoom(5); 
      mapview.invalidate(); 
      } 


    } catch (IOException io) { 
    // TODO Auto-generated catch block 
    Toast.makeText(displaybyName.this, "Connection Error", Toast.LENGTH_SHORT).show(); 
    } 

    if (addresses.size() > 0) { 

      geopoint = new GeoPoint(
         (int) (addresses.get(0).getLatitude() * 1E6), 
         (int) (addresses.get(0).getLongitude() * 1E6)); 

      //Animating on display 

      mapcontroller.animateTo(geopoint); 
      mapcontroller.setZoom(5); 
      mapview.invalidate(); 
     } 

Однако приложение сбой каждый раз. Геокодер не возвращает ни один лат/длинный.

Есть ли какие-либо проблемы с кодами ... plz plz advise.

+0

«crashing» - нам нужна дополнительная информация о сбое (описание, трассировка стека, ...) –

+0

Вам действительно нужно найти ошибку в окне LogCat (с точки зрения DDMS, если вы не видите ее иначе) –

+0

Также , вы, кажется, повторяете свою логику IF, один раз внутри try-catch и один раз после этого. –

ответ

1

Дважды проверьте, что

addresses = geocoder.getFromLocationName("Camden", 1); 

возвращает то, что не null - в противном случае: следующая строка вызовет NullPointerException


Дополнительная литература

+0

Спасибо, я попробовал несколько разных адресов, но все же мое приложение рушится. Я проверил разрешения на файлы манифеста, и кажется, что это ОК. У меня есть некоторые адреса из города Лондона, и мне нужно, чтобы его координаты отображались на карте. Есть ли другой способ, которым я могу это сделать, потому что функция геокодера не работает. – Kam

+0

При попытке получить координаты из адреса программа сбой на эмуляторе. Я не вижу ошибки. Для класса Geocoder требуется бэкэнд-сервис, который не входит в основную инфраструктуру Android. Соу, теперь я запутался. Что мне нужно вызывать, импортировать, добавлять, использовать в коде .... чтобы сделать эту работу? Я использую Google Api2.2, уровень Api 8. Если кто-то нашел решение для этого или указатель на документацию, то, что я не обнаружил, сообщите нам. Спасибо за ваше время. – Kam

0

Существует проблема с версией для Android, поскольку геокодер не оснащен базовой инфраструктурой Android, но это будет отлично работать в старых и новых версиях, например, на 1.6, 2.0 и уровне API 15, попробуйте сначала, но это определенно будет работать, но все же настаивая на том, чтобы просто попробовать свой собственный класс геокодера с помощью JSON.