Marcador personalizado con GMUClusterManager

Quiero mostrar marcador personalizado usando GMUClusterManager . Seguí todos los pasos para la agrupación de marcadores aquí .

pero hay un icono de color azul y rojo como este. introduzca la descripción de la imagen aquí

Pero cuando hago Zoom en ese map, solo muestra el marcador de color rojo, pero no quiero eso.

Hay un método de instancia donde implementé mi lógica pero no uso.

  - (instancetype)initWithMapView:(GMSMapView *)mapView clusterIconGenerator:(id<GMUClusterIconGenerator>)iconGenerator { if ((self = [super init])) { GMSMarker *marker= [GMSMarker markerWithPosition:CLLocationCoordinate2DMake(24.0, 75.30)]; UIView *customMarker =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 63, 40)]; customMarker.backgroundColor = [UIColor blueColor]; marker.iconView = [self EmployeeMarker:0] ; marker.appearAnimation = kGMSMarkerAnimationPop; marker.map = mapView; } return self; } -(UIView *)EmployeeMarker:(int)labelTextInt{ UIView *customMarker =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 63, 40)]; UIImageView *imgViewCustomMarker = [[UIImageView alloc]initWithFrame:CGRectMake(0, 15, 24, 25)]; imgViewCustomMarker.image = [UIImage imageNamed:@"iconMapUser.png"]; [customMarker addSubview:imgViewCustomMarker]; UIView *viewRatingCustom = [[UIView alloc] initWithFrame:CGRectMake(15, 0, 40, 15)]; viewRatingCustom.backgroundColor = [UIColor colorWithRed:192.0/255.0 green:192.0/255.0 blue:192.0/255.0 alpha:1.0]; UILabel *lblRatingEmployees = [[UILabel alloc] initWithFrame:CGRectMake(8, 1, 17,8)]; lblRatingEmployees.textColor = [UIColor colorWithRed:0.00/255.0 green:100.0/255.0 blue:150.0/255.0 alpha:1.0]; lblRatingEmployees.text = @"1"; lblRatingEmployees.font = [UIFont fontWithName:@"Helvetica-Bold" size:10]; [lblRatingEmployees sizeToFit]; [viewRatingCustom addSubview:lblRatingEmployees]; UIImageView *imageViewStar = [[UIImageView alloc] initWithFrame:CGRectMake(25, 3, 10, 8)]; imageViewStar.image = [UIImage imageNamed:@"iconBlueStar.png"]; [viewRatingCustom addSubview:imageViewStar]; [customMarker addSubview:viewRatingCustom]; return customMarker; } 

He utilizado este método para mostrar el número posible de marcador que es por defecto de color rojo.

 id<GMUClusterAlgorithm> algorithm = [[GMUNonHierarchicalDistanceBasedAlgorithm alloc] init]; id<GMUClusterIconGenerator> iconGenerator = [[GMUDefaultClusterIconGenerator alloc] init]; id<GMUClusterRenderer> renderer = [[GMUDefaultClusterRenderer alloc] initWithMapView:_mapView clusterIconGenerator:iconGenerator]; _clusterManager = [[GMUClusterManager alloc] initWithMap:_mapView algorithm:algorithm renderer:renderer]; // Generate and add random items to the cluster manager. // [self generateClusterItems]; for (int i = 0; i<latitudeArray.count; i++) { id<GMUClusterItem> item = [[POIItem alloc]initWithPosition:CLLocationCoordinate2DMake([[latitudeArray objectAtIndex:i]doubleValue], [[longitudeArray objectAtIndex:i]doubleValue]) name:@"Name"]; [_clusterManager addItem:item]; } 

Delegados de Adde y también método de cluster.

  [_clusterManager cluster]; [_clusterManager setDelegate:self mapDelegate:self]; 

Entonces, por favor, ayúdame a agregar un marcador personalizado en lugar de rojo que está en defecto.

GMUClusterIconGenerator crear una class personalizada, que cumple con el protocolo GMUClusterIconGenerator :

Archivo CustomClusterIconGenerator.h

 @interface CustomClusterIconGenerator : NSObject <GMUClusterIconGenerator> @end 

Archivo CustomClusterIconGenerator.m

 @implementation CustomClusterIconGenerator - (UIImage *)iconForSize:(NSUInteger)size { // Return custom icon for cluster return [UIImage imageNamed:@"Your Custom Cluster Image"]; } - (UIImage *)iconForMarker { // Return custom icon for pin return [UIImage imageNamed:@"Your Custom Marker Image"]; } - (CGPoint)markerIconGroundAnchor { // If your marker icon center shifted, return custom value for anchor return CGPointMake(0, 0); } - (CGPoint)clusterIconGroundAnchor { // If your cluster icon center shifted, return custom value for anchor return CGPointMake(0, 0); } @end 

y luego, en lugar de

 id<GMUClusterIconGenerator> iconGenerator = [[GMUDefaultClusterIconGenerator alloc] init]; 

utilizar

 CustomClusterIconGenerator *iconGenerator = [[GMUDefaultClusterIconGenerator alloc] init]; 

Aquí hay un ejemplo de mi proyecto: introduzca la descripción de la imagen aquí

Es posible que desee consultar el tutorial: Clustering de marcadores con la biblioteca de Google Utility para Maps SDK (Google-Maps-iOS-Utils) , este es un ejemplo perfecto de las cosas que desea implementar en su aplicación. También hay códigos de ejemplo de Google del blog que quizás quieras probar. Por último, se publicó un problema en github sobre cómo personalizar los marcadores individuales agregados al administrador de clústeres. , podría ayudarlo a comprender cómo personalizar los marcadores en GMUClusterManager. Espero que esto ayude.