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?
- CursorAdapter para la actividad de GoogleMaps
- Establecer imagen de dibujable como marcador en Google Map versión 2
- Cómo centrar el mapa en el marcador haga clic para mostrar todo InfoWindow
- Utilidad de Google Maps: cómo obtener todos los marcadores de ClusterManager <?>?
- Ajuste el centro del marcador en el GeoPoint
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?
- Android - Dragging marcador sin tener que mantener en el mapa api v2
- Mostrar ventana de información en cada marcador a la vez
- Problema al eliminar el elemento de clustermanager
- Cómo agregar un Marcador / Pin en un Android de ImageView?
- Google Maps elimina el menú contextual de la ruta del marcador
- ¿Marcador de mapa de Android?
- Android MapView no puede eliminar marcador
- Sombra de marcador MapView
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; }
- Android app google maps mostrando azulejos grises y no mapa!
- ¿Por qué ContentValues tiene un método put que admite booleanos?