Detecta cuándo se cargaron los mapas de Android v2

Estoy escribiendo una aplicación que tomaría 9 instantáneas del mapa alrededor de un área cuando el usuario presiona un botón.

En loop, usando esto para mover y guardar:

map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mStartLat + (mMultiOffsetX + mWidth), mStartLng + (mMultiOffsetY + mHeight)), mZoom)); map.snapshot(this); 

y en onSnapshotReady:

 final String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + String.format("/test_maps/map_%f_%f.png", Double.valueOf(mStartLat + (mMultiOffsetX * mWidth)), Double.valueOf(mStartLng + (mMultiOffsetY * mHeight))); FileOutputStream fos = new FileOutputStream(new File(fileName)); bmp.compress(CompressFormat.PNG, 0, fos); 

Desafortunadamente, el mapa ocasionalmente termina de cargarse cuando se toma la instantánea, por lo que terminas con: Imagen de mapa parcialmente borrosa

Entonces, ¿hay alguna manera de detectar o configurar un oyente cuando la vista del mapa haya terminado de cargarse?

OnMapLoadedCallback no se activa hasta que se cargan las teselas en el mapa. Solo se dispara una vez, así que tendrá que llamarlo nueve veces para tomar nueve instantáneas.

Cuando tenga una referencia al mapa, configure la callback.

 mMap.setOnMapLoadedCallback(this); 

Cuando el evento onMapLoaded se activa, toma la instantánea.

 @Override public void onMapLoaded() { if (mMap != null) { mMap.snapshot(this); } } 

Consulte la documentación para obtener más información: https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

Buena suerte

**** historial de espera para que se implemente esta característica.

Actualizaciones: Estado: Etiquetas fijas: Fixed-Oct2013

Comentario n. ° 3 en el número 5779 por schr … @ google.com: posibilidad de ser notificado cuando el mapa está completamente cargado / renderizado http://code.google.com/p/gmaps-api-issues/issues/detail? id = 5779

Se ha agregado una interfaz de callback cargada en el último lanzamiento de Google Maps Android API v2.

Consulte la documentación para obtener más información: https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

Gracias a todos por protagonizar el número 5779 y 61675 Danny117

**** edit ****

Por favor, protagonice este problema si vienes aquí. http://code.google.com/p/android/issues/detail?id=61675 Tus clics de estrella motivarán a google para avanzar en este tema.

La actualización del mapa 13 causa un problema con los servicios de Google Play, por lo que no puede usar el nuevo OnMapLoadedCallback todavía. Puede comstackr en contra, pero la api del mapa genera un mensaje de error en los servicios logcat de Google Play desactualizados. Requiere 4030500 pero se encuentra 3266130

* editar * Nuevo OnMapLoadedCallback

Actualizaciones: Estado: Etiquetas fijas: Fixed-Oct2013

Comentario n. ° 3 en el número 5779 por schr … @ google.com: posibilidad de ser notificado cuando el mapa está completamente cargado / renderizado http://code.google.com/p/gmaps-api-issues/issues/detail? id = 5779

Se ha agregado una interfaz de callback cargada en el último lanzamiento de Google Maps Android API v2.

Consulte la documentación para obtener más información: https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback

Gracias a todos por protagonizar el número 5779. Danny117

**** Lo siguiente está en desuso *****

Parece que es una espera para la solución de actualización. Hice clic en la estrella porque iba a trabajar en esta función en mi propio mapa de api v2.

editar *** Esta es la nueva callback propuesta para cuando se represente el mapa. Todos los que visiten siguen el enlace y protagonizan este problema. http://code.google.com/p/gmaps-api-issues/issues/detail?id=5779

*** La callback anterior de Snapshop no se cambiará. Todos los que visiten siguen el enlace y protagonizan este problema. http://code.google.com/p/gmaps-api-issues/issues/detail?id=5712

https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback

Como vi, esta pregunta aún no se ha resuelto. No sé por qué, pero para mí, cuando el mapa ha terminado de cargarse, se llama al OnCameraChangeListener. Entonces uso esto para detectar cuando el mapa ha terminado de cargarse.

 googleMap.setOnCameraChangeListener(new OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition arg0) { map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng( mStartLat + (mMultiOffsetX + mWidth), mStartLng + (mMultiOffsetY + mHeight)), mZoom)); map.snapshot(this); } }); 

Intenta usar la clase ViewStub para ayudarte con la carga diferida de tu mapa. Puede detectar cuándo se carga el mapa con este código:

 public void onShowMap(View v) { // where you put the MapView layout in ViewStub view ViewStub.setVisibility(View.VISIBLE); }