以注释方式显示从互联网下载的图像 – 使用毕加索

我无法显示从互联网下载的图像作为注释。 我正在执行下面的代码和毕加索图书馆。 但是,如果我使用本地图像,它的工作原理。 在此先感谢您的帮助。

private void createAnnotation(int id, double lat, double lon, String caption, String photoUrl) { SKAnnotation annotation = new SKAnnotation(id); SKCoordinate coordinate = new SKCoordinate(lat, lon); annotation.setLocation(coordinate); annotation.setMininumZoomLevel(5); SKAnnotationView annotationView = new SKAnnotationView(); View customView = (LinearLayout) ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate( R.layout.annotation_photo_and_text, null, false); // If width and height of the view are not power of 2 the actual size of the image will be the next power of 2 of max(width,height). //annotationView.setView(findViewById(R.id.customView)); TextView tvCaption = (TextView) customView.findViewById(R.id.annotation_photo_caption); tvCaption.setText(caption); ImageView ivPhoto = (ImageView) customView.findViewById(R.id.annotation_photo); Picasso.with(getApplicationContext()) .load(photoUrl) .resize(96, 96) //.centerCrop() .into(ivPhoto); //ivPhoto.setImageResource(R.drawable.hurricanerain); annotationView.setView(customView); annotation.setAnnotationView(annotationView); mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_NONE); } 

Solutions Collecting From Web of "以注释方式显示从互联网下载的图像 – 使用毕加索"

毕加索asynchronous加载来自互联网的图像。 下载后,尝试将图像添加到注释。 您可以使用目标来侦听图像下载完成:

 ImageView ivPhoto = (ImageView) customView.findViewById(R.id.annotation_photo); Target target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { ivPhoto.setImageBitmap(bitmap); annotationView.setView(customView); annotation.setAnnotationView(annotationView); mapView.addAnnotation(annotation, SKAnimationSettings.ANIMATION_NONE); } @Override public void onBitmapFailed(Drawable errorDrawable) {} @Override public void onPrepareLoad(Drawable placeHolderDrawable) {} }; ivPhoto.setTag(target); Picasso.with(getApplicationContext()) .load(photoUrl) .resize(96, 96) .into(target); 

尝试使用活动上下文来代替应用程序上下文。 它可能适合你。

如果您尝试使用Target对象加载图像,然后将下载的位图设置为您的ImageView

 Target target = new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { // loading of the bitmap was a success // TODO do some action with the bitmap ivPhoto.setImageBitmap(bitmap); } @Override public void onBitmapFailed(Drawable errorDrawable) { // loading of the bitmap failed // TODO do some action/warning/error message } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { } }; ivPhoto.setTag(target); Picasso.with(getApplicationContext()) .load(photoUrl) .resize(96, 96) .into(target);