【问题标题】:android + universal image loader : show custom marker with image in google mapandroid + 通用图像加载器:在谷歌地图中显示带有图像的自定义标记
【发布时间】:2013-10-19 02:40:31
【问题描述】:

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

【问题讨论】:

  • 看起来 Universal Image Loader 不是通用的。

标签: android image google-maps google-maps-api-3 bitmap


【解决方案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.
                        }

                    });

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

【讨论】:

  • 如果您觉得这很有用,请接受答案,以便其他人使用。
【解决方案2】:

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

1.从here下载最新的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))));
     }
});

【讨论】:

  • 显示错误 AjaxStatus cannot be resolved to a type
猜你喜欢
  • 2016-01-26
  • 1970-01-01
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多