注釋:
1.大頭針 : 就是我們在地圖中打的地理標識, 用來記錄某個特殊的地點.
2.MKAnnotation 是一個協(xié)議, 而不是具體的類, 我們在創(chuàng)建大頭針對象類時, 必須遵循該協(xié)議.
3.MKAnnotation 協(xié)議中有<b> 三個屬性 + 一個方法</b>用來設(shè)置大頭針
//MKAnnotation協(xié)議
@protocol MKAnnotation <NSObject>
//屬性
@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.注意: 大頭針, 只是一個模型, 并不是一個真正的控件, 要寫展示大頭針必須添加到視圖上.
(在具體的使用中, 我們可以使用系統(tǒng)的大頭針視圖, 也可以使用自定義的大頭針視圖)
####效果圖:

####1. 默認大頭針使用實例代碼
######第一步: 首先我們要創(chuàng)建Annotation類
```code
#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
//遵循協(xié)議
@interface Annotation : NSObject<MKAnnotation>
//經(jīng)緯度屬性
@property (nonatomic) CLLocationCoordinate2D coordinate;
# CLLocationCoordinate2D是一個結(jié)構(gòu)體對象, 其中有兩個屬性經(jīng)度和緯度
typedef struct {
CLLocationDegrees latitude;
CLLocationDegrees longitude;
} CLLocationCoordinate2D;
//標題屬性
@property (copy, nonatomic) NSString *title;
//子標題屬性
@property (copy, nonatomic) NSString *subtitle;
@end```
######第二步: 在ViewController中, 我們首先初始化一個地圖顯示視圖(基于上一篇文章Senior_MKMapView), 然后創(chuàng)建大頭針對象,并添加到地圖視圖上.
```code
#import "ViewController.h"
//導(dǎo)入地圖顯示頭文件
#import <MapKit/MapKit.h>
//1. 導(dǎo)入大頭針類
#import "Annotation.h"
//遵循協(xié)議
@interface ViewController ()<MKMapViewDelegate>
//創(chuàng)建地圖顯示視圖
@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;
//設(shè)置代理
self.mapView.delegate = self;
//顯示用戶位置
self.mapView.showsUserLocation = YES;
//添加到視圖上
[self.view addSubview:self.mapView];
//2. 調(diào)用方法, 實現(xiàn)添加大頭針
[self addAnnotation];
}
#創(chuàng)建大頭針對象的實現(xiàn)方法
- (void)addAnnotation{
//1. 創(chuàng)建大頭針對象
Annotation *annotation = [[Annotation alloc] init];
//2. 指定一個經(jīng)緯度(大頭針對象中有一個經(jīng)緯度屬性)
CLLocationCoordinate2D location = CLLocationCoordinate2DMake(39.9200225351, 116.3968733177);
//3. 設(shè)置title和subtitle
annotation.title = @"北京";
annotation.subtitle = @"故宮";
//4. 將創(chuàng)建的經(jīng)緯度對象,設(shè)置為大頭針的經(jīng)緯度
annotation.coordinate = location;
//5. 將大頭針添加到視圖上顯示
[self.mapView addAnnotation:annotation];
}
@end```