【问题标题】:Android map clustering is not working in specific conditionAndroid地图聚类在特定条件下不起作用
【发布时间】:2017-01-15 08:43:02
【问题描述】:

如果我在 onMapReady 中添加我的 clusterItem,如下所示

    @Override
    public void onMapReady(GoogleMap googleMap) {
        Log.d("CustomMapFragment","onMapReady");
        map = googleMap;
        map.getUiSettings().setAllGesturesEnabled(true);
        map.getUiSettings().setCompassEnabled(true);
        map.getUiSettings().setZoomGesturesEnabled(true);
        map.getUiSettings().setZoomControlsEnabled(true);

        mClusterManager.addItem(new MyMarker(23.748865, 90.411655, "a", new Resultset("112113","dsd")));
        mClusterManager.addItem(new MyMarker(23.749049, 90.411382, "b", new Resultset("112113","ddfdsd")));
        mClusterManager.addItem(new MyMarker(23.749129, 90.411088, "c", new Resultset("11211dsd3","dsd")));
        mClusterManager.addItem(new MyMarker(23.749241, 90.41068, "d", new Resultset("112113","fgdsd")));
        mClusterManager.addItem(new MyMarker(23.749183, 90.410257, "e", new Resultset("112113","qwdsd")));
    }

如果我在onMapReady 中添加一些集群,集群将按预期工作。但我会定期调用一个网络服务,它将集群项目添加到地图

UIUpdater mUIUpdater = new UIUpdater(new Runnable() {
    @Override
    public void run() {
       //running a web service 
        mClusterManager.addItem(new MyMarker(lat, longitude, memberListModel.get(i).getFirstName()+" "+ memberListModel.get(i).getLastName(), memberListModel.get(i)));
    }
}

调用周期性任务后,标记被添加到地图但没有聚类效果,即使我放大或缩小地图最初不可见标记,标记可见但没有聚类效果。

我添加了以下依赖项

compile "com.google.android.gms:play-services-maps:9.4.0"
compile "com.google.android.gms:play-services-location:9.4.0"
compile 'com.google.maps.android:android-maps-utils:0.4+'

在片段的onResume 中,我启动了周期性任务运行器并在onPause 中停止它

@Override
public void onResume() {
    super.onResume();
    mUIUpdater.startUpdates();

}

@Override
public void onPause() {
    super.onPause();
    mUIUpdater.stopUpdates();

}

如何将集群项添加到周期性任务运行器中的映射?

【问题讨论】:

  • 有点晚了,但我遇到了同样的问题。通过任何更改,您是否正在做类似的事情:mMap.addMarker(...) 除了mClusterManager.addItem(...)?如果是这样,请删除 addMaker ;)

标签: android google-maps markerclusterer


【解决方案1】:
public class TheClusterItem implements ClusterItem {
    ...
}

TheClusterItem item = new TheClusterItem(...);
mClusterManager.addItem(item); // or list of items
mClusterManager.cluster();

添加项目并调用集群方法后,集群将在适当的区域更新。

【讨论】:

  • 你是如何测试它的?这段代码来自我的项目,所以我还要添加/删除标记并尽快看到集群更新。
【解决方案2】:

添加集群项目后,您应该调用以下方法。

mClusterManager.clearItems();
mClusterManager.cluster();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2012-11-19
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多