Вы можете использовать свой метод в методе onClusterItemRendered (). Посмотрите этот ответ https://stackoverflow.com/a/34029984/7917629
@Override
protected void onClusterItemRendered(ClusterMarker item, final Marker marker) {
String imageUrl = item.getImageUri();
// here you can call your background task
// or some other option like Glide
// you put your icon as:
// marker.setIcon(BitmapDescriptorFactory.fromBitmap(resizedBitmap));
}
------ Обновите, как использовать glide (моя версия 4.7.1) здесь
@Override
protected void onClusterItemRendered(EventMarker clusterItem, final Marker marker) {
String imageUrl = clusterItem.getImageUri();
if (imageView != null && imageUrl != null && !imageUrl.isEmpty()) {
Glide.with(mContext.getApplicationContext())
.load(imageUrl)
.apply(new RequestOptions()
.optionalCircleCrop()
.placeholder(R.mipmap.default_event_cover_rounded)
.error(R.mipmap.default_event_cover_rounded)
.diskCacheStrategy(DiskCacheStrategy.ALL))
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
imageView.setImageDrawable(resource);
Bitmap icon = iconGenerator.makeIcon();
try {
marker.setIcon(BitmapDescriptorFactory.fromBitmap(icon));
} catch (Exception e) {
Log.d("TAG", "onResourceReady: " + e.getMessage());
}
}
});
}
}
Так вы можете обновить свою иконку после:
Определите Map<String, Marker> markers
в верхней части вашего CustomClusterRender, инициализируйте его в конструкторе. добавьте свой маркер с некоторым ключом после этого marker.setIcon
. Добавьте как markers.put(clusterItem.getId(), marker);
ваш кластер должен иметь уникальный идентификатор. ваш метод будет
public void updateMarker(final String id, String imgUrl) {
if (markers.size() > 0) {
if (iconImage != null) {
Glide.with(mContext.getApplicationContext())
.load(imgUrl)
.apply(new RequestOptions()
.optionalCircleCrop()
.placeholder(R.mipmap.default_event_cover_rounded)
.error(R.mipmap.default_event_cover_rounded)
.diskCacheStrategy(DiskCacheStrategy.ALL))
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
iconImage.setImageDrawable(resource);
Bitmap icon = iconGenerator.makeIcon();
try {
markers.get(id).setIcon(BitmapDescriptorFactory.fromBitmap(icon));
} catch (Exception e) {
Log.d("TAG_SNAP", "onResourceReady: " + e.getMessage() + markers.get(id).getTitle());
}
}
});
}
}