如果您确实显示了 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>
设置地图时,设置适配器和自定义 InfoWindowAdapter 和 OnMarkerClickListener(使用 showInfoWindow 并按照 AIden Fry 的建议返回 true):
mMap.setInfoWindowAdapter(new MapWindowAdapter(this));
//Call showInfoWindow to put marker on top of others.
myMarker.showInfoWindow();
这并不漂亮,但我没有找到任何其他方法来处理 z-indexing 而不使用信息窗口。