一柑蛇、地圖的基本使用
- 設(shè)置地圖類型
// 1.設(shè)置地圖顯示類型
/**
MKMapTypeStandard = 0, // 標(biāo)準(zhǔn)
MKMapTypeSatellite, // 衛(wèi)星
MKMapTypeHybrid, // 混合(標(biāo)準(zhǔn)+衛(wèi)星)
MKMapTypeSatelliteFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D立體衛(wèi)星
MKMapTypeHybridFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D立體混合
*/
self.customMapView.mapType = MKMapTypeStandard;
- 設(shè)置地圖的其他屬性(操作項(xiàng))
- 注意:設(shè)置對(duì)應(yīng)的屬性時(shí)节芥,注意該屬性是從哪個(gè)系統(tǒng)版本開始引入的剧包,做好不同系統(tǒng)版本的適配
// 是否可以縮放
self.customMapView.zoomEnabled = NO;
// 是否可以滾動(dòng)
self.customMapView.scrollEnabled = NO;
// 是否可以旋轉(zhuǎn)
self.customMapView.rotateEnabled = NO;
// 是否顯示3D
self.customMapView.pitchEnabled = NO;
- 設(shè)置地圖其它屬性(顯示項(xiàng))
// 是否顯示指南針
self.customMapView.showsCompass = YES;
// 是否顯示比例尺
self.customMapView.showsScale = YES;
// 是否顯示交通
self.customMapView.showsTraffic = YES;
// 是否顯示建筑物
self.customMapView.showsBuildings = YES;
+ 設(shè)置地圖顯示用戶位置( 需要請(qǐng)求用戶授權(quán) )
- 效果:
+ 會(huì)在地圖上顯示一個(gè)藍(lán)色圓點(diǎn)(大頭針),`標(biāo)示用戶當(dāng)前所在位置`, 地圖`不會(huì)`跟著用戶移動(dòng)而移動(dòng)
代碼: self.customMapView.showsUserLocation = YES;
+ 設(shè)置地圖的用戶追蹤模式( 需要請(qǐng)求用戶授權(quán) )
- 效果:
+ 會(huì)在地圖上顯示一個(gè)藍(lán)色圓點(diǎn)(大頭針),`標(biāo)示用戶當(dāng)前所在位置`, 地圖`會(huì)`跟著用戶移動(dòng)而移動(dòng), 而且自動(dòng)放大地圖到合適比例
- 1.創(chuàng)建CLLocationManager對(duì)象請(qǐng)求授權(quán)
```objc
-(CLLocationManager *)locationM
{
if (!_locationM) {
_locationM = [[CLLocationManager alloc] init];
if ([_locationM respondsToSelector:@selector(requestAlwaysAuthorization)]) {
[_locationM requestAlwaysAuthorization];
}
}
return _locationM;
}
- 2.設(shè)置地圖的用戶追蹤模式
- 注意:
- 設(shè)置此屬性會(huì)使用到用戶的位置隱私肿嘲,所以需要請(qǐng)求用戶授權(quán)娄琉,否則沒有效果
```objc
MKUserTrackingModeNone = 0, // 不跟隨
MKUserTrackingModeFollow, // 跟隨用戶位置
MKUserTrackingModeFollowWithHeading, // 跟隨用戶位置次乓,并跟隨用戶方向
*/
[self locationM];
self.customMapView.userTrackingMode = MKUserTrackingModeFollowWithHeading;
```
二、使用
- 1.導(dǎo)入框架MapKit.framework
- 2.進(jìn)行請(qǐng)求授權(quán)孽水,Info.plist文件中配置key
- 3.布局界面票腰,在控制器的view上拖拽一個(gè)mapView控件,用來顯示地圖
#import "ViewController.h"
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
/** 位置管理者 */
@property (nonatomic, strong) CLLocationManager *locationM;
@end
@implementation ViewController
#pragma mark -懶加載
-(CLLocationManager *)locationM
{
if (!_locationM) {
_locationM = [[CLLocationManager alloc] init];
// 版本適配
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
[_locationM requestAlwaysAuthorization];
}
}
return _locationM;
}
- (void)viewDidLoad {
[super viewDidLoad];
// MKMapTypeStandard = 0, // 標(biāo)準(zhǔn)地圖
// MKMapTypeSatellite, // 衛(wèi)星云圖
// MKMapTypeHybrid, // 混合(在衛(wèi)星云圖上加了標(biāo)準(zhǔn)地圖的覆蓋層)
// MKMapTypeSatelliteFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D立體
// MKMapTypeHybridFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D混合
// 設(shè)置地圖顯示樣式(必須注意,設(shè)置時(shí) 注意對(duì)應(yīng)的版本)
self.mapView.mapType = MKMapTypeStandard;
// 設(shè)置地圖的控制項(xiàng)
// 是否可以滾動(dòng)
// self.mapView.scrollEnabled = NO;
// 縮放
// self.mapView.zoomEnabled = NO;
// 旋轉(zhuǎn)
// self.mapView.rotateEnabled = NO;
// 設(shè)置地圖的顯示項(xiàng)(注意::版本適配)
// 顯示建筑物
self.mapView.showsBuildings = YES;
// 指南針
self.mapView.showsCompass = YES;
// 興趣點(diǎn)
self.mapView.showsPointsOfInterest = YES;
// 比例尺
self.mapView.showsScale = YES;
// 交通
self.mapView.showsTraffic = YES;
// 顯示用戶位置
[self locationM];
// 顯示用戶位置, 但是地圖并不會(huì)自動(dòng)放大到合適比例
// self.mapView.showsUserLocation = YES;
/**
* MKUserTrackingModeNone = 0, 不追蹤
MKUserTrackingModeFollow, 追蹤
MKUserTrackingModeFollowWithHeading, 帶方向的追蹤
*/
// 不但顯示用戶位置, 而且還會(huì)自動(dòng)放大地圖到合適的比例(也要進(jìn)行定位授權(quán))
// 不靈光
self.mapView.userTrackingMode = MKUserTrackingModeFollowWithHeading;
}
@end