我编写了这段代码来创建自定义注释图像
- (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;
}
图像出现在地图上;但是当我点击它时没有任何事情发生,没有标题或副标题。
你们有什么想法吗?
答案 0 :(得分:12)
当您覆盖viewForAnnotation
时,您必须将canShowCallout
设置为YES
(您分配/初始化的新视图的默认值为NO
)。
如果您不覆盖该委托方法,地图视图会创建一个默认的红色图钉,canShowCallout
已设置为YES
。
但是,即使将canShowCallout
设置为YES
,如果注释的title
为nil
或空白(空字符串),则仍会显示标注< / strong>即可。
(但同样,如果title
不是nil
且不是空白,则除非canShowCallout
为YES
,否则不会显示标注。)
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;