我正在开发一个包含谷歌地图的应用程序。地图中的默认标记是可见的,但我要做的是从Facebook网址获取图像,然后在谷歌地图上显示。我正在使用“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 (图片的网址)第二个是 imageView (布局中的ImageView对象)。
现在为什么我需要ViewImage对象,如果我必须在地图上显示图像.Well ImageLoader对象不将bitmap图像从其任何函数返回到第一个我使用ImageView将获取的图像从url设置为imageview,然后在Bitmap中获取图像。
我所做的就是这样。
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 对象,但无法将其转换为标记。
答案 0 :(得分:1)
我建议你使用另一种方式,就像魅力: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:
直接获取BitmapandroidAQuery.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.
}
});
它非常快速和准确,使用它你可以在加载时找到更多功能,如动画;如果需要,获取位图;等
答案 1 :(得分:0)
请尝试这种方式,希望这有助于您解决问题。
1.从here
下载最新的AndroidQuery jar2.将此jar放到libs文件夹中,右键单击jar和Build Path - &gt;添加到bulid路径。
3.如何使用见这个例子:
AQuery androidQuery = new AQuery(this);
androidQuery.ajax(url.trim(), Bitmap.class, 0, new AjaxCallback<Bitmap>() {
@Override
public void callback(String url, Bitmap object, AjaxStatus status) {
super.callback(url, object, status);
googleMap.addMarker(new MarkerOptions().title("yourtitle").icon(BitmapDescriptorFactory.fromBitmap(object)).position(new LatLng(yourlatitude), Double.parseDouble(yourlongitude))));
}
});