0

Я пытаюсь использовать геокодирование, чтобы получить широты/долготы данного места, передав адрес улицы. Это мой код:Ошибка с методом Geocoder.getFromLocationName

String addr = "Shop No. 2, Payal Cinema, Old Delhi Road, Sec-14, Gurgaon";        
Geocoder geocoder= new Geocoder(this, Locale.getDefault()); 
List<Address> addressList = null; 
try { 

      addressList = geocoder.getFromLocationName(addr, 10); 

    } catch (IOException e) {} 
Address address = addressList.get(0); 
if(address.hasLatitude() && address.hasLongitude()){ 
lat = address.getLatitude(); 
lon = address.getLongitude(); 
}     

Ошибка при вызове gecoder.getFromLocationName (адр, 10) (я проверил это через System.out.println, вещи не получают печататься в LogCat после этой строки)

Вот трассировки стека из LogCat:

W/dalvikvm(630): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
E/AndroidRuntime(630): FATAL EXCEPTION: main 
E/AndroidRuntime(630): java.lang.RuntimeException: Unable to start activity ComponentInfo{apt.kangkan/apt.kangkan.AddrMarkrsonMapActivity}: java.lang.NullPointerException 
E/AndroidRuntime(630):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
E/AndroidRuntime(630):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
E/AndroidRuntime(630):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
E/AndroidRuntime(630):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
E/AndroidRuntime(630):  at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(630):  at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(630):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
E/AndroidRuntime(630):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(630):  at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(630):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(630):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(630):  at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(630): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(630):  at apt.kangkan.AddrMarkrsonMapActivity.onCreate(AddrMarkrsonMapActivity.java:76) 
E/AndroidRuntime(630):  at android.app.Activity.performCreate(Activity.java:4465) 
E/AndroidRuntime(630):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
E/AndroidRuntime(630):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
E/AndroidRuntime(630):  ... 11 more 
I/dalvikvm(630): threadid=3: reacting to signal 3 
I/dalvikvm(630): Wrote stack traces to '/data/anr/traces.txt' 

вы можете видеть, что есть java.lang.NullPointerException. Я не знаю, почему это происходит. Пожалуйста помоги.

ответ

2

Фактически широта и долгота не нашли ваш адрес, пожалуйста, проверьте «Addresslist» является недействительным или нет, если оно не равно нулю, то по-прежнему, как показано ниже ..

if (addressList == null) 
    { 
      Log.d(TAG,"Latitude and longitude not found"); 
    } 
    else { 
    Address location = addressList.get(0); 
    latitude = location.getLatitude(); 
    longitude = location.getLongitude(); 
    } 
+0

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

+0

Geocoder geocoder = new Geocoder (это, Locale.getDefault()); вместо этого утверждения используйте этот геокодер Geocoder = новый геокодер (это); –

+0

хорошо работает для некоторых адресов, не для других. кроме того, он не дает точную широту/долготу мест. можете ли вы предложить какой-либо способ (в коде) повысить точность gps в моем приложении? –