我正在开发一个包含谷歌地图的应用程序。 map 中的默认标记是可见的,但我要做的是从 facebook url 获取图像,然后将其显示在谷歌地图上。我正在使用“universal-image-loader-sample-1.8.6.apk”来使用 url 加载图像。
现在我正在加载图像。
ImageLoader imageLoader;
imageLoader = ImageLoader.getInstance();
ImageLoaderConfiguration ilc = ImageLoaderConfiguration.createDefault(this);
imageLoader.init(ilc);
ImageView imageView = (ImageView)findViewById(R.id.friend_pic);
imageLoader.displayImage(stringImageUrl, imageView);
代码很简单 displayImage() 接受两个参数,第一个是 stringImageUrl (图片的 url) 第二个是 imageView (布局中的 ImageView 对象)。
现在如果我必须在 map 上显示图像,为什么我需要 ViewImage 对象。那么 ImageLoader 对象不需要从它的任何函数返回位图图像,首先我使用 ImageView 将获取的图像从 url 设置为 imageview,然后在位图中获取图像。
我做的是这样的。
Drawable drawble = imageView.getDrawable();
BitmapDescriptor icon=BitmapDescriptorFactory.fromBitmap(((BitmapDrawable)drawble).getBitmap());
一旦我在 BitmapDescriptor 中获得图像,就可以很容易地在标记中设置它。
Marker location = googleMap.addMarker(new MarkerOptions().visible(true)
.title(stringName).position(position).icon(icon);
但问题是,这不起作用。图像进入 imageView 对象,但无法将其发送到 Marker。
最佳答案
我向您推荐一种非常有效的不同方式:Android 查询。
您可以从此处下载该 jar 文件:http://code.google.com/p/android-query/downloads/list
AQuery androidAQuery=new AQuery(this);
举个例子:
androidAQuery.id(YOUR IMAGEVIEW).image(YOUR IMAGE TO LOAD, true, true, getDeviceWidth(), ANY DEFAULT IMAGE YOU WANT TO SHOW);
使用上面的代码,您可以直接通过 url 显示您的图像。现在下面的代码是直接从 url 获取位图:
androidAQuery.ajax(YOUR IMAGE URL,Bitmap.class,0,new AjaxCallback<Bitmap>(){
@Override
public void callback(String url, Bitmap object, AjaxStatus status) {
super.callback(url, object, status);
//You will get Bitmap from object.
}
});
它非常快速和准确,使用它您可以找到更多功能,例如加载时的动画;如果需要,获取位图;等
关于android + 通用图像加载器 : show custom marker with image in google map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310985/