gpt4 book ai didi

Android:Google Maps Clustermanager 行为异常。群集图标有时在完全缩放时不会消失。为什么?

转载 作者:行者123 更新时间:2023-11-29 15:08:57 26 4
gpt4 key购买 nike

我编写了以下方法来显示我的标记(集群)。然而,一些集群工作正常 - 即当我放大时,蓝色集群图标(表示 10+ for ex)消失并显示各个标记。但是,有时,当我完全放大时,蓝色群集标记仍然与单个标记之一一起显示在完全缩放中。为什么会这样?

private void displayCluster(List<MyItem> items) {

mClusterManager = new ClusterManager<MyItem>(this, googleMap);
mClusterManager.setRenderer(new MyRender(getApplicationContext(),googleMap,mClusterManager));

googleMap.setOnCameraChangeListener(mClusterManager);
googleMap.setOnMarkerClickListener(mClusterManager);

for (MyItem item : items) {
mClusterManager.addItem(item);
}
}

最佳答案

DefaultClusterRenderer 决定是否应该对标记进行聚类。此类包含 DefaultClusterRenderer#shouldRenderAsCluster() 方法 - 其中仅当集群大小 > MIN_CLUSTER_SIZE 时才开始聚类。 MIN_CLUSTER_SIZE 的默认值为 4。

您需要扩展 DefaultClusterRenderer 类并覆盖 shouldRenderAsCluster() 方法以提供您自己的逻辑:

class CustomRenderer<T extends ClusterItem> extends DefaultClusterRenderer<T>
{
public CustomRenderer(Context context, GoogleMap map, ClusterManager<T> clusterManager) {
super(context, map, clusterManager);
}

@Override
protected boolean shouldRenderAsCluster(Cluster<T> cluster) {
//start clustering if at least 2 items overlap
//Change your logic here
return cluster.getSize() > 1;
}
}

private void setUpMapIfNeeded() {
if (mMap != null) {
return;
}
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
if (mMap != null) {
mClusterManager = new ClusterManager<Place>(this, mMap);
mClusterManager.setRenderer(new CustomRenderer<Place>(this, mMap, mClusterManager));
........
}
}

关于Android:Google Maps Clustermanager 行为异常。群集图标有时在完全缩放时不会消失。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33991981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com