当前位置: 首页 > 知识库问答 >
问题:

Maps V2 InfoWindow中的动态内容

何向荣
2023-03-14
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;
    }

}

正如我们所知,InfoWindow是绘制的,并且以后对它的更改(在我的例子中,ImageView上的新位图)不会显示/InfoWindow不会更新。当ImageLoader完成时,如何“通知”InfoWindow重新加载它自己?当我把

marker.showInfoWindow()

onloadingcomplete中,它创建了一个无限循环,在这个循环中,标记将弹出、开始加载图像、弹出自身等。

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

对如何有效实施这一点有什么建议吗?

共有1个答案

程亦
2023-03-14

在收到模型更新时,您应该对当前显示信息窗口的标记执行marker.showInfoWindow()

所以你需要做三件事:

  1. 创建模型,不要将所有下载内容放入infowindowadapter
  2. 保存对标记的引用(称为markershowinginfowindow)
    getInfoContents(Marker Marker)
  3. 当模型通知您下载完成时调用
if (markerShowingInfoWindow != null && markerShowingInfoWindow.isInfoWindowShown()) {
    markerShowingInfoWindow.showInfoWindow();
}
 类似资料:
  • 问题内容: 我需要从此网站Link中抓取新闻公告。公告似乎是动态生成的。它们不会出现在源代码中。我通常使用机械化,但是我认为它不会起作用。我该怎么办?我可以使用python或perl。 问题答案: 礼貌的选择是询问网站所有者是否具有允许您访问其新闻报道的API。 不太礼貌的选择是跟踪页面加载时发生的HTTP事务,并确定哪一个是AJAX调用,该调用会提取数据。 看起来就是这个。但是看起来它可能包含会

  • 线程动态申请内存并释放 线程动态申请内存并释放 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-08-24 yangjie the first version *

  • 基本上是这样的。我有一个非常结构化的dojo应用程序使用dojo样板项目/模板(来自Github)。我几乎完成了我所有不同的模块,使我的应用程序是什么(它有点像一个cms)。所以,它是一个单页应用程序,在某个区域动态呈现内容。 我的EntryPoint.html看起来像这样: *我知道,我知道我的形象应该在css,但我不是一个真正的设计师,我真的没有乐趣创建/调整界面。 我的入口点。js: 好的,

  • 我有一个页面,需要动态创建一个iframe并将其粘贴到页面上的div中。我创建iframe的方式如下: 根据某些条件,我需要:A)将iframe src设置为其他页面,或者B)动态地向iframe添加一些HTML。 我有选项A的罚款,但选项B抛出了安全错误: 在尝试设置HTML之前,是否需要在动态iframe上设置?我怎么会那么做呢?有没有更简单的方法将动态内容附加到动态iframe中? 提前道谢

  • 主要内容:1. 配置Apache以允许CGI,2. 编写CGI程序CGI(公共网关接口)定义了Web服务器与外部内容生成程序交互的方式,这些程序通常被称为CGI程序或CGI脚本。这是一种使用您最熟悉的编程语言将动态内容放在网站上的简单方法。本文档将介绍如何在Apache Web服务器上设置CGI,以及如何编写简单的CGI程序。 1. 配置Apache以允许CGI 为了使CGI程序正常工作,需要配置Apache以允许CGI执行。有几种方法可以做到这一点。 方式1:

  • 注意:用户界面已经在 Dreamweaver CC 和更高版本中做了简化。因此,您可能在 Dreamweaver CC 和更高版本中找不到本文中描述的一些选项。有关详细信息,请参阅此文章。 关于动态内容源 动态内容源 是一个可从中检索并显示在网页中使用的动态内容的信息存储区。动态内容源不仅包括存储在数据库中的信息,还包括通过 HTML 表单提交的值、服务器对象中包含的值以及其它内容源。 利用 Dr