2016-03-21 3 views

答えて

0

ClusterRendererを実装すると、クラスタのレンダリングをカスタマイズできます。 DefaultClusterRendererは、開始するための良い基盤を提供します。 DefaultClusterRendererをサブクラス化することにより、デフォルトをオーバーライドすることができます。

カスタマイズの詳細な例については、ユーティリティライブラリに同梱されているdemo appのCustomMarkerClusteringDemoActivityを参照してください。活動の

Source

4
public class MyClusterItemRenderer extends DefaultClusterRenderer<MyClusterItem> { 

    private final IconGenerator mIconGenerator; 
    private final ShapeDrawable mColoredCircleBackground; 
    private final float mDensity; 

    private SparseArray<BitmapDescriptor> mIcons = new SparseArray(); 

    public MyClusterItemRenderer(Context context, GoogleMap map, ClusterManager<MyClusterItem> clusterManager) { 
     super(context, map, clusterManager); 
     mIconGenerator = new IconGenerator(context); 
     mColoredCircleBackground = new ShapeDrawable(new OvalShape()); 
     mDensity = context.getResources().getDisplayMetrics().density; 

     SquareTextView squareTextView = new SquareTextView(context); 
     ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(-2, -2); 
     squareTextView.setLayoutParams(layoutParams); 
     squareTextView.setId(com.google.maps.android.R.id.text); 
     int twelveDpi = (int)(12.0F * this.mDensity); 
     squareTextView.setPadding(twelveDpi, twelveDpi, twelveDpi, twelveDpi); 
     this.mIconGenerator.setContentView(squareTextView); 

     mIconGenerator.setTextAppearance(com.google.maps.android.R.style.ClusterIcon_TextAppearance); 

     ShapeDrawable outline = new ShapeDrawable(new OvalShape()); 
     outline.getPaint().setColor(Color.parseColor("#FFFFFF")); 
     LayerDrawable background = new LayerDrawable(new Drawable[]{outline, this.mColoredCircleBackground}); 
     int strokeWidth = (int) (this.mDensity * 3.0F); 
     background.setLayerInset(1, strokeWidth, strokeWidth, strokeWidth, strokeWidth); 
     mIconGenerator.setBackground(background); 

    } 



    @Override 
    protected void onBeforeClusterRendered(Cluster<MyClusterItem> cluster, MarkerOptions markerOptions) { 
     int bucket = this.getBucket(cluster); 
     BitmapDescriptor descriptor = (BitmapDescriptor)this.mIcons.get(bucket); 
     if(descriptor == null) { 
      this.mColoredCircleBackground.getPaint().setColor(this.getColor(bucket)); 
      descriptor = BitmapDescriptorFactory.fromBitmap(this.mIconGenerator.makeIcon(String.valueOf(cluster.getSize()))); 
      this.mIcons.put(bucket, descriptor); 
     } 

     markerOptions.icon(descriptor); 
    } 
} 

clusterManager.setRenderer(new MyClusterItemRenderer(getApplicationContext(), mGoogleMap, clusterManager)); 
関連する問題