Maps V2 InfoWindow 中的动态内容

2023-12-29

我想在 Maps V2 片段中的标记上显示信息窗口。 问题是,我想显示从网络动态加载的位图通用图像下载器 https://github.com/nostra13/Android-Universal-Image-Loader.

这是我的 InfoWindowAdapter:

class MyInfoWindowAdapter implements InfoWindowAdapter {

    private final View v;

    MyInfoWindowAdapter() {
        v = getLayoutInflater().inflate(R.layout.infowindow_map,
                null);
    }

    @Override
    public View getInfoContents(Marker marker) {



        Item i = items.get(marker.getId());

        TextView tv1 = (TextView) v.findViewById(R.id.textView1);
        ImageView iv = (ImageView) v.findViewById(R.id.imageView1);
        tv1.setText(i.getTitle());


        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .delayBeforeLoading(5000).build();

        imageLoader.getMemoryCache(); 

        imageLoader.displayImage(i.getThumbnailUrl(), iv, options,
                new ImageLoadingListener() {

                    @Override
                    public void onLoadingStarted(String imageUri, View view) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onLoadingFailed(String imageUri, View view,
                            FailReason failReason) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onLoadingComplete(String imageUri,
                            View view, Bitmap loadedImage) {
                        Log.d("MAP", "Image loaded " + imageUri);

                    }

                    @Override
                    public void onLoadingCancelled(String imageUri,
                            View view) {
                        // TODO Auto-generated method stub

                    }
    });

        return v;
    }

    @Override
    public View getInfoWindow(Marker marker) {
        // TODO Auto-generated method stub
        return null;
    }

}

我有两个问题:

As we know https://developers.google.com/maps/documentation/android/marker#info_window_click_events the InfoWindow被绘制并随后对其进行更改(在我的例子中是新的BitMap on the ImageView)未显示/InfoWindow没有更新。我怎样才能“通知”信息窗口重新加载自己imageLoader已完成?当我把

marker.showInfoWindow()

into onLoadingComplete它创建了一个无限循环,其中标记将弹出,开始加载图像,弹出自身等。

我的第二个问题是,在慢速网络连接上(用代码中的 5000 毫秒延迟进行模拟),ImageView in the InfoWindow将始终显示最后加载的图像,无论该图像是否属于该图像ImageWindow/ Marker.

关于如何正确实施这一点有什么建议吗?


你应该做Marker.showInfoWindow()当您收到模型更新时,在当前显示信息窗口的标记上。

所以你需要做三件事:

  1. 创建模型并且不将所有下载放入InfoWindowAdapter
  2. 保存对标记的引用(将其称为markerShowingInfoWindow)
    from getInfoContents(Marker marker)
  3. 当模型通知您下载完成时调用
if (markerShowingInfoWindow != null && markerShowingInfoWindow.isInfoWindowShown()) {
    markerShowingInfoWindow.showInfoWindow();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maps V2 InfoWindow 中的动态内容 的相关文章

随机推荐

  • 如何在 Android 中手动重新排序 ListView?

    我在 Android 中有一个 ListView 需要能够手动重新排序 Android 的音乐播放器应用程序就是一个示例 您可以更改播放列表中曲目的顺序 我知道如何以编程方式更改 ListView 的顺序 但不知道如何在音乐播放器应用程序中
  • 如何发送PDF文件到前端?

    我的系统上有一个保存的 PDF 文件 我正在尝试使用 node express 将文件发送到前端 我正在将文件作为流 二进制字符串 发送到前端 但是当在前端运行一些代码以将 PDF 下载到用户计算机上时 PDF 文件显示为空白 这是我在服务
  • 在 Spark 中对多个 DataFrame 执行 join

    我有 3 个由 3 个不同进程生成的数据帧 每个数据框都有相同名称的列 我的数据框看起来像这样 id val1 val2 val3 val4 1 null null null null 2 A2 A21 A31 A41 id val1 va
  • 如何在 postgres 数据库上切换两个 ID [PK]?

    我想更改 Postgres 上两行的 ID 以切换它们 它们已经被定义为外键 所以我不能使用第三个数字来进行切换 如何在一个 SQL 查询或事务中执行此操作 Example UPDATE mytable SET id 2 WHERE ID
  • DateTime.AddDays() 未按预期工作

    我有这个简单的程序 DateTime aux new DateTime 2012 6 12 12 24 0 DateTime aux2 new DateTime 2012 6 12 13 24 0 aux2 AddDays 1 Consol
  • 在 Rails cookie 中存储/检索值

    我创建了一个 SessionHelper 模块 它看起来或多或少像这样 module SessionHelper def create cookie cookies signed token value gt expires gt 1 ho
  • 将面向铁路的故障跟踪转换为 Rx 友好错误

    我正在使用一个库 它将结果作为双轨值 成功和失败 Observable map函数体我经常从函数的成功跟踪中得到可观察的结果 但我不知道如何处理它们 在Observable map body 换句话说 我经常陷入结果如下所示的情况 当然这是
  • 跨 gridspec 子图/轴共享 xlabel(部分行)

    我在三个子图上共享一个居中的 xlabel 时遇到一些间歇性问题 这三个子图 1 仅跨越 gridspec 行的一部分 2 其相对于彼此的宽度可能会有所不同 使用docs https matplotlib org stable tutori
  • 从两列创建一个矩阵

    我正在尝试从 Excel 工作表中的两列创建一个矩阵 第一列是具有多个重复实例的键 第二列引用与该键相关的不同值 我希望能够创建第二列中所有值的矩阵 以引用它们针对所有关键实例配对在一起的次数 a b 1 red 1 blue 1 gree
  • 使用 PHP 更改 CSS 值

    例如 我有这个 CSS 脚本 然后 我想将标题值更改为 这些值存储在数据库中 让我困惑的是哪一个应该是最好的选择 使用 PHP 脚本或 CSS 甚至 javascript 我希望它根据数据库中的 CSS 值进行更改 我可以在需要时再次更改
  • 在android中旋转图像时调整图像大小

    我正在处理 android 项目 在该项目中我想旋转图像并触摸到某个固定的枢轴点 我已经完成了所有这些事情 但我面临一个问题 当我尝试旋转图像时 图像位图被调整大小 我不知道为什么会发生 如果有人有的话请给我一个想法来帮助解决这个问题 my
  • 如何从控制台运行twisted?

    我在 Windows 7 上使用 Python 3 和 Anaconda 我安装了 Twistedconda install twisted 现在我正在尝试运行twisted or twistd 从控制台 但我收到此错误 twisted 不
  • 如何使用 Javascript 从 CDN 加载外部 css 文件?

    简而言之 我想在 a 上加载 bootstrap css 文件web page https secure helpscout net members register 13 在互联网上 不是在我的网站上 在浏览器控制台中使用 Javascr
  • 在 Internet Explorer 中添加事件监听器

    Internet Explorer 9 中的元素对象相当于什么 if Element prototype addEventListener Element prototype addEventListener function 它在 Int
  • 什么情况下需要调用两次GC.Collect

    我们有一个 WPF 应用程序 基于 Unity 具有 MMVVVM 模式 在应用程序生命周期中可以有多个项目生命周期 在每个项目生命周期之后我们都会进行手动 Tear Down 并尝试释放 ViewModel 的所有引用 对于 Unity
  • 写入 PIC 上的 EEPROM

    这里有PIC单片机编程器吗 我正在学习一些使用 pickit2 和它附带的 16F690 芯片的 PIC 微控制器编程 我目前正在尝试各种设施 我可以成功read如果我在 MPLAB 中设置 EEPROM vaklue 则代码中来自 EEP
  • Pushwoosh 无法在 Unity 的发布版本中工作

    我试图将 Pushwoosh 与 Unity 集成 最新版本需要我实际使用 Pro Guard 和 gradle 因为存在 multidex 错误 之后 由于 proguard 出现了重复文件错误 我通过创建 proguard user t
  • 无法弄清楚为什么模型在回发时为空?

    我是 ASP NET MVC 的新手 我正在尝试创建一个非常简单的博客类型网站作为学习一切工作原理的方法 但是 当我从评论表单发布到空模型时遇到问题 我不知道为什么 在博客文章页面上 我有一个 添加评论 链接 它调用一些 JQuery 来呈
  • 在 Qt Creator 中运行纯 C 项目

    我使用 qt Creator 创建了一个普通的 c 项目文件 gt 新文件或项目 gt 非 Qt 项目 gt 普通 C 项目 main c include
  • Maps V2 InfoWindow 中的动态内容

    我想在 Maps V2 片段中的标记上显示信息窗口 问题是 我想显示从网络动态加载的位图通用图像下载器 https github com nostra13 Android Universal Image Loader 这是我的 InfoWi