重绘MKAnnotationView

发布于 2024-10-30 18:42:12 字数 259 浏览 0 评论 0原文

取决于 MKMapView 的缩放级别,我需要重新绘制自定义 MKAnnotationView。到目前为止,据我了解,我必须在地图控制器的下一个方法中执行此操作

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

,删除然后向 MKMapView 添加注释,强制 AnnotationView 闪烁。 我怎样才能以正确的方式做到这一点?

Depends of zoom level of MKMapView I need to redraw my custom MKAnnotationView. As far, as I understood I must to do it in next method of map controller

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

Removing and then adding annotation to MKMapView here force blinking of AnnotationView.
How can I do this in a right way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

Hello爱情风 2024-11-06 18:42:12

您不需要删除它然后将其添加回来。只需对自定义注释视图进行更改并调用 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 的引用,设置不同的徽章编号,并调用 [myView setNeedsDisplay]; 请求重绘。您可以对图像执行相同的操作。

You don't need to remove it and add it back. Just make a change on the custom annotation view and call setNeedsDisplay. Example:

@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

When zoom changes, get a reference to the MKAnnotationView, set a different badgeNumber, and ask for a redraw calling [myView setNeedsDisplay];. You can do the same for images.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文