Senior _ MKAnnotation注釋(大頭針)

注釋:
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)的大頭針視圖, 也可以使用自定義的大頭針視圖)

####效果圖: 

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

####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```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容