我知道关于这个主题有一些主题,但我还没有找到足够好的解决方案。
我需要在所有其他标记的顶部放置一个标记。我该怎么做?
我尝试在所有其他标记之前和之后添加此标记,但是在 map View 上的顺序似乎是从底部(前)到顶部(后)。这是 Not Acceptable ,因为我想以所有标记前面的标记为中心。
我知道多边形可以是 zOrdered,但我更喜欢样式精美的图形!
事实上,您不能在标记上订购多边形!
“此多边形相对于其他叠加层(包括折线、GroundOverlays 和 TileOverlays,但不包括标记)的绘制顺序。具有较大 z-index 的叠加层将绘制在具有较小 z-indices 的叠加层上。具有相同 z-index 值的叠加层是任意的。默认为 0。 - https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/Polygon
有人对此有任何想法吗?
最佳答案
如果您确实显示了 InfoWindow,则 Aiden Fry 的答案有效。如果你不这样做,标记就不会出现在前面。无论如何,这是一个让它出现在前面的技巧:
创建一个显示 0dp 信息窗口的自定义 InfoWindowAdapter:
public class MapWindowAdapter implements GoogleMap.InfoWindowAdapter {
private Context context = null;
public MapWindowAdapter(Context context) {
this.context = context;
}
// Hack to prevent info window from displaying: use a 0dp/0dp frame
@Override
public View getInfoWindow(Marker marker) {
View v = ((Activity) context).getLayoutInflater().inflate(R.layout.no_info_window, null);
return v;
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
}
这是布局的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="0dp">
</LinearLayout>
设置 map 时,设置适配器和自定义 InfoWindowAdapter 和 OnMarkerClickListener(使用 showInfoWindow 并按照 AIden Fry 的建议返回 true):
mMap.setInfoWindowAdapter(new MapWindowAdapter(this));
//Call showInfoWindow to put marker on top of others.
myMarker.showInfoWindow();
这并不漂亮,但我没有找到任何其他方法来处理不使用信息窗口的 z-indexing。
关于android - Google Maps v2 Marker zOrdering - 置顶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14771569/