18

在此处输入图像描述

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

4

1 回答 1

37

要创建自定义注释视图(您替换标准引脚),您只需在方法中设置image属性:MKAnnotationViewviewForAnnotation

- (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属性以使图钉按照您想要的方式精确排列。

关于标注的自定义,最简单的方法是指定leftCalloutAccessoryView,rightCalloutAccessoryView和/或detailCalloutAccessoryView。这为您提供了令人惊讶的控制程度,可以添加各种图像、标签等。

如果您想彻底重新设计标注,您可以在自定义注释视图中viewForAnnotation设置canShowCalloutNO响应setSelected以显示您自己的标注。在 Swift 中,请参阅自定义 MKAnnotation 标注视图?用于自定义标注的一些选项。

于 2013-04-27T14:52:26.570 回答