gpt4 book ai didi

android - (Google Maps Android 标记聚类实用程序) fragment 暂停时未删除聚类项目

转载 作者:行者123 更新时间:2023-11-30 02:19:48 25 4
gpt4 key购买 nike

我正在尝试实现 Google Maps Android 标记聚类实用程序。我遇到的问题是在最大缩放时重叠 ClusterItems。我对此的解决方案是:通过扩展 DefaultClusterRenderer 创建自定义渲染器。然后防止在最大缩放时聚类,接下来允许 ClusterItems 在最大缩放时可拖动(否则不允许拖动)。

       @Override
protected void onBeforeClusterItemRendered(MarkerList.Markers markers, MarkerOptions markerOptions) {

mImageView.setImageBitmap(getImage(markers));
Bitmap icon = mIconGenerator.makeIcon();
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(markers.getEntity().getPostType());

//allow user to drag overlapping ClusterItems to inspect individually
if(MAX_CAMERA_ZOOM <= cameraZoom){
markerOptions.draggable(true);
}else{
markerOptions.draggable(false);
}
}

@Override
protected boolean shouldRenderAsCluster(Cluster cluster) {

//Never render clusters at max zoom
if (MAX_CAMERA_ZOOM <= cameraZoom ) {
return false;
} else {
return cluster.getSize() > 2;
}
}

这将在我的手机上运行一段时间,然后聚类停止并且拖动的 ClusterItems 成为永久性的,以便显示的 ClusterItems 的数量增加(同一项目的许多副本在 map 上)。新拖动的 ClusterItems 不可点击,因此我认为它们只是未被删除的图标。谁能帮我找到解决办法?我猜我需要在拖动后以编程方式删除拖动的图标。尽管对解决我的问题的任何建议都将不胜感激。

最佳答案

看来问题是由 MapFragment 暂停和渲染器未删除 map 上额外的 ClusterItems 引起的。所以在 onPause 中调用 map.clear 似乎已经解决了额外的 ClusterItems 的问题。

@Override
public void onPause() {

//Clear lost ClusterItems
if (mMap != null) {
mMap.clear();
}

if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}

super.onPause();
mMapView.onPause();
}

这可行,但我不确定为什么项目会丢失,我猜这个问题与暂停 MapFragment 而不是拖动 ClusterItem 有关,所以我将更改标题以反射(reflect)这一点。

关于android - (Google Maps Android 标记聚类实用程序) fragment 暂停时未删除聚类项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28773524/

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