android中集群组的自定义图标

android中集群组的自定义图标,android,google-maps,marker,markerclusterer,Android,Google Maps,Marker,Markerclusterer,我想用我的可绘制图标更改defult群集组图标。 请检查我的群集程序代码 MyClusterRenderer.java public class MyClusterRenderer extends DefaultClusterRenderer<MyItem> { public MyClusterRenderer(Context context, GoogleMap map, Clus

我想用我的可绘制图标更改defult群集组图标。 请检查我的群集程序代码

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

          }


      }
公共类MyClusterRenderer扩展了DefaultClusterRenderer{
公共MyClusterRenderer(上下文、谷歌地图、,
群集管理器(群集管理器){
超级(上下文、地图、群集管理器);
}
@凌驾
在呈现BeforeClusterItem(MyItem项、MarkeOptions MarkeOptions)之前受保护的void{
super.onBeforeClusterItemRendered(项目、标记选项);
markerOptions.title(“”)图标(BitmapDescriptorFactory.fromResource(R.mipmap.location_两者));//用于标记
}
@凌驾
受保护的void onClusterItemRendered(最终MyItem clusterItem,标记){
super.onClusterItemRendered(聚类项目、标记);
}
}
在我的片段中为setup cluser编写代码

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

        googleMap.setOnMarkerClickListener(mClusterManager);
        googleMap.setOnCameraChangeListener(mClusterManager);
        readItems();
        mClusterManager.setRenderer(new MyClusterRenderer(getActivity(), googleMap, mClusterManager));
googleMap.clear();
mClusterManager=newclustermanager(getActivity(),googleMap);
setOnMarkerClickListener(mClusterManager);
谷歌地图;SetonCamerachenglistener(McClusterManager);
readItems();
setRenderer(新的MyClusterRenderer(getActivity(),googleMap,mClusterManager));

尝试在
onBeforeClusterRendered
方法中更改群集图标,而不是
onBeforeClusterItemRendered

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

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

}
@覆盖
在呈现群集之前受保护的void(群集群集、标记选项标记选项){
图标(BitmapDescriptorFactory.fromResource(R.mipmap.location_两者));
}
公共类MyClusterRenderer扩展了DefaultClusterRenderer{
专用最终IconGenerator mClusterIconGenerator=新IconGenerator(
getActivity());
公共MyClusterRenderer(上下文、谷歌地图、,
群集管理器(群集管理器){
超级(上下文、地图、群集管理器);
查看多功能文件=getActivity().GetLayoutFlater().inflate(
R.layout.cluster_custome_图标,空);
setContentView(多功能文件);
}
@凌驾
在呈现BeforeClusterItem(MyItem项、MarkeOptions MarkeOptions)之前受保护的void{
markerOptions.title(“”)图标(BitmapDescriptorFactory.fromResource(R.mipmap.location_两者));
super.onBeforeClusterItemRendered(项目、标记选项);
}
//@覆盖
//受保护的void onClusterItemRendered(最终MyItem clusterItem,标记){
//super.onClusterItemRendered(聚类项目、标记);
//
//        }
@凌驾
在ForeClusterRendered(群集,
标记选项(标记选项){
Log.e(“get_item_list_nir”、“CallMap onBeforeClusterRendered 13”);
试一试{
mclustericonggenerator.setBackground(空);
位图图标=mClusterIconGenerator.makeIcon(String.valueOf(cluster
.getSize());
图标(BitmapDescriptorFactory.fromBitmap(图标));
}捕获(例外e){
e、 printStackTrace();
Log.e(“get_item_list_nir”,“error 13.1:+e.toString());
}
Log.e(“get_item_list_nir”、“CallMap onBeforeClusterRendered 14”);
}
}
最好的方法是

         private val clusterIconGenerator = IconGenerator(context)

         override fun getDescriptorForCluster(cluster: Cluster<PromotionMarker>): BitmapDescriptor {
            clusterIconGenerator.setBackground(ContextCompat.getDrawable(context, R.drawable.background_marker))
            val icon: Bitmap = clusterIconGenerator.makeIcon(cluster.size.toString())
            return BitmapDescriptorFactory.fromBitmap(icon)
         }
private val clusterIconGenerator=IconGenerator(上下文)
重写getDescriptorForCluster(群集:群集):BitmapDescriptor{
clusterIconGenerator.setBackground(ContextCompat.getDrawable(context,R.drawable.background_标记))
val icon:Bitmap=clusterIconGenerator.makeIcon(cluster.size.toString())
返回BitmapDescriptorFactory.fromBitmap(图标)
}

太棒了!使用您的代码,很容易为集群生成任何图标。谢谢非常感谢你的回答!onBeforeClusterRendered在我的代码中被调用,但没有更改图标(这很奇怪,因为这在本项目中的另外两个ClusterRenderer中也可以使用)。相反,使用getDescriptorForCluster使其工作得非常完美!
         private val clusterIconGenerator = IconGenerator(context)

         override fun getDescriptorForCluster(cluster: Cluster<PromotionMarker>): BitmapDescriptor {
            clusterIconGenerator.setBackground(ContextCompat.getDrawable(context, R.drawable.background_marker))
            val icon: Bitmap = clusterIconGenerator.makeIcon(cluster.size.toString())
            return BitmapDescriptorFactory.fromBitmap(icon)
         }