地圖:導入#import
1、介紹
(1)導入框架MapKit->MKMapView所有與地圖相關的都是以“MK”開頭
(2)使用地圖功能也需要使用定位服務(也需要開啟定位服務、向用戶申請授權)->需要一個CLLocation的對象向用戶請求授權
(3)功能
《1》展示地圖
《2》展示用戶所在的位置
《3》添加標記(大頭針、展示大頭針上的內容)
(4)IOS9.0之后改變(面試題)
《1》可以顯示交通情況
《2》可以顯示地圖比例
《3》可以顯示羅盤
2、使用
(1)使用到的類
《1》MKMapView:創建地圖對象的類
《2》MKUserLocation:顯示用戶大頭針資料(大頭針的數據模型大頭針上顯示的內容是根據數據模型來決定的)
《3》MKAnnotation:大頭針數據資料所有大頭針模型的一個父類不能直接使用都是使用系統提供的子類、或者自定義大頭針模型
《4》MKPointAnnotation:大頭針模型
《5》MKAnnotationView:所有大頭針控件的父類可以直接使用
《6》MKPinAnnotationView:大頭針視圖控件
《7》MKCoordinateSpan:經緯度的跨度(比例,跨度越小顯示的范圍越小越精準)
《8》MKCoordinateRegion:經緯度的范圍
設置用戶所在位置的一個范圍
@property(nonatomic) MKCoordinateRegion region;
- (void)setRegion:(MKCoordinateRegion)region animated:(BOOL)animated;
設置用戶在地圖上為中心點、以用戶的位置為地圖的中心點
-
(void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate
animated:(BOOL)animated
設置地圖樣式mapType:
MKMapTypeStandard,標準
MKMapTypeSatellite,衛星地圖
MKMapTypeHybrid,鳥瞰混合
ios9之后新增加的:
MKMapTypeSatelliteFlyover,衛星地圖的立體樣式
MKMapTypeHybridFlyover,鳥瞰地圖的立體樣式
顯示用戶位置showsUserLocation
*使用地圖顯示用戶位置的時候無法定位用戶位置
1、showsUserLocation未設置成YES
2、未創建定位對象,向用戶請求授權
3、使用定位服務目的的描述與發送的請求不匹配或者未在iofo.plist中添加定位服務目的的描述
4、用戶未在設置里面開啟定位服務
設置跟蹤用戶的樣式userTrackingMode
MKUserTrackingModeNone不跟蹤
MKUserTrackingModeFollow跟蹤
MKUserTrackingModeFollowWithHeading 跟蹤并且伴隨航向
BOOL類型的屬性:
pitchEnabled設置是否可以捏合
rotateEnabled設置是否可以旋轉
scrollEnabled設置是否可以滾動
zoomEnabled設置是否可以縮放
顯示建筑物showsBuildings在標準效果下才有效
顯示熱門點showsPointsOfInterest在標準和鳥瞰效果下有效
顯示標尺(比例)showsScale
顯示交通狀態showsTraffic
顯示羅盤showsCompass
地圖重要的代理方法:
//更新用戶位置時調用
- (void)mapView:(MKMapView *)mapView
didUpdateUserLocation:(MKUserLocation *)userLocation
//地圖范圍將要發生改變時調用
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
//地圖范圍已經改變完成調用
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
//點擊大頭針觸發
- (void)mapView:(MKMapView*)mapView didSelectAnnotationView:(MKAnnotationView*)view{
}