utilizar tutorial studio sgoliver setup para google ejemplo crear como aplicacion android marker google-maps-android-api-2 z-order

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; }