2

MKMapView のズーム レベルに応じて、カスタム MKAnnotationView を再描画する必要があります。私が理解している限り、マップコントローラーの次のメソッドでそれを行う必要があります

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

ここで注釈を削除して MKMapView に追加すると、AnnotationView が強制的に点滅します。どうすればこれを正しい方法で行うことができますか?

4

1 に答える 1

3

削除して再度追加する必要はありません。カスタム注釈ビューを変更して を呼び出すだけ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];ます。画像についても同じことができます。

于 2011-04-21T20:09:42.963 に答える