我正在创建一个基于地图的应用程序,其中我显示基于纬度/经度服务的ping
mMap.addMarker(new MarkerOptions()
.position(mLatLng)
.title("" + name)
.snippet("" + pingDate)
.icon(BitmapDescriptorFactory.fromBitmap(icon)));
根据谷歌地图v2 api,标记是从上到下绘制的,所以如果完全/部分在彼此之上,我的ping将被隐藏。
我的问题是,我可以更改Z顺序轴或可以更改标记z位置的任何内容吗?
如果我有两种类型的ping,我想在顶部显示一种类型的ping,而不管它的坐标
答案 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();