2014-10-06 3 views
0

osmdroid를 사용하여 역 지오테이션에 대한 예제를 찾고 있지만 찾을 수 없습니다. 같은 일이 osmdroid 보너스 팩과 함께 발생합니다. 누군가 제발 나를 도와 줄 수 있습니까? 여기 osmdroid 보너스 팩 역 지오 위치

는 로그 캣 정보입니다 :

10-07 12:11:48.340: W/dalvikvm(5543): VFY: rejected Lorg/osmdroid/bonuspack/location/GeocoderNominatim;.getFromLocation (DDI)Ljava/util/List; 
10-07 12:11:48.340: W/dalvikvm(5543): VFY: rejecting opcode 0x0d at 0x007a 
10-07 12:11:48.340: W/dalvikvm(5543): VFY: rejected Lorg/osmdroid/bonuspack/location/GeocoderNominatim;.getFromLocation (DDI)Ljava/util/List; 
10-07 12:11:48.340: W/dalvikvm(5543): Verifier rejected class Lorg/osmdroid/bonuspack/location/GeocoderNominatim; 
10-07 12:11:48.340: D/AndroidRuntime(5543): Shutting down VM 
10-07 12:11:48.340: W/dalvikvm(5543): threadid=1: thread exiting with uncaught exception (group=0x40c2a1f8) 
10-07 12:11:48.340: E/AndroidRuntime(5543): FATAL EXCEPTION: main 
10-07 12:11:48.340: E/AndroidRuntime(5543): java.lang.VerifyError: org/osmdroid/bonuspack/location/GeocoderNominatim 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at com.aiscad.bustiaciutadana.MapActivity.getMyLocationAddress(MapActivity.java:242) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at com.aiscad.bustiaciutadana.MapActivity.dispatchTouchEvent(MapActivity.java:135) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at android.view.View.dispatchPointerEvent(View.java:5890) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3136) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2678) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:1036) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2687) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at android.os.Looper.loop(Looper.java:137) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at android.app.ActivityThread.main(ActivityThread.java:4507) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at java.lang.reflect.Method.invoke(Method.java:511) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745) 
10-07 12:11:48.340: E/AndroidRuntime(5543):  at dalvik.system.NativeStart.main(Native Method) 

그리고 여기에 코드입니다 : 당신은 표준 안드로이드 Geocoder를 사용 하듯이,

String theAddress; 
    try { 
      GeocoderNominatim geocoder = new GeocoderNominatim(getBaseContext()); 
      double dLatitude = latitude; 
      double dLongitude = longitude; 
      List<Address> addresses = geocoder.getFromLocation(dLatitude, dLongitude, 1); 
      StringBuilder sb = new StringBuilder(); 
      if (addresses.size() > 0) { 
        Address address = addresses.get(0); 
        int n = address.getMaxAddressLineIndex(); 
        for (int i=0; i<=n; i++) { 
          if (i!=0) 
            sb.append(", "); 
          sb.append(address.getAddressLine(i)); 
        } 
        theAddress = new String(sb.toString()); 
        direccion = theAddress; 
        Log.d(TAG, "direccion: " + theAddress); 
      } else { 
        theAddress = null; 
        direccion = null; 
      } 
    } catch (Exception e) { 
      theAddress = null; 
      e.printStackTrace(); 
    } 

답변

1

OSMBonusPack를 사용하는 경우, 당신이 사용할 수있는 GeocoderNominatim 역 지오 코딩을위한 .

OSMNavigator MapActivity에서 실제 사용을 확인할 수 있습니다.

+0

구현하려고하는데, 아직 작동하지 않습니다. Geocoderit을 사용하면 (주소가 다른 일부 거리에서는 전달 된 좌표가 올바르지 않음) GeocoderNoinatim에 대해 지오 코더를 변경하려고 할 때 앱이 손상됩니다. – cristina

+0

예를 https://code.google.com/p/osmbonuspack/source/browse/trunk/OSMBonusPackDemo/src/com/osmbonuspackdemo/MapActivity.java?r=48 – cristina

+0

에서 실행하려고 시도하지만 항상 동일한 오류가 발생합니다. line-> GeocoderNominatim 지오 코더 = 새로운 GeocoderNoinatim (this); – cristina

0

좋아요. 마지막으로 GeocoderNominatim 클래스 대신 Geocoder 클래스를 사용하고 있습니다. 이것은 GeocoderNominatim과 동일한 코드이지만 Geocoder로 대체합니다.

+0

나에게 잘못된 주소를 돌려주는 것처럼 보였으므로 문제가 발생했지만, 내가 다른 활동으로 돌아갈 수있는 버튼이있는 주소 ... 그래서 나는 OverlayItems의 목록을 만들었고 마지막에서 두 번째 항목의 주소를 가져 왔습니다. – cristina

+0

당신에게 달려 있습니다. Google 이용 약관에서는 허용되지 않습니다. (https://developers.google.com/maps/terms, 항목 (g) : Google지도없이 콘텐츠 사용 안함) – MKer

+0

Mker를 이해할 수 없습니다 ...지도 및 Geocoder 클래스에 OSMdroid를 사용하고 있습니다. 안드로이드 API. Google에 관련된 것이 없습니다 ... – cristina