在 Android 中更改 Maps V2 的地图标记的 z 索引(z 顺序)

2024-02-22

我的地图上显示了几个标记,这些标记要么彼此靠近,要么甚至彼此重叠。我需要一个特定的标记始终位于顶部。无论我首先还是最后将标记添加到地图中,它通常最终会被放置在某些标记后面。由于某种神秘的原因,谷歌地图确定了这一点。它需要与 Android V2 版 Google 地图配合使用。


2016 年 6 月 27 日发布的 Android Maps API v2 v9.2.0 现在支持 z 索引 - 请参阅以下位置的公告https://developers.google.com/maps/documentation/android-api/releases#june_27_2016 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'

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

z 索引指定该标记相对于地图上其他标记的堆叠顺序。具有高 z 索引的标记绘制在具有较低 z 索引的标记之上。默认 z 索引值为 0。

标记始终绘制在图块层和其他非标记覆盖层(地面覆盖层、折线、多边形和其他形状)上方,无论其他覆盖层的 z 索引如何。与其他叠加层相比,标记实际上被视为位于单独的 z 索引组中。

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

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

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

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

  • 当用户单击一组标记时,将触发具有最高 z-index 的标记的单击事件。
  • 每次点击最多触发一个事件。换句话说,点击不会向下传递到具有较低 z-index 值的标记或其他叠加层。
  • 单击一组标记会导致后续单击在该组中循环,依次选择每个标记。循环的顺序首先优先考虑 z-index,然后是与点击点的接近度。
  • 如果用户在簇附近单击,API 会重新计算簇并重置单击周期的状态,以便从头开始。
  • 在重新开始循环之前,单击事件会通过标记簇落到其他形状和覆盖层。
  • 与其他叠加层或形状(折线、多边形、圆形和/或地面叠加层)相比,标记实际上被视为位于单独的 z 索引组中,而不管其他叠加层的 z 索引如何。如果多个标记、叠加层或形状相互叠加,则单击事件将首先在标记簇中循环,然后根据其 z-index 值触发其他可单击叠加层或形状。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android 中更改 Maps V2 的地图标记的 z 索引(z 顺序) 的相关文章

随机推荐