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

时间:2014-10-20 08:16:24

标签: 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)));

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

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

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

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:3)

在最新版本中,谷歌地图现在可以控制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));

答案 2 :(得分:1)

我认为这篇文章与Google Maps v2 Marker zOrdering - Set to top重复。 Bastien Beurier的回答是使用Marker.showInfoWindow()解决方案将标记移动到顶部。如果你真的不希望infowindow出现,它还有关于如何创建0x0 infowindow的更多细节(尽管正如我在对该答案的评论中所指出的那样,布局还需要一个带有空格的TextView作为@jt-吉尔克森已在这篇文章中表示过。)

如果您希望标记始终位于顶部,则可以将该解决方案与Android Google Maps v2 permanent Marker InfoWindow

的解决方案结合使用

答案 3 :(得分:0)

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

只需致电:

marker.showInfoWindow();