通过在Android中更改Z索引,将谷歌地图标记带到最前面

通过在Android中更改Z索引,将谷歌地图标记带到最前面,android,google-maps,google-maps-markers,google-maps-api-2,Android,Google Maps,Google Maps Markers,Google Maps Api 2,我正在创建一个基于地图的应用程序,其中显示基于纬度/经度服务的ping mMap.addMarker(new MarkerOptions() .position(mLatLng) .title("" + name) .snippet("" + pingDate) .icon(BitmapDescriptorFactory.fromBitmap(icon))); 根据GoogleMapv2API,标记是以自上而下的方式绘制的,因此,如果标记完全/部分位于彼此上方,

我正在创建一个基于地图的应用程序,其中显示基于纬度/经度服务的ping

mMap.addMarker(new MarkerOptions()
    .position(mLatLng)
    .title("" + name)
    .snippet("" + pingDate)
    .icon(BitmapDescriptorFactory.fromBitmap(icon)));
根据GoogleMapv2API,标记是以自上而下的方式绘制的,因此,如果标记完全/部分位于彼此上方,我的ping就会被隐藏

我的问题是,我可以改变Z轴或任何可以改变标记的Z位置的东西吗


这样,如果我有两种类型的ping,我想显示一种类型的ping,无论其坐标如何,它总是在顶部

尝试了@Simo的答案,但它似乎在我的手机上不起作用(可能用棒棒糖改变了?)-当showInfoWindow()看到没有任何显示时,它似乎会跳过将pin带到前面。我可以通过使用以下布局解决此问题:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="0dp"
              android:layout_height="0dp" >

    <!-- Need a " " so that showing this isn't a no-op -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" "/>
</FrameLayout>

如果您只想将其置于所有其他标记之上

简单地说:

marker.showInfoWindow();

我相信这篇文章是重复的。Bastien Beurier的答案使用Marker.showInfoWindow()解决方案将标记移动到顶部。如果您实际上不希望infowindow出现,它还提供了如何创建0x0 infowindow的更多细节(尽管正如我在对该答案的评论中所指出的,布局还需要一个带有空格的TextView,如@jt gilkeson在本文中所示)


如果你想让标记始终保持在顶部,那么你可以将该解决方案与最新发布的google map now控制Android中的zIndex的解决方案结合起来。

您现在可以使用此功能:

mMap.addMarker(new MarkerOptions()
   .position(mLatLng)
   .title("" + name)
   .snippet("" + pingDate)
   .icon(BitmapDescriptorFactory.fromBitmap(icon))
   .zIndex(yourZIndex));

z索引指定此标记相对于的堆栈顺序 地图上的其他标记。在顶部绘制具有高z索引的标记 具有较低z指数的标记的数量。默认的z索引值为0


谢谢,我需要额外的文本视图来更新z索引。我仍然担心这会破坏未来的库更新,但我还没有找到一个支持的解决方案来隐藏信息窗口…什么是yourZIndex?@King yourZIndex是一个整数,用于设置标记的zIndex。