¿Cuál es la forma recomendada de usar Google Map v2 dentro del fragmento?
Quiero agregar el fragmento del mapa dentro del diseño personalizado.
- Puedo hacerlo usando ChildFragmentManager que agregará SupportMapFragment. Este enfoque estoy usando actualmente. Sin embargo tiene desventaja porque la transacción del fragmento del niño es asíncrona y su duro garantizar que el getMap no volverá null.
- Otra forma es extender SupportMapFragment store mapView de super
onCreateView
mapView = super.onCreateView(inflater, container, savedInstanceState);
- Cómo eliminar un solo marcador con Google Maps V2?
- Para Android Map api v2 Descripción referencias biblioteca no existente google-play-services_lib \ bin \ google-play-services_lib.jar
- Cómo agregar la dependencia del proyecto google-play-services.jar para que mi proyecto se ejecute y presente el mapa
- Android mapview con fragmentos no se puede agregar dos veces?
- Cómo mover iconos en un MapView de Android
E insertarlo en la disposición inflado. El principal problema es que luego fragmento tratar de restaurar desde el estado guardado Google Maps SDK se aplasta internamente.
¿Hay alguna otra manera de resolver este problema. Sería genial que alguien del equipo de Google Map recomiende el enfoque correcto porque no ha incluido nada como esto en las muestras.
- Problema al inflacionar MapView
- Comportamiento extraño de superposición al ampliar el MapView
- Cómo capturar el final de una animación Zoom In / Out de un MapController?
- Google Maps Android API v2: ¿Mi marcador de ubicación siempre sobre otros marcadores?
- Android MapView con el menú deslizante oscurece el menú
- ¿Cómo añadir un lugar erróneo en mapview?
- Google Maps Android MapView v2: deshabilita el zoom
- Android: ¿Es posible dibujar una vista en la parte superior del mapa como una superposición
Todos los FragmentTransaction
s son asíncronos. Si desea que su transacción ocurra inmediatamente, tendrá que forzarlos a través de la siguiente manera:
getChildFragmentManager().beginTransaction.add(R.id.container, new MyMapFragment(), "MyMapFragment").commit(); getChildFragmentManager().executePendingTransactions(); /* getMap() should not return null here */
Desde el sitio para desarrolladores de Android :
Después de que se compromete un
FragmentTransaction
conFragmentTransaction.commit()
, está programado para ejecutarse asincrónicamente en el subproceso principal del proceso. Si desea ejecutar inmediatamente cualquier operación pendiente, puede llamar a esta función (sólo desde el hilo principal) para hacerlo. Tenga en cuenta que todas las devoluciones de llamada y otros comportamientos relacionados se realizarán desde esta llamada, así que tenga cuidado acerca de dónde se llama.Devoluciones
Devuelve true si hay alguna transacción pendiente que se va a ejecutar.
Puede utilizar MapView dentro de su Fragmento (o Actividad), esto le permitirá usar cualquier diseño que desee.
Es decir, su diseño puede verse así:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.google.android.gms.maps.MapView android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout>
También necesitará reenviar los métodos de ciclo de vida de Fragment como onCreate, onResume y así sucesivamente al MapView.
La única diferencia (parece ser un error en Google Maps?) Es que también es necesario inicializar manualmente Google Maps:
private void setUpMapIfNeeded() { if (mMap == null) { mMap = mMapView.getMap(); if (mMap != null) { // Thought official docs says that it is not necessary to call // initialize() method if we got not-null GoogleMap instance from // getMap() method it seems to be wrong in case of MapView class. try { MapsInitializer.initialize(getActivity()); setUpMap(mMap); } catch (GooglePlayServicesNotAvailableException impossible) { mMap = null; } } } }
- Implementación del efecto KenBurns en Android con el ajuste dinámico de mapas de bits
- Cómo configurar la etiqueta de entero a un widget en el archivo de diseño xml?