我在我的应用中使用谷歌地图只有很少的标记。每隔几秒钟我就会从API标记位置加载。每个标记都设置了标题和摘要。在片段中,我想显示加载数据的时间。
问题是,当用户点击其中一个标记时,InfoWindow
标题和摘要可见,然后我更改了代码段&内容但可见InfoWindow
上的内容未更改 - 用户必须点击地图隐藏InfoWindow
并再次点击标记 - 然后内容正确。
标题或代码段更改后是否可以刷新InfoWindow
内容?
答案 0 :(得分:4)
我使用Android Maps Extensions https://github.com/mg6maciej/android-maps-extensions找到了解决方案。
更新标记数据后调用此方法:
Marker m = map.getMarkerShowingInfoWindow();
if (m != null && !m.isCluster()) {
m.showInfoWindow();
}
答案 1 :(得分:3)
请注意,在Google Maps Android API的文档中:
info window 绘制的不是实时视图。视图呈现为图像 (在返回时使用View.draw(Canvas))。这意味着 对视图的任何后续更改都不会反映在信息中 在地图上的窗口。稍后更新信息窗口(例如,之后 图像已加载),调用showInfoWindow()。此外,信息 窗口不会尊重任何典型的正常交互 触摸或手势事件等视图。但是你可以听一个 整个信息窗口上的通用点击事件,如中所述 以下部分。
然后,如果你想做实时功能。我建议学习如何使用Firebase with Google maps。
什么是Firebase?
Firebase是一个具有许多功能的应用程序平台。本教程使用其实时数据库。数据存储为JSON,实时同步到所有连接的客户端,即使您的应用程序脱机也可用。
答案 2 :(得分:0)
使用onDataChange导入Firebase数据后,我更新了标记。
if (marker != null && marker.isInfoWindowShown() ) {
marker.showInfoWindow();
}