Google Maps v2 for Android中的刷新制作者(ClusterItems)

nol*_*man 10 android google-maps google-maps-markers markerclusterer google-maps-android-api-2

我正在使用谷歌地图Android API实用程序库,我正在从互联网上下载我想用作标记的某些图像.我正在做的方式就像在下面的代码片段:

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));
                    }
                }
            });
        }
Run Code Online (Sandbox Code Playgroud)

问题是,当下载图像时,地图(以及标记)不会刷新,因此大多数时候(但并非总是如此)我仍然会看到红色的默认标记.

我试过,mImageIcon.invalidate(); mImageIcon.requestLayout();但仍然没有运气.

反正有没有实现这个目标?非常感谢提前.

Sta*_*hin 5

你只需要把所有这些东西放进去

protected void onClusterItemRendered(T clusterItem, Marker marker) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

在异步回调中onBeforeClusterItemRendered设置图标MarkerOptions。这时候它可以被添加到地图并成为真实的Marker。所以你的图标将被设置为已经无用的对象。

这就是为什么你需要在 onClusterItemRendered


小智 0

假设您将 GoogleMap 对象声明为: private GoogleMap mMap;

在 onResponse() 方法中,在对标记应用任何更改之前,尝试编写以下语句来清除以前的标记: mMap.clear();

现在设置您的新标记。