Map v2 SupportMapFragment dentro de Viewpager

Fondo

He successfuflly agregó el nuevo mapa api v2.0 a un ViewPager y el mapa carga muy bien. Estoy utilizando el FragmentViewPager. Me encuentro con problemas sin embargo al intentar agregar marcadores como no puedo obtener el Fragmento por etiqueta como el ViewPager que estoy utilizando es de la biblioteca de compatibilidad y se define en XML, y esto "oculta" la etiqueta de mí.

La pregunta

¿Cómo puedo cargar el nuevo mapa v2 con los marcadores SupportMapFragment en un ViewPager que utiliza un FragmentPagerAdapter .

Mi intento

Así que en mi nievety pensé que podría crear una solución elegante mediante la extensión de la SupportMapFragment en una nueva clase que hace lo siguiente:

  1. Agregue un nuevo constructor que tome GoogleMapOptions y List<MarkerOptions> . Esto efectivamente llama al constructor existente que sólo toma GoogleMapsOptions y luego almacenar mi lista de marcadores dentro de una propiedad privada de la nueva clase.
  2. Override GetMap() – comprueba si es nulo y si no es añadir los marcadores al mapa que cargamos anteriormente en el mapa y finalmente devolverlo.

Mis pensamientos eran que mi extensión podía ser altamente reutilizable y abstrae cualquier mapa relacionado con un lugar y permite que mis actividades creen el nuevo MapFragment por newInstance(myGoogleMapOptions, myMarkers) .

Ok, así que el problema. Parte 1 parece funcionar bien sin embargo durante la depuración No puedo obtener el método Overridden GetMap () para ser llamado. De hecho, he intentado sobrepasar la mayoría de los métodos habituales que tienen los fragmentos y ninguno de ellos es llamado. ¿Hay algo extraño sucediendo con el SupportMapFragmemt, traté de encontrar la fuente para que no sirva para comprobar por mí mismo.

Actualizar

Me di cuenta por qué no estaba recibiendo mis métodos anulados llamado. Era porque estaba devolviendo el MyMapFragment estándar en lugar de MyMapFragment . Dicho esto, no puedo llamar a super de un método estático y no puedo emitir desde una clase base a una clase derivada sin excepción.

Editar Aquí está la clase

 public class MyMapFragment extends SupportMapFragment { private static List<MarkerOptions> mMarkers; public static SupportMapFragment newInstance(GoogleMapOptions options, List<MarkerOptions> markers) { SupportMapFragment fragment = newInstance(options); mMarkers = markers; return fragment; } //have tried Overriding several methods including getMap()... @Override public void onResume () { GoogleMap mMap = super.getMap(); //add the markers if(mMap != null) { for(MarkerOptions marker : mMarkers) { mMap.addMarker(marker); } } } } 

Sólo probado así y funciona.

 public class MyMapFragment extends SupportMapFragment { private List<MarkerOptions> mMarkers; public static MyMapFragment create(GoogleMapOptions options, ArrayList<MarkerOptions> markers) { MyMapFragment fragment = new MyMapFragment(); Bundle args = new Bundle(); args.putParcelable("MapOptions", options); //obtained by decompiling google-play-services.jar args.putParcelableArrayList("markers", markers); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Hacky and ugly but it works ArrayList<Parcelable> list = getArguments().getParcelableArrayList("markers"); mMarkers = new ArrayList<MarkerOptions>(list.size()); for (Parcelable parcelable : list) { mMarkers.add((MarkerOptions) parcelable); } } @Override public void onResume() { super.onResume(); GoogleMap mMap = super.getMap(); //add the markers if (mMap != null) { for (MarkerOptions marker : mMarkers) { mMap.addMarker(marker); } } } } 
  • NestedScrollView contiene contenido menor que la altura de la pantalla Desplaza en CoordinatorLayout
  • Cómo limitar los cambios de página de ViewPager a uno por gesto
  • ViewPager en blanco en la parte posterior de otro fragmento
  • Insertar separador entre view-pager
  • Insertar y quitar fragmentos en viewpager correctamente
  • "La actividad ha sido destruida" a veces cuando se puebla viewpager con fragmentos
  • Desactivar la animación de desplazamiento de ViewPager
  • Android ViewPager setCurrentItem no funciona después de onResume
  • IllegalStateException: base de datos ya cerrada (con ViewPager)
  • ¿Cómo escribir el método onClick en el viewpager?
  • Los valores de EditText en Android Fragment no se actualizan
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.