これを達成するにonMarkerClick
は、クリックされたマーカーの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());
onMarkerClick メソッドで正しく動作することがわかりましたisInfoWindowShown()
が、正しく「記憶」されません。そして、これはすでに誰かによってバグとして指摘されていることがわかりました...
https://code.google.com/p/gmaps-api-issues/issues/detail?id=5408