MKPinAnnotationView 无法设置自定义图像
Posted
技术标签:
【中文标题】MKPinAnnotationView 无法设置自定义图像【英文标题】:MKPinAnnotationView unable to set custom image 【发布时间】:2011-07-24 16:48:47 【问题描述】:我有一个 MKPinAnnotationView,在我的 viewForAnnotation 方法中,我执行以下操作:
customPinView.image = [UIImage imageNamed:@"blah.png"];
我已将 blah.png 添加到我的资源中(通过将文件拖入)
但我仍然看到股票图钉而不是我的图像。难道我做错了什么?完整代码如下:
- (MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation
static NSString *AnnotationViewID = @"annotationViewID";
MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
if (annotationView == nil)
annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID] autorelease];
annotationView.image = [UIImage imageNamed:@"blah.png"];
annotationView.annotation = annotation;
return annotationView;
【问题讨论】:
在问题中你说你有一个“MKPinAnnotationView”,但在代码中你(正确地)创建了一个“MKAnnotationView”,那是什么? viewForAnnotation 方法是否被调用?也许地图视图的委托没有设置。 这就是问题所在,谢谢。顺便说一句:我可以获得带有自定义图像的标注吗? 你的问题和代码sn-p不匹配。 【参考方案1】:要获得带有自定义图像的标注,在viewForAnnotation
委托方法中,您可以将leftCalloutAccessoryView
或rightCalloutAccessoryView
设置为您的图像(尽管右侧的通常用于显示按钮) :
annotationView.canShowCallout = YES;
UIImage *img = [UIImage imageNamed:@"something.png"];
annotationView.leftCalloutAccessoryView =
[[[UIImageView alloc] initWithImage:img] autorelease];
【讨论】:
以上是关于MKPinAnnotationView 无法设置自定义图像的主要内容,如果未能解决你的问题,请参考以下文章