usar una the that studio para necesitas mapview google generar example ensure enabled ejemplo create clon clave android google-maps-android-api-2

android - una - Error "IBitmapDescriptorFactory no se ha inicializado"



google maps api key android (5)

Estoy tratando de obtener un marcador con un ícono personalizado en Google Maps Android API v2. Acabo de cambiar uno de los ejemplos que proporciona Google. .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 obtengo 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 usar cualquier método de esta clase, debe hacer una de las siguientes acciones para asegurarse de que esta clase esté inicializada:

  • 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 verificando que el objeto devuelto no sea nulo.

  • Llamar a MapsInitializer.initialize (Contexto). Siempre que no se genere una com.google.android.gms.common.GooglePlayServicesNotAvailableException GooglePlayServicesNotAvailableException, esta clase se inicializará correctamente.

Hice el primero, pero aún recibo este error. ¿Alguna sugerencia?


Esto me pasó a mí y, finalmente, en mi caso, lo que pude encontrar fue que los servicios de google play no estaban instalados. Así que los instalé y la aplicación no se bloqueó. Entonces puede ser que uno pueda poner try y un diálogo que lo diga en el bloque catch.


Llamada siguiente en onCreate()

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


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


Mueva su código para que se llame ''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 {}