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
的代码以获取更多帮助;)