Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing z-index (z-order) of map marker for Maps V2 in Android

I have several markers shown on my map that are either close to each other or even over top of one another. I need to have one specific marker always on top. It doesn't matter if I add the marker to the map first or last, it often ends up being placed behind some markers. For some mysterious reason, Google Maps determines this. It needs to work with Google Maps for Android V2.

like image 915
Johann Avatar asked Jul 16 '13 08:07

Johann


People also ask

How to move marker in Google maps Android?

Use a long press to activate the ability to move the marker. By default, when a user taps a marker, the map toolbar appears at the bottom right of the map, giving the user quick access to the Google Maps mobile app.


1 Answers

The June 27th, 2016 release, v9.2.0, of Android Maps API v2 now supports a z-index - see announcement at https://developers.google.com/maps/documentation/android-api/releases#june_27_2016.

So make sure your maps/play services version is set to v9.2.0 or higher in build.gradle:

compile 'com.google.android.gms:play-services-maps:9.2.0'

The z-index documentation is below (from https://developers.google.com/maps/documentation/android-api/marker#marker_z-index):

The z-index specifies the stack order of this marker, relative to other markers on the map. A marker with a high z-index is drawn on top of markers with lower z-indexes. The default z-index value is 0.

Markers are always drawn above tile layers and other non-marker overlays (ground overlays, polylines, polygons, and other shapes) regardless of the z-index of the other overlays. Markers are effectively considered to be in a separate z-index group compared to other overlays.

You can set the index when adding the marker to the map:

map.addMarker(new MarkerOptions()
    .position(new LatLng(10, 10))
    .title("Marker z1")
    .zIndex(1.0f));

... or using Marker.setZIndex() after the marker is created.

More documentation on the effect of z-index on click events is below (from https://developers.google.com/maps/documentation/android-api/marker#marker_click_events):

  • When a user clicks on a cluster of markers, the click event is triggered for the marker with the highest z-index.
  • At most one event is triggered per click. In other words, the click is not passed down to the markers or other overlays with lower z-index values.
  • Clicking on a cluster of markers causes subsequent clicks to cycle through the cluster, selecting each in turn. The order of the cycle first prioritises z-index, then proximity to the click point.
  • If the user clicks outside the proximity of the cluster, the API recalculates the cluster and resets the state of the click cycle so that it starts from the beginning.
  • The click event falls through marker clusters to other shapes and overlays before restarting the cycle.
  • Markers are effectively considered to be in a separate z-index group compared to other overlays or shapes (polylines, polygons, circles, and/or ground overlays), regardless of the z-index of the other overlays. If multiple markers, overlays or shapes are overlaid on top of each other, the click event is cycled through the cluster of markers first, then triggered for other clickable overlays or shapes, based on their z-index values.
like image 152
Sean Barbeau Avatar answered Sep 22 '22 10:09

Sean Barbeau