我正在学习如何使用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调用此方法。
任何帮助都将受到高度赞赏 提前致谢