没有用户位置的android中的集群标记

时间:2017-02-22 10:12:53

标签: android google-maps google-maps-markers marker markerclusterer

我是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));

2 个答案:

答案 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,您的群集也会完成。希望它有所帮助。