Android版Google地图v2中令人耳目一新的制作者(ClusterItems) [英] Refreshing makers (ClusterItems) in Google Maps v2 for Android

查看:75
本文介绍了Android版Google地图v2中令人耳目一新的制作者(ClusterItems)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 Google地图Android API公用程序库,从互联网上下载我想用作标记的某些图像。
我这样做的方式就像下面的代码片段所示:

pre $ class MarkerItemClusterRenderer extends DefaultClusterRenderer< MarkerItem> {
...
@Override
protected void onBeforeClusterItemRendered(MarkerItem item,
MarkerOptions markerOptions){
super.onBeforeClusterItemRendered(item,markerOptions);
mImageLoader.get(item.getImageUrl(),new ImageListener(){
$ b @Override
public void onErrorResponse(VolleyError error){
Log.i( XXX,error.toString());
}
$ b $ @覆盖$ b $ public void onResponse(ImageContainer response,boolean isImmediate){
if(response!= null &&& response.getBitmap()!= null){
mImageIcon.setImageBitmap(response.getBitmap());
位图图标= mIconGenerator.makeIcon();
位图bhalfsize =位图.batmap(bhalfsize));
}
}
。 });
}

问题是,当下载图像时,地图标记)不会刷新,所以大部分时间(但并非总是)我仍然看到红色的默认标记。



我试着做 mImageIcon.invalidate(); mImageIcon.requestLayout(); 但仍然没有运气。



有没有办法达到这个目的?
提前感谢您。

解决方案

您只需要在$ b中完成所有这些工作
$ b

  protected void onClusterItemRendered(T clusterItem,Marker marker){
...
}
onBeforeClusterItemRendered
中设置图标 MarkerOptions



> $ c>在异步回调。此时它可以添加到地图并成为真正的标记。所以你的图标会被设置为已经没用的对象。



这就是为什么你需要在 onClusterItemRendered


I'm using Google Maps Android API Utility Library and I'm downloading certain images from internet that I want to use as markers. The way I'm doing it is like in the following snippet:

class MarkerItemClusterRenderer extends DefaultClusterRenderer<MarkerItem> {
...
    @Override
        protected void onBeforeClusterItemRendered(MarkerItem item,
                final MarkerOptions markerOptions) {
            super.onBeforeClusterItemRendered(item, markerOptions);
            mImageLoader.get(item.getImageUrl(), new ImageListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.i("XXX", error.toString());
                }

                @Override
                public void onResponse(ImageContainer response, boolean isImmediate) {
                    if (response != null && response.getBitmap() != null) {
                        mImageIcon.setImageBitmap(response.getBitmap());
                        Bitmap icon = mIconGenerator.makeIcon();
                        Bitmap bhalfsize = Bitmap.createScaledBitmap(icon, 150,
                                150, false);
                        markerOptions.icon(BitmapDescriptorFactory
                                .fromBitmap(bhalfsize));
                    }
                }
            });
        }

The problem is, that when the image is downloaded, the map (and thus the marker) doesn't refresh, so most of the times (but not always) I still see the red default markers.

I tried to do mImageIcon.invalidate(); mImageIcon.requestLayout(); but there's still no luck.

Is there anyway to achieve this? Thanks a lot in advance.

解决方案

You just need to make all this stuff in

protected void onClusterItemRendered(T clusterItem, Marker marker) {
    ...
}

In onBeforeClusterItemRendered you set icon on MarkerOptions in async callback. At this time it could be added to map and become real Marker. So you icon will be set to already useless object.

That's why you need to do it in onClusterItemRendered

这篇关于Android版Google地图v2中令人耳目一新的制作者(ClusterItems)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆