In MainActivity or Fragment :
private void loadDataOnMap(List<Place> placeList, final boolean isFromSearch) {
if (map != null) {
map.clear();
if (!isPagination) {
markerObjectList = new ArrayList<>();
CameraUpdate location = CameraUpdateFactory.newLatLngZoom(new LatLng(mLatitude, mLongitude), zoomLevel);
map.animateCamera(location);
}
for (int i = 0; i < placeList xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed> types = place.types;
String type = null;
if (types != null) {
for (int j = 0; j < types type = "restaurant" type = "cafe" type = "bar" type = "delivery" xss=removed xss=removed>(context, map);
map.setOnInfoWindowClickListener(mClusterManager);
map.setInfoWindowAdapter(mClusterManager.getMarkerManager());
mClusterManager.getMarkerCollection().setOnInfoWindowAdapter(
new MyCustomAdapterForItems());
map.setOnMarkerClickListener(mClusterManager);
mClusterManager
.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<MarkerObject>() {
@Override
public boolean onClusterItemClick(MarkerObject item) {
clickedClusterItem = item;
if (bottomSheetPeekHeight == initialPeekHeight) {
collapseBottomSheet();
}
showPlaceDetail(item);
return false;
}
});
map.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
CameraPosition position = map.getCameraPosition();
if (mPreviousCameraPosition == null || mPreviousCameraPosition.zoom != position.zoom) {
mPreviousCameraPosition = map.getCameraPosition();
mClusterManager.cluster();
}
}
});
mClusterManager.addItems(markerObjectList);
customIconRendered = new CustomIconRendered(context, map, mClusterManager);
mClusterManager.setRenderer(customIconRendered);
} else {
CommonUtil.showToast(context, context.getString(R.string.map_error));
}
CustomView Class:
public class MyCustomAdapterForItems implements GoogleMap.InfoWindowAdapter {
private final View myContentsView;
MyCustomAdapterForItems() {
myContentsView = getActivity().getLayoutInflater().inflate(
R.layout.map_info_layout, null);
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
@Override
public View getInfoWindow(final Marker marker) {
TextView tvTitle = ((TextView) myContentsView
.findViewById(R.id.map_title));
if (clickedClusterItem != null) {
tvTitle.setText(clickedClusterItem.getTitle());
}
return myContentsView;
}
}
CustomIconRendered for getting Icon :
public class CustomIconRendered extends DefaultClusterRenderer<MarkerObject> {
private Context context;
public CustomIconRendered(Context context, GoogleMap map,
ClusterManager<MarkerObject> clusterManager) {
super(context, map, clusterManager);
this.context = context;
}
@Override
protected void onBeforeClusterItemRendered(MarkerObject item, MarkerOptions markerOptions) {
/* IconGenerator iconGenerator = new IconGenerator(context);
iconGenerator.setColor(Color.CYAN);
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(iconGenerator.makeIcon(item.getTitle()))).
position(item.getPosition()).
anchor(iconGenerator.getAnchorU(), iconGenerator.getAnchorV());*/
markerOptions.icon(BitmapDescriptorFactory.fromResource(getMarkerIcon(item.getType())));
markerOptions.snippet(item.getSnippet());
markerOptions.title(item.getTitle());
super.onBeforeClusterItemRendered(item, markerOptions);
}
private int getMarkerIcon(String type) {
int id = 0;
if(type == null) {
return R.drawable.ic_restaurant_map;
}
switch (type) {
case "cafe" :
id = R.drawable.ic_cafe_map;
break;
case "delivery" :
id = R.drawable.ic_delivery_map;
break;
case "restaurant" :
id = R.drawable.ic_restaurant_map;
break;
case "bar" :
id = R.drawable.ic_bar_map;
break;
}
return id;
}
}
Add a code snippet to your website: www.paste.org