更改Android中Maps V2的地图标记的z-index(z顺序)

And*_*Dev 14 android google-maps google-maps-markers

我的地图上显示了几个标记,它们彼此靠近或者彼此靠近.我需要一个特定的标记始终在顶部.如果我将标记首先或最后添加到地图中并不重要,它通常最终被放置在一些标记后面.出于某种神秘的原因,谷歌地图决定了这一点.它需要使用Google Maps for Android V2.

Sea*_*eau 24

Android Maps API v2的2016年6月27日发布v9.2.0现在支持z-index - 请参阅https://developers.google.com/maps/documentation/android-api/releases#june_27_2016上的公告.

因此,请确保您的地图/播放服务版本设置为v9.2.0或更高版本build.gradle:

compile 'com.google.android.gms:play-services-maps:9.2.0'
Run Code Online (Sandbox Code Playgroud)

z-index文档如下(来自https://developers.google.com/maps/documentation/android-api/marker#marker_z-index):

z-index指定此标记相对于地图上其他标记的堆叠顺序.具有高z指数的标记绘制在具有较低z指数的标记之上.默认的z-index值为0.

无论其他叠加的z-index如何,标记总是被绘制在图块层和其他非标记叠加(地面叠加,折线,多边形和其他形状)之上.与其他叠加相比,标记实际上被认为是在单独的z索引组中.

您可以在将标记添加到地图时设置索引:

map.addMarker(new MarkerOptions()
    .position(new LatLng(10, 10))
    .title("Marker z1")
    .zIndex(1.0f));
Run Code Online (Sandbox Code Playgroud)

...或Marker.setZIndex()在创建标记后使用.

有关z-index对点击事件影响的更多文档如下(来自https://developers.google.com/maps/documentation/android-api/marker#marker_click_events):

  • 当用户单击标记群集时,将触发具有最高z-index的标记的click事件.
  • 每次点击最多触发一个事件.换句话说,点击不会传递给具有较低z-index值的标记或其他叠加.
  • 单击标记群集会导致后续单击在群集中循环,依次选择每个标记.循环的顺序首先优先于z-index,然后接近点击点.
  • 如果用户在群集附近点击外,API会重新计算群集并重置点击周期的状态,以便从头开始.
  • 在重新启动循环之前,单击事件会通过标记群集进入其他形状和叠加层.
  • 无论其他叠加的z索引如何,与其他叠加或形状(折线,多边形,圆形和/或地面叠加)相比,标记实际上被认为是在单独的z索引组中.如果多个标记,叠加或形状重叠在一起,则单击事件首先循环通过标记簇,然后根据其z-index值触发其他可单击的叠加或形状.


And*_*Dev 5

找到了解决方案:

Marker.showInfoWindow();

这不是最佳的,因为它会导致信息窗口出现在标记上方,但它总比没有好.

  • 谷歌没有实现这一点没用.我的应用程序需要它,我不明白为什么开发人员不能控制它.这个解决方案总比没有好,但它对我的应用程序来说感觉真的很hacky并且不够通用. (3认同)

Kap*_*ats 2

不幸的是,MarkersAndroid 版 Google Map API V2 中没有 z 索引。他们处理自己的抽签顺序

  • 2016 年,这不再是真的..zindex (4认同)
  • 现在这不是真的 (2认同)