2014-10-06 55 views
0

我想找到一些關於osmdroid反向地理定位的例子,但找不到任何。 osmdroid獎勵套件也會發生同樣的情況。 有人可以幫我嗎?osmdroid獎金包反向地理定位

這裏是logcat的信息:

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) 

這裏是代碼:

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進行反向地理編碼,因爲你可以使用標準的Android Geocoder

您可以在OSMNavigator MapActivity中看到它的實際使用情況。

+0

我想實現它,但不能使它工作。隨着Geocoderit的作品(但地址是不正確的coodinates通過一些街道的差異),但是當我嘗試更改地理編碼爲GeocoderNominatim應用程序粉碎。 – cristina 2014-10-07 08:43:35

+0

我嘗試運行https://code.google.com/p/osmbonuspack/source/browse/trunk/OSMBonusPackDemo/src/com/osmbonuspackdemo/MapActivity.java?r=48 – cristina 2014-10-07 09:57:43

+0

示例,但始終也是如此line - > GeocoderNominatim geocoder = new GeocoderNominatim(this); – cristina 2014-10-07 09:58:39

0

好的我最終使用Geocoder類而不是GeocoderNominatim類。 與GeocoderNominatim相比,它與代碼相同,但用Geocoder代替它。

+0

我有一個問題,因爲它似乎給了我錯誤的地址,但我意識到它給了我地址我有一個按鈕可以返回到另一個活動...所以我創建了一個OverlayItems列表,並且只取了倒數第二個項目的地址。 – cristina 2014-10-07 11:57:21

+0

由您決定。但請注意,Google條款和條件不允許這樣做。 (https://developers.google.com/maps/terms,項目(g):沒有谷歌地圖沒有使用內容) – MKer 2014-10-07 13:09:30

+0

我不明白MKer ...我使用OSMdroid的地圖和Geocoder類從android API。沒有任何與Google相關的... – cristina 2014-10-07 14:39:12