简体   繁体   English

Java android google maps clustering,单击标记后更改标记中的图标

[英]Java android google maps clustering , change icon in marker after click on them

In my application I have a lot of points to show in google maps so I decided to use a ClusterManager. 在我的应用程序中,我有很多要显示在Google地图中的要点,因此我决定使用ClusterManager。 I want to change icon on one ClusterItem (which I clicked) it is any idea how I can do this : 我想更改一个ClusterItem(单击我)上的图标,这是我能做到的任何想法:

I do this : 我这样做:

  @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();
  }

If you look at the doc they've mentioned Customize the marker clusters . 如果您查看该文档,他们会提到自定义标记群集

The CustomMarkerClusteringDemoActivity defines its own cluster item, a Person, and renders it by extending the DefaultClusterRenderer as PersonRenderer. CustomMarkerClusteringDemoActivity定义其自己的群集项目Person,并通过将DefaultClusterRenderer扩展为PersonRenderer来呈现它。

You can also implement ClusterManager.OnClusterItemClickListener<Person> in a similar way. 您也可以以类似方式实现ClusterManager.OnClusterItemClickListener<Person>

They've also provided sample code to change the icon/image of the ClusterItem. 他们还提供了示例代码来更改ClusterItem的图标/图像。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM