Problema con el bloqueo con ItemizedOverlay

He estado intentando durante horas para averiguar por qué no puedo usar una superposición de mapa de elementos sin hacer esto antes de añadirlo a los ovelays del mapa:

GeoPoint point; OverlayItem overlayitem = new OverlayItem(point, "",""); MarkerOverlay.addOverlay(overlayitem);

Si intento hacer esto sin el MarkerOverlay.addOverlay(overlayitem); Comando entonces cuando intento agregar un nuevo overLay así:

 public boolean onTap(GeoPoint point, MapView mapView) { if (mOverlays.size() > 0) mOverlays.remove(0); OverlayItem overlayitem = new OverlayItem(point, "", ""); mOverlays.add(overlay); populate(); return true; } 

Dentro de mi clase ItemizedOverlay entonces i Sólo obtener una referencia nula exeption (No tengo ni idea de cuándo o por qué – Dice su código fuente no disponible cuando en depuración)

¿Algunas ideas?

EDIT: Esto es lo que puedo encontrar en el logcat:

 09-20 22:36:22.164: WARN/dalvikvm(311): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 

Y esto es lo que creo que es la infame excepción:

  09-20 22:36:22.293: ERROR/AndroidRuntime(311): java.lang.NullPointerException 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.ItemizedOverlay.getItemsAtLocation(ItemizedOverlay.java:617) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.ItemizedOverlay.getItemAtLocation(ItemizedOverlay.java:586) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.ItemizedOverlay.handleMotionEvent(ItemizedOverlay.java:498) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.ItemizedOverlay.onTouchEvent(ItemizedOverlay.java:572) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.OverlayBundle.onTouchEvent(OverlayBundle.java:63) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.google.android.maps.MapView.onTouchEvent(MapView.java:625) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.view.View.dispatchTouchEvent(View.java:3709) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:852) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:822) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:822) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:822) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.app.Activity.dispatchTouchEvent(Activity.java:2061) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.os.Handler.dispatchMessage(Handler.java:99) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.os.Looper.loop(Looper.java:123) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at android.app.ActivityThread.main(ActivityThread.java:4363) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at java.lang.reflect.Method.invokeNative(Native Method) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at java.lang.reflect.Method.invoke(Method.java:521) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 09-20 22:36:22.293: ERROR/AndroidRuntime(311): at dalvik.system.NativeStart.main(Native Method) 09-20 22:36:22.394: ERROR/dalvikvm(311): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 

Recientemente me encontré con este problema. El problema se describe en este informe de errores .

Para solucionarlo, debe llamar a populate () en su ItemizedOverlay antes de rellenar cualquier dato. Lo agregué al constructor:

 private class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> { private Context context; private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); LocationItemizedOverlay(Drawable defaultMarker, Context context) { super(boundCenterBottom(defaultMarker)); this.context = context; populate(); // Add this } } 

La superposición detallada necesita los parámetros de la segunda 2 porque los usa para eventos de clic. Al hacer clic en una de las superposiciones detalladas, tiene un título y una descripción asociados con él, que son los parámetros 2 º y 3 º en el elemento de superposición

Si usted hace cambios importantes en su ItemizedOverlay que tiene cada vez que hacer

  1. Delete_usrer_Marker_from_Overlays (myitemizedoverlay);
  2. Create_user_Marker (myitemizedoverlay);
  3. MapView.getOverlays (). Add (myitemizedoverlay);

con

 private void delete_usrer_Marker_from_Overlays(MyOverlays myio){ List<Overlay> mapOverlays = mapView.getOverlays(); if (mapOverlays != null) { for (int i = 0;i< mapOverlays.size();i++) { Overlay x = mapOverlays.get(i); if (x.hashCode() == myio.hashCode()) { mapOverlays.remove(x); } } } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.