android - 如何根据地图的缩放级别显示标记
问题描述
我在地图中使用了很多标记,如果我缩小,会有很多大标记挡住了其他地图对象的视图。我想要的是仅在缩放级别很小时才显示标记。我用了这个,但它不起作用:
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.
}
}
});
我只想在缩放级别小于这张照片时显示标记
解决方案
我建议你使用Marker Clustering
以下是所需步骤的摘要:
实现 ClusterItem 以表示地图上的标记。集群项将标记的位置作为 LatLng 对象以及可选的标题或片段返回。
添加一个新的 ClusterManager 以根据缩放级别对集群项目(标记)进行分组。
- 将地图的 OnCameraIdleListener() 设置为 ClusterManager,因为 ClusterManager 实现了监听器。
- 如果要添加特定功能以响应标记单击事件,请将地图的 OnMarkerClickListener() 设置为 ClusterManager,因为 ClusterManager 实现了侦听器。
- 将标记输入 ClusterManager。
你可以在这里阅读更多关于它的信息
推荐阅读
- angular - 如何使用 Angular HTTP 而不是 Ionic Native HTTP
- c++ - 这个特定的代码是如何在 C++14 中处理的
- c# - 限制数据表的大小 C#
- java - 如何拖放而不显示我正在拖动的图片?
- python - 将 Pandas 系列转换为分类
- python - 图像压缩后得到的灰度图
- java - JPA 查询——我不想通过 @Query
- ms-access - MS ACCESS webbrowser 控制文件预览无法正常工作
- python - 使用 ndimage.interpolation.affine_transform 进行矩阵转换
- haskell - 这个 Haskell 代码在多大程度上满足了这个规范?