MKMapView自定义大头针

如何自定义大头针

——设置 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;//大头针第一次显示时是否从天而降

转载于:https://www.cnblogs.com/ranger-jlu/p/4301312.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值