为此,我觉得我只需要重写onMarkerClick
并检查clicked marker的infoWindow是否已打开,但是令我惊讶的是clickedMarker.isInfoWindowShown()
总是返回false。
我的代码:
@Override
public boolean onMarkerClick(final Marker clickedMarker) {
if(clickedMarker.isInfoWindowShown()) {
clickedMarker.hideInfoWindow();
System.out.println("was showing");
} else {
clickedMarker.showInfoWindow();
System.out.println("not showing");
}
}
它总是告诉我infoWindow在“不显示”,这是不对的。我可以通过保留
userLastClickedMarker
的引用来解决这个问题,但是我想知道我在哪里做错了。谢谢!
编辑:
我更改了代码以调试此问题:
System.out.println(clickedMarker.isInfoWindowShown());
if(clickedMarker.isInfoWindowShown()) {
clickedMarker.hideInfoWindow();
System.out.println(" showing");
} else {
clickedMarker.showInfoWindow();
System.out.println("not showing");
}
System.out.println(clickedMarker.isInfoWindowShown());
我发现
isInfoWindowShown()
在onMarkerClick方法中可以正常工作,但不会“正确地”记住它。我发现有人已经指出这是一个错误...https://code.google.com/p/gmaps-api-issues/issues/detail?id=5408
最佳答案
isInfoWindowShown始终为false,因此我使用基本方式隐藏信息窗口
int mLastIndex = -1
继续
@Override
public boolean onMarkerClick(Marker marker) {
int index = (int) marker.getTag();
Log.i(TAG, "onMarkerClick: " + index);
if(lastIndex != index){
marker.showInfoWindow();
lastIndex = index;
}else{
marker.hideInfoWindow();
lastIndex = -1;
}
return true;
}