2014-04-09 3 views
0

OSMdroid에 ItemizedIconOverlay를 오버레이하려면이 링크를 사용하고 있습니다. 불행히도 SingleTap을 트리거 할 때마다 앱이 다운됩니다.ItemizedIconOverlay OSMdroid 용 단일 탭에서 충돌 발생

다행히도 나는이에 따라 오버라이드 (override)하는 경우 : https://stackoverflow.com/a/20441999/3176433 응용 프로그램은 충돌하지 않습니다. 그러나 나는 이것을 원하지 않는다.

ItemizedIconOverlay 클래스에서 전달한 제스처 수신기에 액세스 할 수 없기 때문에. 무시할 수 없습니다.

  new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() { 

      @Override 
      public boolean onItemSingleTapUp(int index, OverlayItem item) { 
      Log.d("APP","HERE"); 
          //Control Doesn't Come here 
      return true; 
      } 

      @Override 
      public boolean onItemLongPress(int index, OverlayItem item) { 

       return true; 
      } 

어디에서 onItemSingleTapUp을 재정의 할 수 있습니까? 나는 관련 링크를 따라 갔다. OSMDroid crashes when zooming out, Adding ItemizedOverlay to my mapview, Android ItemizedOverlay<OverlayItem> issue

그러나 완전히 이해하지는 못했다. 자신의 itemizedOverlay를 만들 : 나는 문제에이 솔루션을 발견 인터넷을 통해 검색

04-10 09:41:24.280: I/Adreno-EGL(9402): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13 
04-10 09:41:24.300: D/OpenGLRenderer(9402): Enabling debug mode 0 
04-10 09:41:27.493: D/dalvikvm(9402): GC_FOR_ALLOC freed 99K, 2% free 9394K/9524K, paused 18ms, total 20ms 
04-10 09:41:27.603: I/org.osmdroid.views.MapView(9402): Using tile source: [email protected] 
04-10 09:41:27.613: I/org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase(9402): sdcard state: mounted 
04-10 09:41:27.613: I/org.osmdroid.tileprovider.modules.MapTileFileStorageProviderBase(9402): sdcard state: mounted 
04-10 09:41:27.653: D/dalvikvm(9402): GC_FOR_ALLOC freed 226K, 3% free 9682K/9940K, paused 15ms, total 15ms 
04-10 09:41:27.733: D/dalvikvm(9402): GC_FOR_ALLOC freed 163K, 2% free 10025K/10228K, paused 18ms, total 18ms 
04-10 09:41:27.783: D/dalvikvm(9402): GC_FOR_ALLOC freed 37K, 2% free 10394K/10560K, paused 19ms, total 19ms 
04-10 09:41:27.803: I/org.osmdroid.tileprovider.MapTileProviderBase(9402): rescale tile cache from 0 to 5 
04-10 09:41:27.813: I/org.osmdroid.tileprovider.MapTileProviderBase(9402): Finished rescale in 4ms 
04-10 09:41:27.853: D/dalvikvm(9402): GC_FOR_ALLOC freed 84K, 2% free 10819K/10940K, paused 20ms, total 20ms 
04-10 09:41:27.903: D/dalvikvm(9402): GC_FOR_ALLOC freed 367K, 4% free 11043K/11460K, paused 20ms, total 20ms 
04-10 09:41:28.043: D/dalvikvm(9402): GC_FOR_ALLOC freed 346K, 4% free 11386K/11764K, paused 23ms, total 23ms 
04-10 09:41:28.113: I/SensorManager(9402): This application is using deprecated SensorManager API which will be removed someday. Please consider switching to the new API. 
04-10 09:41:28.244: I/org.osmdroid.tileprovider.LRUMapTileCache(9402): Tile cache increased from 9 to 63 
04-10 09:41:28.264: D/dalvikvm(9402): GC_FOR_ALLOC freed 407K, 4% free 11776K/12216K, paused 26ms, total 27ms 
04-10 09:41:28.344: D/dalvikvm(9402): GC_FOR_ALLOC freed 128K, 4% free 12336K/12736K, paused 22ms, total 22ms 
04-10 09:41:28.374: D/dalvikvm(9402): GC_FOR_ALLOC freed 1K, 3% free 12882K/13256K, paused 23ms, total 26ms 
04-10 09:41:28.444: D/dalvikvm(9402): GC_FOR_ALLOC freed 73K, 3% free 13676K/14036K, paused 43ms, total 43ms 
04-10 09:41:28.484: D/dalvikvm(9402): GC_FOR_ALLOC freed 86K, 3% free 14688K/15076K, paused 30ms, total 30ms 
04-10 09:41:28.574: D/dalvikvm(9402): GC_FOR_ALLOC freed 600K, 5% free 15621K/16368K, paused 27ms, total 27ms 
04-10 09:41:28.804: D/dalvikvm(9402): GC_FOR_ALLOC freed 1469K, 9% free 16333K/17836K, paused 26ms, total 26ms 
04-10 09:41:29.054: D/dalvikvm(9402): GC_FOR_ALLOC freed 2455K, 14% free 16334K/18820K, paused 31ms, total 31ms 
04-10 09:41:29.335: D/dalvikvm(9402): GC_FOR_ALLOC freed 2484K, 14% free 16303K/18820K, paused 30ms, total 30ms 
04-10 09:41:29.605: D/dalvikvm(9402): GC_FOR_ALLOC freed 2446K, 14% free 16300K/18820K, paused 29ms, total 29ms 
04-10 09:41:29.875: D/dalvikvm(9402): GC_FOR_ALLOC freed 2319K, 13% free 16382K/18820K, paused 28ms, total 28ms 
04-10 09:41:30.145: D/dalvikvm(9402): GC_FOR_ALLOC freed 2077K, 13% free 16382K/18820K, paused 25ms, total 25ms 
04-10 09:41:30.486: D/dalvikvm(9402): GC_FOR_ALLOC freed 2298K, 13% free 16383K/18820K, paused 25ms, total 25ms 
04-10 09:41:30.806: D/dalvikvm(9402): GC_FOR_ALLOC freed 2443K, 14% free 16295K/18820K, paused 31ms, total 31ms 
04-10 09:41:31.146: D/dalvikvm(9402): GC_FOR_ALLOC freed 2340K, 14% free 16319K/18820K, paused 28ms, total 28ms 
04-10 09:41:31.317: D/AndroidRuntime(9402): Shutting down VM 
04-10 09:41:31.317: W/dalvikvm(9402): threadid=1: thread exiting with uncaught exception (group=0x41548ba8) 
04-10 09:41:31.317: E/AndroidRuntime(9402): FATAL EXCEPTION: main 
04-10 09:41:31.317: E/AndroidRuntime(9402): Process: com.cassidian.tasp, PID: 9402 
04-10 09:41:31.317: E/AndroidRuntime(9402): java.lang.NullPointerException 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at org.osmdroid.views.overlay.ItemizedIconOverlay.activateSelectedItems(ItemizedIconOverlay.java:170) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at org.osmdroid.views.overlay.ItemizedIconOverlay.onSingleTapConfirmed(ItemizedIconOverlay.java:118) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at org.osmdroid.views.overlay.OverlayManager.onSingleTapConfirmed(OverlayManager.java:233) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at org.osmdroid.views.MapView$MapViewDoubleClickListener.onSingleTapConfirmed(MapView.java:1566) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at android.view.GestureDetector$GestureHandler.handleMessage(GestureDetector.java:273) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at android.os.Handler.dispatchMessage(Handler.java:102) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at android.os.Looper.loop(Looper.java:136) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at java.lang.reflect.Method.invoke(Method.java:515) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
04-10 09:41:31.317: E/AndroidRuntime(9402):  at dalvik.system.NativeStart.main(Native Method) 
04-10 09:41:32.778: I/Process(9402): Sending signal. PID: 9402 SIG: 9 
+0

당신이 예외를 받고있는 경우 :

ArrayList<OverlayItem> list = new ArrayList<OverlayItem>(); MyOwnItemizedOverlay<OverlayItem> overlay = new MyOwnItemizedOverlay(this, list); mapView.getOverlays.add(overlay); 

는이 문제의 감동적인에이 예제를 찾을 수 있습니다 항상 질문에 게시하십시오. – kurtzmarc

+0

질문이 업데이트되었습니다. – zIronManBox

답변

0

: 편집 여기 내 스택 추적입니다.

class MyOwnItemizedOverlay extends ItemizedIconOverlay<OverlayItem> { 

protected Context mContext; 

public MyItemizedOverlay(final Context context, final List<OverlayItem> aList) { 
    super(context, aList, new OnItemGestureListener<OverlayItem>() { 
     @Override public boolean onItemSingleTapUp(final int index, final OverlayItem item) { 
       return false; 
     } 
     @Override public boolean onItemLongPress(final int index, final OverlayItem item) { 
       return false; 
     } 
     }); 
    mContext = context; 
} 

@Override protected boolean onSingleTapUpHelper(final int index, final OverlayItem item, final MapView mapView) { 
    //Toast.makeText(mContext, "Item " + index + " has been tapped!", Toast.LENGTH_SHORT).show(); 
    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); 
    dialog.setTitle(item.getTitle()); 
    dialog.setMessage(item.getSnippet()); 
    dialog.show(); 
    return true; 
} 

}

그리고 활동에서 사용하는 : http://code.google.com/p/osmdroid/issues/detail?id=245

+0

이것은 항목에 대해 단일 탭입니다. 그러나 실제 시나리오는 맵의로드 중입니다. 맵의 모든 부분을 탭하면 단일 탭 기능이 중단됩니다. BTW 내가 당신의 접근 방식을 사용하면 MapView에서 터치 기능을 사용할 수 없게됩니다. – zIronManBox