小编Eri*_*all的帖子

使用 Googles android-maps-utils 禁用最大缩放级别的聚类

我正在使用android-maps-utils 中的聚类在 Android 中的 Google 地图上对标记进行聚类。我想在地图处于最大缩放级别时禁用聚类(即,如果地图处于最大缩放级别,则始终呈现单个 ClusterItems,否则群集正常)。

通过在扩展 DefaultClusterRenderer 的自定义类中对 shouldRenderAsCluster() 中的缩放级别进行测试,我几乎可以让它工作。但是,我的解决方案比实际缩放级别落后一步。例如,如果地图的最大缩放级别为 21,并且用户从级别 20 放大到级别 21,则 shouldRenderAsCluster 中的检查将获得当前缩放级别 20。如果用户然后缩小到级别 20,检查将获得第 21 级。 ClusterItems 像我想要的那样被渲染为单个项目,但是一个缩放操作为时已晚。

我从 DefaultClusterRenderer 中设置的变量 mZoom 中获得了“当前缩放”(显然不是真正的当前缩放)。

这是代码:

public class UserClusterRenderer extends PosMapDefaultClusterRenderer<UserClusterItem> {

    // ...

    @Override
    protected boolean shouldRenderAsCluster(Cluster cluster) {
        return mZoom < mMap.getMaxZoomLevel() && cluster.getSize() > 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

变量 mZoom 和 mMap 在 DefaultClusterRenderer 中设置。因为他们在那里有私有访问权限,所以我制作了一个名为 PosMapDefaultClusterRenderer 的 DefaultClusterRenderer 副本。唯一的区别是 mZoom 和 mMap 被声明为受保护的,因此它们可以在 UserClusterRenderer 中访问。

为什么 mZoom 会落后一个缩放操作?有没有办法获得正在渲染集群的真实缩放级别?

缩放是通过使用来自cameraPosition 的cameraUpdate 调用animateCamera 来完成的。 …

java android google-maps google-maps-android-api-2 android-maps-utils

4
推荐指数
2
解决办法
3515
查看次数