我正在制作地图应用程序。我完成了在某些条件下获取位置,在地图视图上显示注释并显示我的自定义标注气泡。
我的要求是显示注释引脚,如下所示:
现在我知道我可以将Image设置为注释视图并使其成为圆角,如下所示:
pinView.image = [UIImage imageNamed:@"annotationImage"];
[pinView.layer setCornerRadius:8.0];
[pinView setClipsToBounds:YES];
此处pinView
是一个AnnotationView。
如果我可以创建自定义视图并将其分配到图钉视图,请告诉我,这样我就可以获得红色徽章并设置图像。
更新
我尝试了很多东西,并成功地提出了观点。但问题是如果我在地图上使用MKAnnotationView
对象,我无法点击它或在其上调用手势识别器。如果我使用MKPinAnnotationView
而不是我能够调用didSelected方法或添加手势识别器,但我无法在其上设置图像,因为它是Pin Annotation。
如果可能,请告诉我。
提前致谢。
答案 0 :(得分:3)
您需要将班级设为MKMapViewDelegate
并填写此方法:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
CustomMapAnnotationView *annotationView = nil;
pinView.image = [UIImage imageNamed:@"annotationImage"];
[pinView.layer setCornerRadius:8.0];
[pinView setClipsToBounds:YES];
NSString* identifier = @"CustomMapAnnotation";
CustomMapAnnotationView *newAnnotationView = (CustomMapAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if(nil == newAnnotationView) {
newAnnotationView = [[[CustomMapAnnotationView alloc] initWithAnnotation: pinView reuseIdentifier:identifier] autorelease];
}
annotationView = newAnnotationView;
[annotationView setEnabled:YES];
[annotationView setCanShowCallout:YES];
return annotationView;
}
因此,您可以返回MKAnnotationView
的自定义类,子类,并且可以立即将徽章添加到自定义视图中。