【问题标题】:Bring Google Map Markers to Front by Changing Z-Index in Android通过在 Android 中更改 Z-Index 将 Google 地图标记置于最前面
【发布时间】:2014-10-20 08:16:24
【问题描述】:

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

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

根据 google map v2 api,标记以自上而下的方式绘制,因此如果完全/部分相互重叠,我的 ping 将被隐藏。

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

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

【问题讨论】:

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


    【解决方案1】:

    尝试了@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>
    

    【讨论】:

    • 谢谢,我需要额外的 TextView 来更新 z-indexing。我仍然担心这可能会在未来的库更新中中断,但我还没有找到一个受支持的解决方案来隐藏信息窗口......
    【解决方案2】:

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

    来自documentation

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

    【讨论】:

    • 什么是yourZIndex
    • @King yourZIndex 是一个整数,用于设置标记的 zIndex。
    【解决方案3】:

    我相信这篇文章是 Google Maps v2 Marker zOrdering - Set to top 的副本。 Bastien Beurier 的回答使用 Marker.showInfoWindow() 解决方案将标记移动到顶部。如果您实际上不希望出现信息窗口,它还提供了有关如何创建 0x0 信息窗口的更多详细信息(尽管正如我在对该答案的评论中指出的那样,布局还需要带有 @jt-gilkeson 的空格的 TextView 有显示在这篇文章中)。

    如果您希望标记始终保持在顶部,那么您可以将该解决方案与Android Google Maps v2 permanent Marker InfoWindow 的解决方案结合使用

    【讨论】:

      【解决方案4】:

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

      只需调用:

      marker.showInfoWindow();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-14
        • 2011-01-24
        • 2012-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-06
        相关资源
        最近更新 更多