所以,我找到了它的解决方案 – 也许这对某人也有帮助.
因此,首先,我们需要使用自定义渲染器(继承自DefaultClusterRenderer). DefaultClusterRenderer有自己的缓存,包含ClusterItem和对应的Marker对:
public MarkerCache mMarkerCache = new MarkerCache();
所以我在CustomClusterRenderer中编写了下一个方法
public Marker getMarker(OurClusterItem clusterItem) {
return mMarkerCache.get(clusterItem);
}
在它之后,我已经添加了我们的片段2变量:
private Marker mCurrentSelectedMarker;
private ClusterStore mCurrentSelectedClusterItem;
并更改ClusterItemClickListener的实现:
public ClusterManager.OnClusterItemClickListener mClusterItemClickListener = new ClusterManager.OnClusterItemClickListener() {
@Override
public boolean onClusterItemClick(ClusterStore item) {
// return to prevIoUs marker non-selected icon
if (mCurrentSelectedMarker != null) {
mCurrentSelectedMarker.setIcon(BitmapDescriptorFactory.fromResource(mCurrentSelectedClusterItem.getIconResourceId()));
}
Marker marker = mCustomRenderer.getMarker(item);
if (marker != null) {
mCurrentSelectedMarker = marker;
mCurrentSelectedClusterItem = item;
marker.setIcon(BitmapDescriptorFactory.fromResource(item.getIconSelResourceId()));
}
// some other code
return true;
}
};
这就是全部,它就像一个魅力.