如何在标记自定义信息窗口上刷新ImageView

时间:2018-05-28 12:40:43

标签: java android marker

我正在学习如何使用Android Studio制作Google地图应用程序。 我想为我的标记创建一个自定义信息窗口,显示包含该地点信息的片段以及带有该地点图像的ImageView。

我的照片来自网址,我在自定义信息窗口类中使用了一个线程来导入该图片。

我的问题是,由于某种原因,图像不会从标记更改为标记,我不知道这是什么原因。

这是我的自定义信息窗口的代码。

from pexpect import pxssh
import getpass
try:
    s = pxssh.pxssh()
    hostname = raw_input('hostname: ')
    username = raw_input('username: ')
    password = getpass.getpass('password: ')

这就是我在地图上添加标记的方法

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.Marker;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;


public class CustomInfoWindow implements GoogleMap.InfoWindowAdapter {
    private static final String TAG = "CustomInfoWindow";
    private final View window;
    private Context context;
    private String photo;
    private ImageView img;
    public CustomInfoWindow(Context context,String photo) {
        this.context = context;
        this.photo = photo;
        window = LayoutInflater.from(context).inflate(R.layout.custom_makrer_info,null);
    }

    private void renderWindow(Marker marker,final View view){
        String title = marker.getTitle();
        TextView tv_Title = (TextView)view.findViewById(R.id.marker_title);

        if (!title.equals("")){
            tv_Title.setText(title);
        }
        String snippet = marker.getSnippet();
        TextView tv_Snippet = (TextView)view.findViewById(R.id.marker_snippet);

        if (!snippet.equals("")){
            tv_Snippet.setText(snippet);
        }

        new Thread(new Runnable() {
            @Override
            public void run() {
                img = (ImageView)view.findViewById(R.id.marker_image);
                if (!photo.equals("")){
                    try {
                        URL url = new URL(photo);
                        Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
                        img.setImageBitmap(bmp);

                    }catch (MalformedURLException e){
                        Log.e(TAG, "renderWindow: MalformedURLException thrown: " +e.getMessage() );
                    } catch (IOException e) {
                        Log.e(TAG, "renderWindow: IOException thrown "+ e.getMessage() );
                    }
                }
            }
        }).start();
    }

    @Override
    public View getInfoWindow(Marker marker) {
        renderWindow(marker,window);
        return window;
    }

    @Override
    public View getInfoContents(Marker marker) {
        renderWindow(marker,window);
        return window;
    }
}

为列表中的每个元素POI调用此方法。

任何帮助都将受到高度赞赏 提前致谢

0 个答案:

没有答案