首页 > 解决方案 > 如何根据地图的缩放级别显示标记

问题描述

我在地图中使用了很多标记,如果我缩小,会有很多大标记挡住了其他地图对象的视图。我想要的是仅在缩放级别很小时才显示标记。我用了这个,但它不起作用:

final List<Marker> list = new ArrayList<>();

        final Marker marker = mMap.addMarker(new MarkerOptions()
                .position(latLng)
                .icon(markerIcon)
                .title(title));

        list.add(marker);


        mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
            @Override
            public void onCameraChange(CameraPosition cameraPosition) {
                for(Marker m:list){

                    m.setVisible(cameraPosition.zoom>8);
                    //8 here is your zoom level, you can set it as your need.
                }


            }
        });

我只想在缩放级别小于这张照片时显示标记

在此处输入图像描述

如果缩放是这样的,则禁用它们 在此处输入图像描述

标签: androidgoogle-maps

解决方案


我建议你使用Marker Clustering

在此处输入图像描述

以下是所需步骤的摘要:

  1. 实现 ClusterItem 以表示地图上的标记。集群项将标记的位置作为 LatLng 对象以及可选的标题或片段返回。

  2. 添加一个新的 ClusterManager 以根据缩放级别对集群项目(标记)进行分组。

  3. 将地图的 OnCameraIdleListener() 设置为 ClusterManager,因为 ClusterManager 实现了监听器。
  4. 如果要添加特定功能以响应标记单击事件,请将地图的 OnMarkerClickListener() 设置为 ClusterManager,因为 ClusterManager 实现了侦听器。
  5. 将标记输入 ClusterManager。

你可以在这里阅读更多关于它的信息


推荐阅读