通过在Android中更改Z索引,将谷歌地图标记带到最前面
我正在创建一个基于地图的应用程序,其中显示基于纬度/经度服务的ping通过在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,标记是以自上而下的方式绘制的,因此,如果标记完全/部分位于彼此上方,
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。