如何自定义大头针
——设置 MKMapView 的代理
实现下面的代理方法,返回大头针控件
- ( MKAnnotationView *)mapView:( MKMapView *)mapView viewForAnnotation:( id< MKAnnotation >)annotation;
根据传进来的 ( id < MKAnnotation >)annotation 参数创建并返回对应的大头针控件
代理方法的使用注意
如果返回 nil ,显示出来的大头针就采取系统的默认样式
标识用户位置的蓝色发光圆点,它也是一个大头针,当显示这个大头针时,也会调用代理方法
因此,需要在代理方法中分清楚 ( id < MKAnnotation >)annotation 参数代表自定义的大头针还是蓝色发光圆点
1 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation 2 { 3 // 判断annotation的类型 4 if (![annotation isKindOfClass:[MJTuangouAnnotation class]]) return nil; 5 6 // 创建MKAnnotationView 7 static NSString *ID = @"tuangou"; 8 MKAnnotationView *annoView = [mapView dequeueReusableAnnotationViewWithIdentifier:ID]; 9 if (annoView == nil) { 10 annoView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:ID]; 11 annoView.canShowCallout = YES; 12 } 13 // 传递模型数据 14 annoView.annotation = annotation; 15 16 // 设置图片 17 MJTuangouAnnotation *tuangouAnnotation = annotation; 18 annoView.image = [UIImage imageNamed:tuangouAnnotation.icon]; 19 20 return annoView; 21 }
MKAnnotationView
地图上的大头针控件是 MKAnnotationView
MKAnnotationView 的属性
1 @property (nonatomic, strong) id <MKAnnotation> annotation; 2 大头针模型 3 4 @property (nonatomic, strong) UIImage *image; 5 显示的图片 6 7 @property (nonatomic) BOOL canShowCallout; 8 是否显示标注 9 10 @property (nonatomic) CGPoint calloutOffset; 11 标注的偏移量 12 13 @property (strong, nonatomic) UIView *rightCalloutAccessoryView; 14 标注右边显示什么控件 15 16 @property (strong, nonatomic) UIView *leftCalloutAccessoryView; 17 标注左边显示什么控件
MKPinAnnotationView
MKPinAnnotationView 是 MKAnnotationView 的子类
MKPinAnnotationView 比 MKAnnotationView 多了 2 个属性
1 @property (nonatomic) MKPinAnnotationColor pinColor;//大头针颜色 2 3 @property (nonatomic) BOOL animatesDrop;//大头针第一次显示时是否从天而降
时间: 2024-09-29 08:56:19