Google Maps v2 Marker zOrdering – Establecer en la parte superior

Sé que hay unos cuantos hilos en torno a este tema, pero todavía no he encontrado una solución lo suficientemente buena.

NECESITO colocar un marcador sobre la parte superior de todos los demás marcadores. ¿Cómo hago esto?

He intentado agregar este marcador antes y después de todos los otros marcadores, sin embargo el ordenar parece ser de la parte inferior (delantera) a la tapa (posterior) en la visión del mapa. Esto no es aceptable ya que quiero centrarse en un marcador que está delante de todos los marcadores.

Sé que los polígonos pueden ser zOrdered pero yo preferiría un gráfico bien diseñado!

De hecho, no se puede pedir un polígono sobre un marcador!

"El orden en el que se dibuja este polígono con respecto a otras superposiciones, incluyendo Polilíneas, GroundOverlays y TileOverlays, pero no marcadores.Una superposición con un índice z más grande se dibuja sobre superposiciones con índices z más pequeños. Mismo valor de índice z es arbitrario El valor predeterminado es 0. " – https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/Polygon

¿Alguien tiene alguna idea sobre esto?

La respuesta de Aiden Fry funciona si realmente visualizas una InfoWindow. Si no lo hace, el marcador no llegará al frente. Aquí hay un hack para hacer que llegue al frente de todos modos:

Cree un InfoWindowAdapter personalizado que muestre una ventana de información 0dp:

public class MapWindowAdapter implements GoogleMap.InfoWindowAdapter { private Context context = null; public MapWindowAdapter(Context context) { this.context = context; } // Hack to prevent info window from displaying: use a 0dp/0dp frame @Override public View getInfoWindow(Marker marker) { View v = ((Activity) context).getLayoutInflater().inflate(R.layout.no_info_window, null); return v; } @Override public View getInfoContents(Marker marker) { return null; } } 

Aquí está el código para el diseño:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="0dp" android:layout_height="0dp"> </LinearLayout> 

Cuando configure su mapa, configure el adaptador y InfoWindowAdapter personalizado y OnMarkerClickListener (utilizando showInfoWindow y devolver true como AIden Fry recomendado):

 mMap.setInfoWindowAdapter(new MapWindowAdapter(this)); //Call showInfoWindow to put marker on top of others. myMarker.showInfoWindow(); 

Esto no es hermoso, pero no encontré ninguna otra manera de lidiar con la indexación de z sin usar ventanas de información.

Esto se agregó en Google Play Services 9.2 ( 27 de junio de 2016 )

El nuevo MarkerOptions.zIndex() establece el orden de la pila de un marcador en relación con otros marcadores en el mapa. Obtenga más información sobre los índices z de marcadores y el efecto del índice z en los eventos de clics. ( Número 4688 )

Aunque no es la solución perfecta! He descubierto cómo mostrar un marcador seleccionado (tapped) sobre todos los demás marcadores al consumir el evento onMarkerClick. Devolver TRUE consumirá este evento, así que tenemos que hacer el showInfoWindow y acercar al centro

  @Override public boolean onMarkerClick(Marker marker) { //Manually open the window marker.showInfoWindow(); //Animate to center sMapFrag_v2.getMap().animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition()); //Consume the method return true; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.