Java android谷歌地图群集,点击后更改标记中的图标

Java android谷歌地图群集,点击后更改标记中的图标,java,android,google-maps,Java,Android,Google Maps,在我的应用程序中,我在谷歌地图中有很多点要显示,所以我决定使用ClusterManager。我想更改一个ClusterItem上的图标(我单击了该图标),我想知道如何做到这一点: @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mClusterManager = new ClusterManager<>(this, mMap); final Custom

在我的应用程序中,我在谷歌地图中有很多点要显示,所以我决定使用ClusterManager。我想更改一个ClusterItem上的图标(我单击了该图标),我想知道如何做到这一点:

  @Override public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    mClusterManager = new ClusterManager<>(this, mMap);

    final CustomClusterRenderer renderer = new CustomClusterRenderer(this, mMap, mClusterManager);

    mClusterManager.setRenderer(renderer);

    mClusterManager.setOnClusterClickListener(
        new ClusterManager.OnClusterClickListener<StringClusterItem>() {
          @Override public boolean onClusterClick(Cluster<StringClusterItem> cluster) {
            Toast.makeText(MapsActivity.this, "Cluster click", Toast.LENGTH_SHORT).show();
            return false;
          }
        });

    mClusterManager.setOnClusterItemClickListener(
        new ClusterManager.OnClusterItemClickListener<StringClusterItem>() {
          @Override public boolean onClusterItemClick(StringClusterItem clusterItem) {
            Toast.makeText(MapsActivity.this, "Cluster item click", Toast.LENGTH_SHORT).show();
            return false;
          }
        });

    mClusterManager.setOnClusterItemInfoWindowClickListener(
        new ClusterManager.OnClusterItemInfoWindowClickListener<StringClusterItem>() {
          @Override public void onClusterItemInfoWindowClick(StringClusterItem stringClusterItem) {
            Toast.makeText(MapsActivity.this, "Clicked info window: " + stringClusterItem.title,
                Toast.LENGTH_SHORT).show();
          }
        });

    mMap.setOnInfoWindowClickListener(mClusterManager);
    mMap.setInfoWindowAdapter(mClusterManager.getMarkerManager());
    mMap.setOnCameraChangeListener(mClusterManager);
    mMap.setOnMarkerClickListener(mClusterManager);

    for (int i = 0; i < 10; i++) {
      final LatLng latLng = new LatLng(-34 + i, 151 + i);
      mClusterManager.addItem(new StringClusterItem("Marker #" + (i + 1), latLng));
    }
      mClusterManager.addItem(new StringClusterItem("Marker #" + (10 + 1), new LatLng(-34+11 , 151 +11),true));

    mClusterManager.cluster();
  }
我这样做:

  @Override public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    mClusterManager = new ClusterManager<>(this, mMap);

    final CustomClusterRenderer renderer = new CustomClusterRenderer(this, mMap, mClusterManager);

    mClusterManager.setRenderer(renderer);

    mClusterManager.setOnClusterClickListener(
        new ClusterManager.OnClusterClickListener<StringClusterItem>() {
          @Override public boolean onClusterClick(Cluster<StringClusterItem> cluster) {
            Toast.makeText(MapsActivity.this, "Cluster click", Toast.LENGTH_SHORT).show();
            return false;
          }
        });

    mClusterManager.setOnClusterItemClickListener(
        new ClusterManager.OnClusterItemClickListener<StringClusterItem>() {
          @Override public boolean onClusterItemClick(StringClusterItem clusterItem) {
            Toast.makeText(MapsActivity.this, "Cluster item click", Toast.LENGTH_SHORT).show();
            return false;
          }
        });

    mClusterManager.setOnClusterItemInfoWindowClickListener(
        new ClusterManager.OnClusterItemInfoWindowClickListener<StringClusterItem>() {
          @Override public void onClusterItemInfoWindowClick(StringClusterItem stringClusterItem) {
            Toast.makeText(MapsActivity.this, "Clicked info window: " + stringClusterItem.title,
                Toast.LENGTH_SHORT).show();
          }
        });

    mMap.setOnInfoWindowClickListener(mClusterManager);
    mMap.setInfoWindowAdapter(mClusterManager.getMarkerManager());
    mMap.setOnCameraChangeListener(mClusterManager);
    mMap.setOnMarkerClickListener(mClusterManager);

    for (int i = 0; i < 10; i++) {
      final LatLng latLng = new LatLng(-34 + i, 151 + i);
      mClusterManager.addItem(new StringClusterItem("Marker #" + (i + 1), latLng));
    }
      mClusterManager.addItem(new StringClusterItem("Marker #" + (10 + 1), new LatLng(-34+11 , 151 +11),true));

    mClusterManager.cluster();
  }
@在mapready(谷歌地图谷歌地图)上覆盖公共空白{
mMap=谷歌地图;
mClusterManager=newclustermanager(这个,mMap);
最终CustomClusterRenderer渲染器=新的CustomClusterRenderer(此、mMap、McClusterManager);
setRenderer(渲染器);
mClusterManager.setOnClusterClickListener(
新建ClusterManager.OnClusterClickListener(){
@重写公共布尔onClusterClick(群集){
Toast.makeText(MapsActivity.this,“集群单击”,Toast.LENGTH_SHORT.show();
返回false;
}
});
mClusterManager.setOnClusterItemClickListener(
新建ClusterManager.OnClusterItemClickListener(){
@重写公共布尔值onClusterItemClick(StringClusterItem clusterItem){
Toast.makeText(MapsActivity.this,“集群项目单击”,Toast.LENGTH_SHORT.show();
返回false;
}
});
mClusterManager.SetOnClusterItemInfo窗口单击侦听器(
新建ClusterManager.onClusterItemInfo窗口ClickListener(){
@在ClusterItemInFoWindowClick(StringClusterItem StringClusterItem)上重写公共void{
Toast.makeText(MapsActivity.this,“单击信息窗口:”+stringClusterItem.title,
吐司。长度(短)。show();
}
});
mMap.setOnInfoWindowClickListener(mClusterManager);
setInfoWindowAdapter(mClusterManager.getMarkerManager());
mMap.SetonCamerachenglistener(McClusterManager);
mMap.setOnMarkerClickListener(mClusterManager);
对于(int i=0;i<10;i++){
最终车床=新车床(-34+i,151+i);
addItem(新的StringClusterItem(“Marker#“+(i+1),latLng));
}
addItem(新StringClusterItem(“Marker#“+(10+1),新LatLng(-34+11151+11),true));
mClusterManager.cluster();
}
如果您查看他们提到的自定义标记簇

CustomMarkerClusteringDemoActivity定义自己的集群项,即 Person,并通过将DefaultClusterRenderer扩展为 人格呈现者

您还可以以类似的方式实现
ClusterManager.OnClusterItemClickListener

他们还提供了更改ClusterItem的图标/图像的功能。

如果您查看他们提到的自定义标记群集

CustomMarkerClusteringDemoActivity定义自己的集群项,即 Person,并通过将DefaultClusterRenderer扩展为 人格呈现者

您还可以以类似的方式实现
ClusterManager.OnClusterItemClickListener

他们还提供了更改ClusterItem的图标/图像的功能