MapKit框架:5-复杂地图标注(MKAnnotationView)
借助MKPointAnnotation类,我们可以快速的创建地图标注,但MKPointAnnotation类的标注样式是由系统定义的,程序员不能够对其样式进行修改。在实际的开发中,为了体现App的特性,我们有时会需要对地图标注的样式进行自定义。当我们需要创建复杂地图标注时,就需要使用MKAnnotationView。
MKAnnotationView简介
MKAnnotationView类是MapKit框架中提供的类,用于创建复杂的地图标注。在MKAnnotationView类中,提供了用于定制标注左侧、右侧以及“大头针”样式的属性。例如在滴滴打车中的图标样式,我们就可以为其添加左侧的视图以及更新其“大头针”样式图标。
MKAnnotationView类继承自UIView,在该类提供的API中,提供了用于定制地图标注样式的属性,有如下几个需要重点掌握。
- 实例化方法。需要传入一个遵守MKAnnotation协议的参数,用于提供标注所在的位置,因此,当我们创建MKAnnotationView对象之前,需要提前创建一个遵守MKAnnotation协议的对象作为参数传入。
- (instancetype)initWithAnnotation:(nullable id <MKAnnotation>)annotation reuseIdentifier:(nullable NSString *)reuseIdentifier;
- 设置标注显示的图片。
@property (nonatomic, strong) UIImage *image;
- 设置标注右边的控件样式。
@property (strong, nonatomic) UIView *rightCalloutAccessoryView;
- 设置标注左边的控件样式。
@property (strong, nonatomic) UIView *leftCalloutAccessoryView;
- 设置标注下面的显示控件(需要iOS9.0+)。
@property (nonatomic, strong) UIView *detailCalloutAccessoryView;
- 点击标注后,是否显示标注的详细信息。
@property (nonatomic) BOOL canShowCallout;
MKAnnotationView的设置方法
假如希望地图标注使用自定义的样式,需要在MKMapViewDelegate代理协议中的mapView:viewForAnnotation:方法中完成。在该方法中,可以传入添加到MKMapView上的每一个annotation对象,因此我们可以为不同的annotation设置不同的标注样式。
- (nullable MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;
MKPinAnnotationView类
MKPinAnnotationView类是MKAnnotationView类的子类,在MKPinAnnotationView类中提供了一些快速设置默认标注样式的方法,主要体现在可以对“大头针”的颜色进行设置。
@property (NS_NONATOMIC_IOSONLY, strong, null_resettable) UIColor *pinTintColor;
另外,在MKPinAnnotationView类中,还提供了一个地图标注从天而降的动画效果。
@property (nonatomic) BOOL animatesDrop;
示例代码
https://github.com/99ios/17.3.5
文章发布时间为: December 11th , 2016 at 09:59 pm
最后编辑时间为: September 15th , 2017 at 08:12 am
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 15th , 2017 at 08:12 am
本文由 99ios 创作,转载请注明出处