我是android中的聚类标记新手。我实现了ClusterItem并在ClusterManager中添加了所有其他标记[Hotels]和user maker。但问题是,当我没有将用户标记添加到ClusterManager时,它也不会聚集其他制造商。
我想要的是所有其他标记应该聚集期望用户制造商。请帮助我如何实现这一目标。
这就是我创建clustermanager的方式
clusterManager = new ClusterManager<ClusterItem>(this, mMap);
mMap.setOnCameraIdleListener(clusterManager);
mMap.setOnMarkerClickListener(clusterManager);
我正在添加clusterItem,就像我们一样
clusterManager.addItem(new ClusterItem(hotelsLocation));
答案 0 :(得分:0)
但问题是,当我没有将用户标记添加到ClusterManager时,它也不会聚集其他制造商。
你能说得更清楚吗?如果要动态添加或删除群集项,请使用
mClusterManager.addItem(item);
// mClusterManager.removeItem(item);
mClusterManager.cluster();
此处的cluster()方法意味着,只需添加/删除项目,请再次计算群集。
答案 1 :(得分:0)
像这样初始化clusterManager:
clusterManager = new ClusterManager<>(getActivity(), googleMap);
clusterManager.setRenderer(new OurClusterRenderer(getActivity(), googleMap, clusterManager));
googleMap.setOnCameraChangeListener(clusterManager);
googleMap.setOnMarkerClickListener(clusterManager);
googleMap.setOnInfoWindowClickListener(clusterManager);
googleMap.setInfoWindowAdapter(clusterManager.getMarkerManager());
googleMap.setOnInfoWindowClickListener(clusterManager);
然后添加您自己的标记(仅限酒店)并调用.cluster():
clusterManager.clearItems();
for (HotelModel hotelModel : hotelModelNearMeList) {
if (hotelModel.getPosition() != null) {
clusterManager.addItem(hotelModel);
}
}
clusterManager.cluster();
最后,如果您想添加用户标记:
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(new LatLng(location.getLatitude(),location.getLongitude()));
markerOptions.anchor(0.5f, 1);
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_mylocation));
googleMap.addMarker(markerOptions);
如果您按照此步骤操作,即使您没有添加任何UserMarker,您的群集也会完成。希望它有所帮助。