4

我正在开发一个包含谷歌地图的应用程序。地图中的默认标记是可见的,但我要做的是从 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 对象)

现在为什么我需要 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

4

2 回答 2

1

我向你推荐一种不同的方式,就像一个魅力:Android Query。

您可以从这里下载该 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.
                        }

                    });

它非常快速和准确,使用它您可以在加载时找到更多功能,例如动画;如果需要,获取位图;等等

于 2013-10-11T05:44:35.290 回答
0

试试这个方法,希望这能帮助你解决你的问题。

1.从这里下载最新的AndroidQuery jar

2.把这个jar放到你的libs文件夹中,然后右键单击jar和Build Path -> Add to bulid path。

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))));
     }
});
于 2013-10-11T05:48:43.370 回答