Перерисовать MKAnnotationView - PullRequest
       5

Перерисовать MKAnnotationView

2 голосов
/ 08 апреля 2011

Зависит от уровня масштабирования MKMapView. Мне нужно перерисовать мой пользовательский MKAnnotationView. Насколько я понял, я должен сделать это следующим способом контроллера карты

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated

Удаление, а затем добавление аннотации к MKMapView вызывает принудительное мигание AnnotationView. Как я могу сделать это правильно?

1 Ответ

3 голосов
/ 22 апреля 2011

Вам не нужно удалять его и добавлять обратно. Просто измените пользовательский вид аннотации и наберите setNeedsDisplay. Пример:

@interface AnnotationClusterView : MKAnnotationView {
@property (nonatomic, assign) int badgeNumber;
}
@implementation AnnotationClusterView
@synthesize badgeNumber;
// ...
- (void)drawRect:(CGRect)rect {
    NSString *string = [NSString stringWithFormat:@"%d",self.badgeNumber];
    [string drawInRect:stringRect withFont:[UIFont fontWithName:@"Helvetica-Bold" size:13.0]];
}
@end

Когда изменяется масштаб, получите ссылку на MKAnnotationView, установите другой номер badgeNumber и попросите перерисовать вызов [myView setNeedsDisplay];. Вы можете сделать то же самое для изображений.

...