android - tutorial - Marcador de Google Maps v2 zOrdering-Establecer en la parte superior
tutorial google maps android studio (3)
Esto se agregó en Google Play Services 9.2 ( 27 de junio de 2016 )
El nuevo
MarkerOptions.zIndex()
establece el orden de pila de un marcador en relación con otros marcadores en el mapa. Lea más sobre los índices z del marcador y el efecto del índice z en los eventos de clic. ( Número 4688 )
Sé que hay algunos hilos en torno a este tema, pero aún no he encontrado una solución lo suficientemente buena.
NECESITO colocar un marcador encima de todos los demás marcadores. ¿Cómo hago esto?
He intentado agregar este marcador antes y después de todos los demás marcadores, sin embargo, el ordenamiento parece ser desde la parte inferior (frontal) a la superior (posterior) en la vista del mapa. Esto no es aceptable ya que quiero centrarme en un marcador que está delante de todos los marcadores.
Sé que los polígonos pueden ordenarse, ¡pero yo preferiría un gráfico con un estilo agradable!
De hecho, no puedes pedir un polígono sobre un marcador.
"El orden en que se dibuja este polígono con respecto a otras superposiciones, incluidas Polylines, GroundOverlays y TileOverlays, pero no Markers. Una superposición con un índice z más grande se dibuja sobre las superposiciones con índices z más pequeños. el 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 en realidad se muestra una ventana de información. Si no lo haces, el marcador no llegará al frente. Aquí hay un truco para que llegue al frente de todos modos:
Cree un InfoWindowAdapter personalizado que muestre una ventana de información de 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 configura su mapa, configure el adaptador y InfoWindowAdapter personalizado y OnMarkerClickListener (usando showInfoWindow y devolviendo verdadero como AIden Fry recomienda):
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 forma de lidiar con la indexación z sin usar ventanas de información.
Si bien no es la solución perfecta! He descubierto cómo mostrar un marcador seleccionado (marcado) sobre todos los otros marcadores al consumir el evento onMarkerClick. Devolver TRUE consumirá este evento, por lo que tenemos que hacer showInfoWindow y hacer zoom para centrar
@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;
}