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

时间:2013-07-16 08:55:20

标签: android google-maps google-maps-markers

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

4 个答案:

答案 0 :(得分:21)

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

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

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):

  

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

...或在创建标记后使用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值触发其他可点击的叠加层或形状。
  •   

答案 1 :(得分:5)

找到解决方案:

Marker.showInfoWindow();

这不是最佳选择,因为它会导致信息窗口显示在标记上方,但它总比没有好。

答案 2 :(得分:2)

不幸的是,Google Map API V2 for Android中的Markers没有z-indices。他们处理自己的抽奖订单

答案 3 :(得分:0)

我认为这篇文章与Google Maps v2 Marker zOrdering - Set to top重复。 Bastien Beurier的答案使用了Marker.showInfoWindow()解决方案,并演示了如果你真的不希望infowindow出现,如何创建一个0x0 infowindow。

另请注意下面关于将TextView添加到LinearLayout的答案。