2017-04-24 51 views
1

我想用我的可繪製圖標更改defult集羣組圖標。 請檢查我的代碼是否有集羣程序。在android中集羣組的自定義圖標

MyClusterRenderer.java

public class MyClusterRenderer extends DefaultClusterRenderer<MyItem> { 

      public MyClusterRenderer(Context context, GoogleMap map, 
            ClusterManager<MyItem> clusterManager) { 
       super(context, map, clusterManager); 

      } 

      @Override 
      protected void onBeforeClusterItemRendered(MyItem item, MarkerOptions markerOptions) { 
       super.onBeforeClusterItemRendered(item, markerOptions); 

markerOptions.title("").icon(BitmapDescriptorFactory.fromResource(R.mipmap.location_both));// for marker 
     } 

      @Override 
      protected void onClusterItemRendered(final MyItem clusterItem, Marker marker) { 
       super.onClusterItemRendered(clusterItem, marker); 

      } 


     } 

代碼在我的片段設置cluser

googleMap.clear(); 
     mClusterManager = new ClusterManager<MyItem>(getActivity(), googleMap); 

     googleMap.setOnMarkerClickListener(mClusterManager); 
     googleMap.setOnCameraChangeListener(mClusterManager); 
     readItems(); 
     mClusterManager.setRenderer(new MyClusterRenderer(getActivity(), googleMap, mClusterManager)); 

回答

1

嘗試更改onBeforeClusterRendered方法,而不是onBeforeClusterItemRendered集羣圖標:

@Override 
protected void onBeforeClusterRendered(Cluster<MyItem> cluster, MarkerOptions markerOptions) { 

    markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.location_both)); 

} 
1
public class MyClusterRenderer extends DefaultClusterRenderer<MyItem> { 
     private final IconGenerator mClusterIconGenerator = new IconGenerator(
       getActivity()); 
     public MyClusterRenderer(Context context, GoogleMap map, 
           ClusterManager<MyItem> clusterManager) { 
      super(context, map, clusterManager); 


      View multiProfile = getActivity().getLayoutInflater().inflate(
        R.layout.cluster_custome_icon, null); 
      mClusterIconGenerator.setContentView(multiProfile); 
     } 

     @Override 
     protected void onBeforeClusterItemRendered(MyItem item, MarkerOptions markerOptions) { 

     markerOptions.title("").icon(BitmapDescriptorFactory.fromResource(R.mipmap.location_both)); 

      super.onBeforeClusterItemRendered(item, markerOptions); 
     } 

//  @Override 
//  protected void onClusterItemRendered(final MyItem clusterItem, Marker marker) { 
//   super.onClusterItemRendered(clusterItem, marker); 
// 
//  } 
     @Override 
     protected void onBeforeClusterRendered(Cluster<MyItem> cluster, 
               MarkerOptions markerOptions) { 

      Log.e("get_item_list_nir", "CallMap onBeforeClusterRendered 13"); 
      try { 
       mClusterIconGenerator.setBackground(null); 
       Bitmap icon = mClusterIconGenerator.makeIcon(String.valueOf(cluster 
         .getSize())); 
       markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       Log.e("get_item_list_nir", "error 13.1 : " + e.toString()); 
      } 
      Log.e("get_item_list_nir", "CallMap onBeforeClusterRendered 14"); 
     } 
    } 
+1

太棒了!使用你的代碼,很容易爲集羣生成任何圖標。謝謝! – iramm