通过改变Android中的Z-Index,将谷歌地图标记放在首位

Rah*_*pta 8 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)));
Run Code Online (Sandbox Code Playgroud)

根据谷歌地图v2 api,标记以从上到下的方式绘制,所以如果完全/部分地在彼此之上,我的ping将被隐藏.

我的问题是,我可以更改Z顺序轴或任何可以更改标记的z位置的内容吗?

这样,如果我有两种类型的ping,我想总是在顶部显示一种类型的ping,而不管它的坐标

jt-*_*son 14

试过@Simo的答案,但它似乎不能在我的手机上工作(也许用Lollipop改变?) - 当showInfoWindow()看到没有任何东西要显示时,似乎跳过将引脚放到前面.我能够通过使用以下布局来解决这个问题:

<?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>
Run Code Online (Sandbox Code Playgroud)


Mat*_*h10 6

在最新版本中,谷歌地图现在可以控制 Android 上的 zIndex。 https://developers.google.com/maps/documentation/android-api/releases#june_27_2016

您现在可以使用它:

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

文档来看,

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