我写了这段代码来创建自定义注释图像

 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    static NSString *google = @"googlePin";
    if ([annotation isKindOfClass:[myClass class]])
    {
        MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:google];
        if (!annotationView)
        {
            annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:google];
            annotationView.image = [UIImage imageNamed:@"pin.png"];
        }
        return annotationView;
    }
    return nil;

}

图片出现在地图上;但是,当我单击它时,没有任何反应,没有标题也没有副标题。

你们有什么主意吗?

最佳答案

当覆盖viewForAnnotation时,必须将canShowCallout设置为YES(在分配/初始化的新视图中,默认值为NO)。

如果不重写该委托方法,则地图视图会创建一个默认的红色图钉,其canShowCallout已设置为YES

但是,即使将canShowCallout设置为YES,如果注释的titlenil或空白(空字符串),标注仍不会出现。

(但同样,如果title不是nil也不为空,则除非canShowCalloutYES,否则不会显示标注。)

MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:google];
if (!annotationView)
{
    annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:google];
    annotationView.image = [UIImage imageNamed:@"pin.png"];
    annotationView.canShowCallout = YES;  // <-- add this
}
else
{
    // unrelated but should handle view re-use...
    annotationView.annotation = annotation;
}

return annotationView;

09-25 16:14