У меня была проблема с моими пользовательскими маркерами, я хочу сделать их такими, как кластерные маркеры (группа производителей), но это не работает, я нашел все маркеры в Картах Google, поэтому даже я используюclusterManager для обработки этой ситуации Я не могу получить желаемый результат:
public MyClusterManagerRenderer(Context context, GoogleMap googleMap,
ClusterManager<ClusterMarker> clusterManager) {//initialize
}
@Override
protected void onBeforeClusterItemRendered(ClusterMarker item, MarkerOptions markerOptions) {
imageView.setImageResource(item.getIconPicture());
Bitmap icon = iconGenerator.makeIcon();
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(item.getTitle());
}
@Override
protected void onBeforeClusterRendered(Cluster<ClusterMarker> cluster,
MarkerOptions markerOptions) {
iconGenerator.setBackground(null);
Bitmap icon = iconGenerator.makeIcon(String.valueOf(cluster
.getSize()));
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon));
}
@Override
protected boolean shouldRenderAsCluster(Cluster cluster) {
return false;
}
в моем GoogleMapsFragment У меня был этот метод для рисования маркеров:
private void addMapMarkers(List<Place> places){
if(places != null && !places.isEmpty() && googleMap != null)
{
mClusterManager = new ClusterManager<ClusterMarker>(getActivity(), googleMap);
mClusterManagerRenderer = new MyClusterManagerRenderer(getActivity(),googleMap,mClusterManager);
mClusterManager.setRenderer(mClusterManagerRenderer);
for(Place p: places){
try{
ClusterMarker newClusterMarker = null;
if(p != null)
{
newClusterMarker = new ClusterMarker(new LatLng(Double.parseDouble(p.getLocation().getLat()),
Double.parseDouble (p.getLocation (). getLng ())), p.getName (), фрагмент, аватар, p);}
if (newClusterMarker != null)
{
mClusterManager.addItem(newClusterMarker);
mClusterMarkers.add(newClusterMarker);
}
}catch (NullPointerException e){
Log.e(TAG, "7 : "+"addMapMarkers: NullPointerException: " + e.getMessage() );
}
}
mClusterManager.cluster();
googleMap.moveCamera(prepareCameraForMap(places));
}
else
Log.e(TAG, "9 : Markers not drawed googleMap is null"); }