【问题标题】:UIL (Universal Image Loader) with Google Map Markers: Getting ImageAware is reused for another image. Task is cancelled带有 Google Map Markers 的 UIL(通用图像加载器):Getting ImageAware 可用于另一个图像。任务被取消
【发布时间】:2015-07-27 10:19:05
【问题描述】:

我正在使用标记填充地图,其中包含从 Internet 获得的自定义图标,然后缓存在磁盘上以供重复使用。

我注意到这个语句出现了,对于我的ImageLoadingListeneronLoadingCancelled 被调用,这导致标记图标不显示,而默认的 Google 标记(红色尖头的东西)被显示。

下面是我的代码。

遍历一些数据并创建标记:

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,但遇到了同样的问题。

【问题讨论】:

  • 感谢您的编辑@MrUpsidown
  • 嗨,你能分享一下工作代码吗?对我来说,第一次它没有加载所有图像。谢谢
  • @KarnakerReddyGaddampally 你好,你也遇到同样的问题吗?你能提供更多的细节吗?

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


【解决方案1】:

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

解决方案是使用 NonViewAware 例如

这解决了我的问题,所有图像都显示并且没有被取消

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多