Senior _ MKAnnotation注释(大头针)

注释:
1.大头针 : 就是我们在地图中打的地理标识, 用来记录某个特殊的地点.
2.MKAnnotation 是一个协议, 而不是具体的类, 我们在创建大头针对象类时, 必须遵循该协议.


3.MKAnnotation 协议中有 三个属性 + 一个方法用来设置大头针

//MKAnnotation协议
@protocol MKAnnotation 
//属性
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@optional
//属性
@property (nonatomic, readonly, copy, nullable) NSString *title;
@property (nonatomic, readonly, copy, nullable) NSString *subtitle;
//方法
- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate NS_AVAILABLE(10_9, 4_0);
@end```
4.注意: 大头针, 只是一个模型, 并不是一个真正的控件, 要写展示大头针必须添加到视图上. 
(在具体的使用中, 我们可以使用系统的大头针视图, 也可以使用自定义的大头针视图)

####效果图: 

![大头针实例.png](http://upload-images.jianshu.io/upload_images/1803308-5250b09bcd6d43d9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

####1. 默认大头针使用实例代码
######第一步: 首先我们要创建Annotation类
```code
#import 
#import 

//遵循协议
@interface Annotation : NSObject

//经纬度属性
@property (nonatomic) CLLocationCoordinate2D coordinate;
# CLLocationCoordinate2D是一个结构体对象, 其中有两个属性经度和纬度
typedef struct {
    CLLocationDegrees latitude;
    CLLocationDegrees longitude;
} CLLocationCoordinate2D;

//标题属性
@property (copy, nonatomic) NSString *title;

//子标题属性
@property (copy, nonatomic) NSString *subtitle;

@end```

######第二步: 在ViewController中, 我们首先初始化一个地图显示视图(基于上一篇文章Senior_MKMapView),  然后创建大头针对象,并添加到地图视图上.
```code
#import "ViewController.h"
//导入地图显示头文件
#import 

//1. 导入大头针类
#import "Annotation.h"

//遵循协议
@interface ViewController ()

//创建地图显示视图
@property (strong, nonatomic) MKMapView *mapView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
   
    //初始化
    self.mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
    
    //触摸缩放
    self.mapView.zoomEnabled = YES;
    
    //是否可移动
    self.mapView.scrollEnabled = YES;
    
    //地图形式
    self.mapView.mapType = MKMapTypeStandard;
    
    //设置代理
    self.mapView.delegate = self;
    
    //显示用户位置
    self.mapView.showsUserLocation = YES;
    
    //添加到视图上
    [self.view addSubview:self.mapView];

    
    //2. 调用方法, 实现添加大头针
    [self addAnnotation];
}

#创建大头针对象的实现方法
- (void)addAnnotation{
    
    //1. 创建大头针对象
    Annotation *annotation = [[Annotation alloc] init];
    
    //2. 指定一个经纬度(大头针对象中有一个经纬度属性)
    CLLocationCoordinate2D location = CLLocationCoordinate2DMake(39.9200225351, 116.3968733177);
    
    //3. 设置title和subtitle
    annotation.title = @"北京";
    annotation.subtitle = @"故宫";
    
    //4. 将创建的经纬度对象,设置为大头针的经纬度
    annotation.coordinate = location;
    
    //5. 将大头针添加到视图上显示
    [self.mapView addAnnotation:annotation];
    
}

@end```

你可能感兴趣的:(Senior _ MKAnnotation注释(大头针))