【问题标题】:Android Google Maps snippet auto update in InfoWindowInfoWindow 中的 Android 谷歌地图片段自动更新
【发布时间】:2016-08-11 07:14:46
【问题描述】:

我在我的应用中使用 Google 地图,但标记很少。每隔几秒钟,我就会从 API 标记位置加载。每个标记都设置了标题和sn-p。在 sn-p 中,我想显示加载数据的时间。

问题是,当用户单击其中一个标记并且带有标题的 InfoWindow 和 sn-p 可见时,然后我更改了 sn-p 和内容,但可见 InfoWindow 上的内容没有改变 -用户必须单击地图以隐藏InfoWindow,然后再次单击标记-然后内容正确。

标题或sn-p改变后是否可以刷新InfoWindow内容?

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    我找到了使用 Android Maps Extensions https://github.com/mg6maciej/android-maps-extensions 的解决方案。

    在更新标记数据后调用:

        Marker m = map.getMarkerShowingInfoWindow();
        if (m != null && !m.isCluster()) {
            m.showInfoWindow();
        }
    

    【讨论】:

      【解决方案2】:

      请注意,在 Google Maps Android API 的文档中:

      info window 绘制的不是实时视图。视图被渲染为图像 (使用 View.draw(Canvas))在返回时。 这意味着 对视图的任何后续更改都不会反映在信息中 地图上的窗口。稍后更新信息窗口(例如,在 图像已加载),调用 showInfoWindow()。此外,信息 窗口不会尊重任何典型的正常交互 视图,例如触摸或手势事件。但是你可以听一个 整个信息窗口上的通用点击事件,如 下面的部分。

      然后,如果您想做实时功能。我建议学习如何使用Firebase with Google maps

      Firebase 是什么?

      Firebase 是一个具有许多功能的应用平台。本教程使用其实时数据库。数据以 JSON 格式存储,实时同步到所有连接的客户端,即使您的应用离线也可用。

      【讨论】:

        【解决方案3】:

        使用 onDataChange 引入 firebase 数据后,我更新了标记。

        if (marker != null && marker.isInfoWindowShown() ) {
           marker.showInfoWindow();
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-04
          • 1970-01-01
          • 1970-01-01
          • 2017-08-16
          • 1970-01-01
          • 1970-01-01
          • 2017-04-25
          相关资源
          最近更新 更多