Arc*_*ect 16 android google-maps google-maps-android-api-2
为了实现这一点,我觉得我只需要覆盖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");
}
}
Run Code Online (Sandbox Code Playgroud)
它总是告诉我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());
Run Code Online (Sandbox Code Playgroud)
我发现isInfoWindowShown()
在onMarkerClick方法中可以正常工作但不会正确"记住"它.而且我发现有人已经指出这是一个错误......
https://code.google.com/p/gmaps-api-issues/issues/detail?id=5408
RN3*_*ick -1
我为显示/隐藏信息窗口创建了此代码。
\n\nenter code here\n\nprivate boolean infoWindowIsShow = false;\nprivate Marker lastMarker;\n\nprivate class MarkerClickListener implements GoogleMap.OnMarkerClickListener {\n @Override\n public boolean onMarkerClick(Marker marker) {\n\n //\xd0\xbe\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x82\xd0\xba\xd0\xb0 \xd0\xb2\xd1\x8b\xd0\xb2\xd0\xbe\xd0\xb4\xd0\xb8\xd1\x82\xd1\x8c/\xd0\xbd\xd0\xb5 \xd0\xb2\xd1\x8b\xd0\xb2\xd0\xbe\xd0\xb4\xd0\xb8\xd1\x82\xd1\x8c \xd0\xb8\xd0\xbd\xd1\x84\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xbd\xd0\xb4\xd0\xbe\xd0\xb2\n if(lastMarker == null){\n marker.showInfoWindow();\n lastMarker = marker;\n infoWindowIsShow=true;\n }else\n if (marker.getId().equals(lastMarker.getId())) {\n if (infoWindowIsShow) {\n marker.hideInfoWindow();\n infoWindowIsShow = false;\n } else {\n marker.showInfoWindow();\n infoWindowIsShow = true;\n }\n }\n else{\n //\xd1\x8d\xd1\x82\xd0\xbe \xd1\x89\xd0\xb5\xd0\xbb\xd1\x87\xd0\xbe\xd0\xba \xd0\xbf\xd0\xbe \xd0\xb4\xd1\x80\xd1\x83\xd0\xb3\xd0\xbe\xd0\xbc\xd1\x83 \xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb5\xd1\x80\xd1\x83\n if (infoWindowIsShow) {//\xd0\xb5\xd1\x81\xd0\xbb\xd0\xb8 \xd0\xbe\xd1\x82\xd0\xba\xd1\x80\xd1\x8b\xd1\x82\xd0\xbe \xd0\xb8\xd0\xbd\xd1\x84\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xbd\xd0\xb4\xd0\xbe\xd0\xb2 \xd0\xbf\xd1\x80\xd0\xb5\xd0\xb4\xd1\x8b\xd0\xb4\xd1\x83\xd1\x89\xd0\xb5\xd0\xb3\xd0\xbe \xd0\xbc\xd0\xb0\xd1\x80\xd0\xba\xd0\xb5\xd1\x80\xd0\xb0, \xd1\x81\xd0\xba\xd1\x80\xd1\x8b\xd0\xb2\xd0\xb0\xd0\xb5\xd0\xbc \xd0\xb5\xd0\xb3\xd0\xbe\n lastMarker.hideInfoWindow();\n //\xd0\xb8 \xd0\xbe\xd1\x82\xd0\xbe\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb6\xd0\xb0\xd0\xb5\xd0\xbc \xd0\xb4\xd0\xbb\xd1\x8f \xd0\xbd\xd0\xbe\xd0\xb2\xd0\xbe\xd0\xb3\xd0\xbe\n marker.showInfoWindow();\n infoWindowIsShow = true;\n lastMarker = marker;\n } else {\n marker.showInfoWindow();\n infoWindowIsShow = true;\n lastMarker = marker;\n }\n }\n return true;\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\nmMap.setOnMarkerClickListener(new MarkerClickListener());
\n 归档时间: |
|
查看次数: |
7474 次 |
最近记录: |