Android Google Map IconGenerator - 制作透明标记图标

时间:2015-08-22 17:34:01

标签: android google-maps-android-api-2 markerclusterer

所以我使用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

谢谢,

2 个答案:

答案 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);

这将删除背景并使其透明。 :)