ClusterManager setOnCameraIdleListener

Posted

技术标签:

【中文标题】ClusterManager setOnCameraIdleListener【英文标题】: 【发布时间】:2016-12-18 18:16:48 【问题描述】:

在尝试实现使用 ClusterManager 时,我注意到 getMap().setOnCameraChangeListener(clusterManager) 已被弃用。查看 Github 上的 android-maps-utils 示例,我注意到 getMap().setOnCameraIdleListener(mClusterManager);

当我尝试做同样的事情时,我收到一个错误,因为默认的 ClusterManager 类没有实现 GoogleMap.OnCameraIdleListener

然而,在我的 gradle 文件中,我使用的是最新的 maps-util 库:

dependencies 
    compile 'com.google.maps.android:android-maps-utils:0.4.3'

如何访问最新的ClusterManager 课程? 谢谢

【问题讨论】:

【参考方案1】:

代替:

mMap.setOnCameraChangeListener(mClusterManager);

这样做:

final CameraPosition[] mPreviousCameraPosition = null;
    googleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() 
        @Override
        public void onCameraIdle() 
            CameraPosition position = googleMap.getCameraPosition();
            if(mPreviousCameraPosition[0] == null || mPreviousCameraPosition[0].zoom != position.zoom) 
                mPreviousCameraPosition[0] = googleMap.getCameraPosition();
                clusterManager.cluster();
            
        
    );

这会起作用的......

【讨论】:

我们如何在集群管理器中为 setOnCameraMoveStartedListener 做同样的事情?【参考方案2】:

在 play-services-maps 9.4.0 版本的 API 之后,他们将 GoogleMap.OnCameraChangeListener 更改为这 3 个侦听器

GoogleMap.OnCameraMoveStartedListener,

GoogleMap.OnCameraMoveListener,

GoogleMap.OnCameraIdleListener.

【讨论】:

以上是关于ClusterManager setOnCameraIdleListener的主要内容,如果未能解决你的问题,请参考以下文章

从 ClusterManager 获取标记

使用 ClusterManager 时如何更新 Map 上的标记

ClusterManager onMarkerClickListener 用于非聚集标记

ClusterManager 重绘 Google maps v2 utils 的标记

ClusterManager OnClusterClickListener 未调用

来自 android:android-maps-utils 的 ClusterManager 已更改且不兼容