为此,我觉得我只需要重写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;
}

09-26 07:55