所以我使用ClusterManager
群集我的Markers
,以便用户可以获得更好的体验。
我实际上已经实现了Google的代码,我找到了here。想象一下,我的Marker
图标是一个球。我希望图标的背景是透明的,而不是白色。
在Google的原始教程中,他们将ImageView
设置为IconGenerator
,如下所示:
public class MyClusterManagerRenderer extends DefaultClusterRenderer<ClusteredMarker> {
private final IconGenerator mIconGenerator;
private final ImageView mImageView;
public MyClusterManagerRenderer(Context context, GoogleMap googleMap,
ClusterManager<ClusteredMarker> clusterManager){
super(context, googleMap, clusterManager);
mIconGenerator = new IconGenerator(context);
mImageView = new ImageView(context);
mIconGenerator.setContentView(mImageView);
}
@Override
protected void onBeforeClusterItemRendered(ClusteredMarker item, MarkerOptions markerOptions) {
mImageView.setImageResource(item.iconPicture);
Bitmap icon = mIconGenerator.makeIcon();
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(item.user);
}
...
}
我尝试了几种方法让我的图标透明,比如调用:
mImageView.setBackgroundColor(Color.TRANSPARENT);
但没有成功。我设法找到解决方案的唯一方法是直接将透明图像附加到IconGenerator
,如下所示:
mIconGenerator.setBackground(aContext.getResources()getDrawable(R.drawable.ball));
这种方法的缺点是ImageView
有一些我想要调用的有趣方法,例如setPadding
,而IconGenerator
没有。{ / p>
那么,有没有办法让我的图标透明,使用ImageView
?
谢谢,
答案 0 :(得分:5)
我找到的解决方案是:
private static final Drawable TRANSPARENT_DRAWABLE = new ColorDrawable(Color.TRANSPARENT);
// Make the background of marker transparent
mIconGenerator.setBackground(TRANSPARENT_DRAWABLE);
答案 1 :(得分:0)
mImageView.setBackgroundColor(null);
这将删除背景并使其透明。 :)