【发布时间】:2015-07-27 10:19:05
【问题描述】:
我正在使用标记填充地图,其中包含从 Internet 获得的自定义图标,然后缓存在磁盘上以供重复使用。
我注意到这个语句出现了,对于我的ImageLoadingListener,onLoadingCancelled 被调用,这导致标记图标不显示,而默认的 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