如何创build自定义MKAnnotationView和自定义注释标题和副标题

在这里输入图像描述

我需要在MKMapView上创build上面的Annotation视图。 我能够创build自定义注释视图,但在注释点击视图需要用大文本打开图像,我无法创build一个。 请给我提供一些链接或完成此任务的方法。

要创build一个自定义注释视图(replace为标准引脚),可以在viewForAnnotation方法中设置MKAnnotationViewimage属性:

 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { if ([annotation isKindOfClass:[MKUserLocation class]]) { return nil; } else if ([annotation isKindOfClass:[YourAnnotationClassHere class]]) // use whatever annotation class you used when creating the annotation { static NSString * const identifier = @"MyCustomAnnotation"; MKAnnotationView* annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; if (annotationView) { annotationView.annotation = annotation; } else { annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier]; } annotationView.canShowCallout = NO; // set to YES if using customized rendition of standard callout; set to NO if creating your own callout from scratch annotationView.image = [UIImage imageNamed:@"your-image-here.png"]; return annotationView; } return nil; } 

您可能还想要调整centerOffset属性以使引脚与您想要的方式完全一致。

关于标注的定制,最简单的方法是指定leftCalloutAccessoryViewrightCalloutAccessoryView和/或detailCalloutAccessoryView 。 这给你一个令人惊讶的程度控制,添加各种图像,标签等

如果要对标注进行重新devise,可以将viewForAnnotation设置为canShowCalloutNO ,然后在自定义注释视图中响应setSelected以显示自己的标注。 在Swift中,请参阅自定义MKAnnotation标注视图? 为自定义标注的几个选项。