【发布时间】:2015-08-21 17:00:13
【问题描述】:
我已经在我正在构建的一个应用程序中组合了一个工具,该应用程序在 android 上使用 v2 版本的地图,当标记彼此非常接近时,它们会在彼此之上绘制,这不是问题,但我希望发生什么至少是让最后一个标记出现在顶部。
有没有办法确保最后绘制的标记显示在其余标记的顶部,或者在显示紧密组合在一起的标记时,我是否受系统决策的支配。
【问题讨论】:
我已经在我正在构建的一个应用程序中组合了一个工具,该应用程序在 android 上使用 v2 版本的地图,当标记彼此非常接近时,它们会在彼此之上绘制,这不是问题,但我希望发生什么至少是让最后一个标记出现在顶部。
有没有办法确保最后绘制的标记显示在其余标记的顶部,或者在显示紧密组合在一起的标记时,我是否受系统决策的支配。
【问题讨论】:
现在我刚刚结束了使用
marker.showInfoWindow();
它为我提供了我想要的确切行为,即保持最后绘制的标记出现在屏幕上其他标记的最顶部。
顺便说一句,它确实打开了信息窗口,但如果我真的想要,我可以设置一个自定义布局,并在特定条件下为信息窗口设置为空,但根据我的需要,窗口实际上效果很好打开。
【讨论】:
正如 James 已经写的那样,显示一个 InfoWindow 就可以了。
您可以使用自己的适配器“显示”一个不可见的信息窗口:
public class InfoWindowAdapter implements GoogleMap.InfoWindowAdapter{
private final View mWindow;
public InfoWindowAdapter(Activity activity) {
mWindow = App.activity.getLayoutInflater().inflate(R.layout.custom_info_window,
null);
}
@Override
public View getInfoContents(Marker mark) {
return null;
}
@Override
public View getInfoWindow(Marker marker) {
render(marker, mWindow);
return mWindow;
}
private void render(Marker marker, View view) {
//do nothing
}
}
将此设置为地图:
map.setInfoWindowAdapter(new InfoWindowAdapter(activity));
并显示信息窗口:
currentlySelectedMarker.setSnippet(" ");
currentlySelectedMarker.setTitle(" ");
currentlySelectedMarker.showInfoWindow();
setTitle 的调用很重要。否则 showInfoWindow() 将被忽略。
【讨论】: