Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Google API ClusterManager自定义项呈现_Java_Android_Google Maps - Fatal编程技术网

Java Google API ClusterManager自定义项呈现

Java Google API ClusterManager自定义项呈现,java,android,google-maps,Java,Android,Google Maps,在这里输入code我需要在谷歌地图上显示标记的集群。 我有自定义对象: public class PostClusterItem implements ClusterItem { private final LatLng mPosition; BitmapDescriptor icon; String title; String desc; } 我想传给俱乐部经理。 我从服务器接收对象集,并在回调中解析它们: @Override public void onAllPostsLoaded(L

在这里输入code
我需要在谷歌地图上显示标记的集群。 我有自定义对象:

public class PostClusterItem implements ClusterItem {

private final LatLng mPosition;
BitmapDescriptor icon;
String title;
String desc;
}
我想传给俱乐部经理。 我从服务器接收对象集,并在回调中解析它们:

 @Override
public void onAllPostsLoaded(List<Post> postList) {
    mClusterManager = new ClusterManager<PostClusterItem>(getActivity(), googleMap);
    mClusterManager.clearItems();
    googleMap.setOnCameraChangeListener(mClusterManager);
    googleMap.setOnMarkerClickListener(mClusterManager);
    for (Post post : postList) {
        addMarkers(post);
    }
    mClusterManager.setRenderer(new CustomClusterRenderer(getActivity(), googleMap, mClusterManager));
}
但我不知道原因,clusterManager工作不好:

标记没有正确添加到集群中,我可以了解下一种情况:

但当我在某个简单对象上测试时,这种情况并不存在:

public class MyItem implements ClusterItem {
    private final LatLng mPosition;

    public MyItem(double lat, double lng) {
        mPosition = new LatLng(lat, lng);
    }
} 
这是什么原因呢

这是我的
CustomClusterRenderer

public class CustomClusterRenderer extends DefaultClusterRenderer<PostClusterItem> {

    public CustomClusterRenderer(Context context, GoogleMap map,
                       ClusterManager<PostClusterItem> clusterManager) {
        super(context, map, clusterManager);
    }


        protected void onBeforeClusterItemRendered(PostClusterItem item, MarkerOptions markerOptions) {
            super.onBeforeClusterItemRendered(item, markerOptions);
            markerOptions.snippet(item.getDesc());
            markerOptions.title(item.getTitle());

        }
    }
公共类CustomClusterRenderer扩展了DefaultClusterRenderer{
公共CustomClusterRenderer(上下文、Google地图、,
群集管理器(群集管理器){
超级(上下文、地图、群集管理器);
}
呈现前群集项(后群集项、标记选项标记选项)时受保护的空{
super.onBeforeClusterItemRendered(项目、标记选项);
markerOptions.snippet(item.getDesc());
markerOptions.title(item.getTitle());
}
}

也许已经太晚了,但一定要打电话

mClusterManager.cluster();
添加项目之后

以下是ClusterManager的源代码:

以下是一些解释:

/**
 * Force a re-cluster. You may want to call this after adding new item(s).
 */
public void cluster() {
...

也许已经太晚了,但要经常打电话

mClusterManager.cluster();
添加项目之后

以下是ClusterManager的源代码:

以下是一些解释:

/**
 * Force a re-cluster. You may want to call this after adding new item(s).
 */
public void cluster() {
...

那么您的
CustomClusterRenderer
类呢?您可以使用
DefaultClusterRenderer
进行测试吗?实际上,群集需要在附近位置至少有五个标记才能将它们显示为群集是的,正好是五个。但是,正如你从第一张图片中看到的,在圆圈的中心是5号。是的,它与DefaultClusterRenderer@RikkiTikkiTavi因此,发布
CustomClusterRenderer
的代码以获取更多帮助;)那么您的
CustomClusterRenderer
类呢?您可以使用
DefaultClusterRenderer
进行测试吗?实际上,群集需要在附近位置至少有五个标记才能将它们显示为群集是的,正好是五个。但是,正如你从第一张图片中看到的,在圆圈的中心是5号。是的,它与DefaultClusterRenderer@RikkiTikkiTavi因此,发布
CustomClusterRenderer
的代码以获取更多帮助;)