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