在这里,我正在使用这种方法在Google地图标记上查看图像,我面临"图像缓冲区不是数组错误"。
这是我的标记的代码
mGoogleMap.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude))
.anchor(0.5f, 0.5f)
.title(title)
.snippet(snippet)
.icon(BitmapDescriptorFactory.fromBitmap(getBitmapFromURL("https://c.ndtvimg.com/2019-10/5cnigl7_virat-kohli-afp_625x300_15_October_19.jpg"))));
这就是我如何使用Glide将图像从URL加载到位图
private Bitmap bitmap;
private Bitmap getBitmapFromURL(String url){
Glide.with(this)
.asBitmap()
.load(url)
.into(new CustomTarget<Bitmap>(25,25) {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
bitmap =resource;
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
return bitmap;
}
这是调试时出错
Unexpected Error: Image buffer is not an array.
如果有其他更好的方法,请告诉我。
也许您使用 Glide 获取的位图在返回位图后完成加载。滑动异步加载图像,但立即返回位图。
请尝试使用下面的代码。
private void getMarkerFromURL(String url){
Glide.with(this)
.asBitmap()
.load(url)
.into(new CustomTarget<Bitmap>(25,25) {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
mGoogleMap.addMarker(new MarkerOptions()
.position(new LatLng(latitude, longitude))
.anchor(0.5f, 0.5f)
.title(title)
.snippet(snippet)
.icon(BitmapDescriptorFactory.fromBitmap(resource)));
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}