Error "IBitmapDescriptorFactory no se inicializa"

Estoy intentando obtener un marcador con un icono personalizado en Google Maps Android API v2. Acabo de cambiar uno de los ejemplos proporcionados por Google. He añadido .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)) a RawMapViewDemoActivity en el método setUpMap().

 private void setUpMapIfNeeded() { if (mMap == null) { mMap = ((MapView) findViewById(R.id.map)).getMap(); if (mMap != null) { setUpMap(); } } } private void setUpMap() { mMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title("Marker") .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow))); } 

Pero siempre estoy recibiendo un "IBitmapDescriptorFactory no se inicializa".

 12-18 15:40:54.356: E/AndroidRuntime(12591): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mapdemo/com.example.mapdemo.RawMapViewDemoActivity}: java.lang.NullPointerException: IBitmapDescriptorFactory is not initialized 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread.access$600(ActivityThread.java:130) 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.os.Handler.dispatchMessage(Handler.java:99) 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.os.Looper.loop(Looper.java:137) 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread.main(ActivityThread.java:4745) 12-18 15:40:54.356: E/AndroidRuntime(12591): at java.lang.reflect.Method.invokeNative(Native Method) 12-18 15:40:54.356: E/AndroidRuntime(12591): at java.lang.reflect.Method.invoke(Method.java:511) 12-18 15:40:54.356: E/AndroidRuntime(12591): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 12-18 15:40:54.356: E/AndroidRuntime(12591): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 12-18 15:40:54.356: E/AndroidRuntime(12591): at dalvik.system.NativeStart.main(Native Method) 12-18 15:40:54.356: E/AndroidRuntime(12591): Caused by: java.lang.NullPointerException: IBitmapDescriptorFactory is not initialized 12-18 15:40:54.356: E/AndroidRuntime(12591): at com.google.android.gms.internal.at.a(Unknown Source) 12-18 15:40:54.356: E/AndroidRuntime(12591): at com.google.android.gms.maps.model.BitmapDescriptorFactory.d(Unknown Source) 12-18 15:40:54.356: E/AndroidRuntime(12591): at com.google.android.gms.maps.model.BitmapDescriptorFactory.fromResource(Unknown Source) 12-18 15:40:54.356: E/AndroidRuntime(12591): at com.example.mapdemo.RawMapViewDemoActivity.setUpMap(RawMapViewDemoActivity.java:67) 12-18 15:40:54.356: E/AndroidRuntime(12591): at com.example.mapdemo.RawMapViewDemoActivity.setUpMapIfNeeded(RawMapViewDemoActivity.java:58) 12-18 15:40:54.356: E/AndroidRuntime(12591): at com.example.mapdemo.RawMapViewDemoActivity.onCreate(RawMapViewDemoActivity.java:43) 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.Activity.performCreate(Activity.java:5008) 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 12-18 15:40:54.356: E/AndroidRuntime(12591): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 12-18 15:40:54.356: E/AndroidRuntime(12591): ... 11 more 

En BitmapDescriptorFactory dice:

Antes de utilizar cualquier método de esta clase, debe realizar una de las siguientes acciones para asegurarse de que se inicialice esta clase:

  • Espere a que GoogleMap esté disponible desde un MapFragment o MapView que haya agregado a su aplicación. Puede verificar que GoogleMap está disponible llamando al método getMap () y comprobando que el objeto devuelto no es nulo.

  • Llame a MapsInitializer.initialize (Context). Mientras no se lance una com.google.android.gms.common.GooglePlayServicesNotAvailableException GooglePlayServicesNotAvailableException, esta clase se inicializará correctamente.

Hice el primero, pero todavía consigo este error. ¿Alguna sugerencia?

Llame a MapsInitializer.initialize(getApplicationContext()) en el onCreate()

Llamada siguiente en onCreate()

 try { MapsInitializer.initialize(getApplicationContext()); } catch (GooglePlayServicesNotAvailableException e) { // TODO Auto-generated catch block e.printStackTrace(); } 

Mueva su código a ser llamado 'onMapReady ()', una devolución de llamada proporcionada por la API de GoogleMaps.

¡Funcionará!

  GoogleApiAvailability googleApiAvailability=GoogleApiAvailability.getInstance(); int status=googleApiAvailability.isGooglePlayServicesAvailable(getActivity()); if (status != ConnectionResult.SUCCESS) { int requestCode = 10; Dialog dialog = googleApiAvailability.getErrorDialog(getActivity(),status,requestCode); dialog.show(); }else {} 
  • ¿Cómo puedo pasar datos personalizados a Google Maps v2 InfoWindowAdapter?
  • ¿Cómo mostrar 2 vistas, con un gradiente de desvanecimiento efecto en Android?
  • Puedo cambiar mi ubicación en los mapas de Android
  • Google Maps elimina el menú contextual de la ruta del marcador
  • Captura de pantalla de GoogleMap Android API V2
  • Android SupportMapFragment no puede ver el mapa dentro de un fragmento
  • Android: ubicación de Google Maps con bajo consumo de batería
  • Referencia de mapa de bits desconocida publicada
  • Convierta la aplicación de Android que utiliza mapas API V1 a Maps Android API V2
  • Obtenga GoogleMap del fragmento de ViewPager
  • Creación de OnDragListener para Google Map v2 Fragment
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.