Java android google maps集群,点击它们后更改标记中的图标

标签 java android google-maps

在我的应用程序中,我有很多要在谷歌地图中显示的点,所以我决定使用 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();
  }

最佳答案

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

The CustomMarkerClusteringDemoActivity defines its own cluster item, a Person, and renders it by extending the DefaultClusterRenderer as PersonRenderer.

You can also implement ClusterManager.OnClusterItemClickListener<Person> in a similar way.

他们还提供了 sample code更改 ClusterItem 的图标/图像。

关于Java android google maps集群,点击它们后更改标记中的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57902297/

相关文章:

java - outputStream.write 有缓冲区溢出吗?

android - 删除 fragment 时崩溃

javascript - Google Maps API - 无法在多个标记上设置多个 infoWindows

java - 单击其他任何位置时如何取消选择 JList?

java - 使用 Gradle : How to configure the webmodules if they are SNAPSHOT dependencies? 构建 EAR 文件

android - 建议为运行 jack 的 Gradle 守护程序使用更大的堆

google-maps - 谷歌地图 API : Calculate Center/Zoom of Polyline

javascript - 通过纬度和经度查询谷歌地图上已存在的标记,并以编程方式触发其上的点击事件

java - 为什么Java函数式接口(interface)作为参数通常使用逆变arg类型?

java - BaseExpandableListAdapter 以编程方式添加子项