使用Google地图标记的UIL(通用图像加载程序):将ImageAware重新用于其他图像。任务已取消

时间:2015-07-27 10:19:05

标签: android google-maps google-maps-api-3 universal-image-loader

我使用标记填充地图,标记包含从互联网获取的自定义图标,然后缓存在磁盘上以供重复使用。

我注意到此语句出现,而对于我的ImageLoadingListeneronLoadingCancelled被调用,导致标记图标无法显示,并显示默认的Google Marker(红色尖点)。

以下是我的代码。

循环浏览一些数据并创建标记:

for(SomeObject so: listOfObjects){
            Marker marker = mGoogleMap.addMarker(new MarkerOptions().position(new LatLng(so.getLatitude(), so.getLongitude())));
            loadMarkerBitmap(marker,so);
        }

设置标记图标的loadMarkerBitmap方法:

ImageLoader.getInstance().loadImage(so.getImageURL , new ImageLoadingListener() {
            @Override
            public void onLoadingStarted(String imageUri, View view) {

            }

            @Override
            public void onLoadingFailed(String imageUri, View view, FailReason failReason) {

            }

            @Override
            public void onLoadingComplete(String imageUri, View view, Bitmap categoryIcon) {
                Bitmap combined = Bitmap.createBitmap(mapPin.getWidth(), mapPin.getHeight(), Bitmap.Config.ARGB_8888);
                Bitmap scaledIcon = Bitmap.createScaledBitmap(categoryIcon,(mapPin.getWidth() * 45) / 100, (mapPin.getHeight() * 45) / 100,true);
                Canvas canvas = new Canvas(combined);
                canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
                canvas.drawBitmap(mapPin,0,0, null);
                canvas.drawBitmap(scaledIcon,canvas.getWidth()/2 - scaledIcon.getWidth()/2,(canvas.getHeight()/2 - scaledIcon.getHeight()/2), null);
                marker.setIcon(BitmapDescriptorFactory.fromBitmap(combined));
            }

            @Override
            public void onLoadingCancelled(String imageUri, View view) {


            }
        });

不确定是什么问题。我尝试过创建一个强引用ImageLoadListener,但遇到了同样的问题。

1 个答案:

答案 0 :(得分:1)

所以问题是根据源代码loadImage调用取消相同图像URI的先前任务,例如如果您使用此网址启动任务,例如http://www.google.fr/images/srpr/logo11w.png"然后另一个,而第一个正在进行将取消它

解决方案是使用NonViewAware,例如

enter image description here

这解决了我的问题,显示所有图像,没有取消任何内容