2

Я использую ниже код для marker clustering (для создания значка кластера с ведрами), используя Google map sdk,Как показать точное количество кластерных маркеров на карте google?

id<GMUClusterIconGenerator> iconGenerator = [[GMUDefaultClusterIconGenerator alloc]initWithBuckets:@[@10,@50,@100,@500] backgroundImages:@[cluster1,cluster2,cluster3,cluster4]]; 

Это кластеризацию маркеров должным образом, но это показывает 10+ или 50+ номера на карте. Например, если число маркеров 35, то оно отображает 10+ на карте, когда количество маркеров превышает 50, тогда оно отображает 50+ и т. Д. (См. Скриншот ниже). Я хочу показать exact number of markers на кластере Изображение на карте !! Я имею в виду, если число маркеров 36, тогда я хочу 36 вместо 10+. Если кто-то может помочь!

Скриншот:

enter image description here

Ссылка: marker-clustering!!

ответ

3

Мы можем управлять путем изменения одного метода GMUDefaultClusterIconGenerator класса.

В GMUDefaultClusterIconGenerator.m заменить ниже метод,

- (UIImage *)iconForSize:(NSUInteger)size { 
    NSUInteger bucketIndex = [self bucketIndexForSize:size]; 
    NSString *text; 

    // If size is smaller to first bucket size, use the size as is otherwise round it down to the 
    // nearest bucket to limit the number of cluster icons we need to generate. 
    if (size < _buckets[0].unsignedLongValue) { 
    text = [NSString stringWithFormat:@"%ld", (unsigned long)size]; 
    } else { 
    text = [NSString stringWithFormat:@"%ld+", _buckets[bucketIndex].unsignedLongValue]; 
    } 
    if (_backgroundImages != nil) { 
    UIImage *image = _backgroundImages[bucketIndex]; 
    return [self iconForText:text withBaseImage:image]; 
} 
    return [self iconForText:text withBucketIndex:bucketIndex]; 
} 

с

- (UIImage *)iconForSize:(NSUInteger)size { 
    NSUInteger bucketIndex = [self bucketIndexForSize:size]; 
    NSString *text; 

    // If size is smaller to first bucket size, use the size as is otherwise round it down to the 
    // nearest bucket to limit the number of cluster icons we need to generate. 
    if (size < _buckets[0].unsignedLongValue) { 
    text = [NSString stringWithFormat:@"%ld", (unsigned long)size]; 
    } 


    else{ 
    text = [NSString stringWithFormat:@"%ld", (unsigned long)size]; 
    } 

    if (_backgroundImages != nil) { 
    UIImage *image = _backgroundImages[bucketIndex]; 
    return [self iconForText:text withBaseImage:image]; 
    } 
    return [self iconForText:text withBucketIndex:bucketIndex]; 
} 

Что я сделал это, я просто изменить еще часть и установить text в exact number вместо string with +!

+0

Удивительное решение! Я хотел бы знать, это также вредит производительности? –

+0

Нет, я не отметил никаких проблем с производительностью !!!! – Lion

Смежные вопросы