我在地图上使用了很多标记,如果缩小地图,将会有很多大标记遮挡其他地图对象的视图。我想要的是仅在缩放级别较小时才显示标记。我用了它,但是不起作用:
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.
}
}
});
我只想在缩放级别小于这张照片的情况下显示标记
答案 0 :(得分:1)
我建议您使用Marker Clustering
以下是所需步骤的摘要:
实施ClusterItem以表示地图上的标记。集群 item以LatLng对象的形式返回标记的位置, 可选的标题或摘录。
添加一个新的ClusterManager来将基于群集项(标记)分组 缩放级别。
您可以详细了解here
答案 1 :(得分:0)
我刚刚尝试了您的代码,它实际上可以工作。但是请注意,缩放级别8距离还很远。我在第二张屏幕截图中重新创建了该扇区,它的缩放级别实际上约为12。
还请注意,不建议使用OnCameraChangeListener,而应改用OnCameraMoveListener。
mMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
@Override
public void onCameraMove() {
CameraPosition cameraPosition = mMap.getCameraPosition();
for(Marker m:list){
m.setVisible(cameraPosition.zoom>8);
//8 here is your zoom level, you can set it as your need.
}
}
});