一盲赊、corelocation(核心定位)基本使用
1.主要作用:定位铣鹏、區(qū)域判斷、地理編碼
2.主要使用的類(lèi)
? 2.1> CLLocation哀蘑,表示某個(gè)地理位置的信息
其中包含:
CLLocationCoordinate2D coordinate//經(jīng)緯度
CLLocationDistance altitude //海拔
CLLocationDirection course//方向 取值為0~359.9
CLLocationSpeed speed //速度诚卸,m/s
? 2.2>CLLocationManager 地圖定位管理者:開(kāi)啟地圖定位功能
? 2.2.1 開(kāi)啟地位定位
-(void)startUpdatingLocation
?2.2.2關(guān)閉地圖定位
-(void)stopUpdatingLocation
?2.2.3 代理方法:當(dāng)開(kāi)啟定位功能之后就會(huì)調(diào)用
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations; ? ?//每定位到新的位置就會(huì)調(diào)用,在數(shù)組location中返回CLLocation對(duì)象绘迁。
?2.2.4補(bǔ)充:在使用CLLocationManager定位是需要判斷定位功能是否可用
+ (BOOL)locationServicesEnabled;//定位功能是否可用
@property(assign, nonatomic) CLLocationDistance distanceFilter;//每隔多少米定位一次
@property(assign, nonatomic) CLLocationAccuracy?desiredAccuracy;//定位精確度(越精確就越耗電)
2.3用戶(hù)隱私保護(hù):
iOS8之前
開(kāi)發(fā)者可以在Info.plist中設(shè)置NSLocationUsageDescription說(shuō)明定位的目的 (Privacy - Location Usage Description)
ios:
)調(diào)用iOS 8.0的API,主動(dòng)請(qǐng)求用戶(hù)授權(quán)
?- (void)requestAlwaysAuthorization // 請(qǐng)求允許在前后臺(tái)都能獲取用戶(hù)位置的授權(quán)
?- (void)requestWhenInUseAuthorization // 請(qǐng)求允許在前臺(tái)獲取用戶(hù)位置的授權(quán)
(2)務(wù)必在info.plist文件中配置對(duì)應(yīng)的鍵值, 否則以上請(qǐng)求授權(quán)的方法不生效
● NSLocationAlwaysUsageDescription : 允許在前后臺(tái)獲取GPS的描述
● NSLocationWhenInUseDescription : 允許在前臺(tái)獲取GPS的描述
iOS9+;
在后臺(tái)也想定位的話(huà)需要主動(dòng)調(diào)用_locationM.allowsBackgroundLocationUpdates = YES;
-(void)locationManager:(nonnull CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status//當(dāng)用戶(hù)授權(quán)狀態(tài)改變時(shí)
2.4地理編碼
?-(void)geocodeAddressString:(NSString*)addressString completionHandler: (CLGeocodeCompletionHandler)completionHandler;
?反地理編碼方法
?-(void)reverseGeocodeLocation:(CLLocation*)location completionHandler: (CLGeocodeCompletionHandler)completionHandler;
2.4.1在返回的completionHandler中包含一placeMark的地標(biāo)數(shù)組
placeMark:
@property(nonatomic,readonly)CLLocation*location; ?地理位置
?@property(nonatomic,readonly)CLRegion*region; ?區(qū)域
?@property(nonatomic,readonly)NSDictionary*addressDictionary; ?詳細(xì)的地址信息
?@property(nonatomic,readonly)NSString*name; ?地址名稱(chēng)
?@property(nonatomic,readonly)NSString*locality; ?城市
?2.5區(qū)域監(jiān)聽(tīng)
-(void)startMonitoringForRegion;//開(kāi)啟區(qū)域監(jiān)聽(tīng)
代理方法:
/ 進(jìn)去監(jiān)聽(tīng)區(qū)域后調(diào)用(調(diào)用一次)
-(void)locationManager:(nonnull CLLocationManager *)manager didEnterRegion:(nonnull CLRegion *)region
{
[manager stopMonitoringForRegion:region];//結(jié)束監(jiān)聽(tīng)
}
二合溺、mapKit
1.主要作用:顯示方面(大頭針、路線(xiàn)缀台、覆蓋層)
?1.1 自定義大頭針:
自定義anotation繼承于MKAnotation;
-(void)addAnnotation;//添加大頭針到mapview上棠赛,
mapView代理方法:
(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation//zai代理方法中自定義MKAnotationView,接受傳入的annotation模型
1.2航線(xiàn)信息(MKDirectionsRequest)
MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];
request.source = sourceItem;// 起點(diǎn)
request.destination = endItem;// 終點(diǎn)
-(void)calculateDirectionsWithCompletionHandler (MKDirectionsHandler)completionHandler;//在MKDirectionResponse中拿到信息膛腐。
其中MKRoute中有個(gè)MKPolyLine,調(diào)用-addOverlay
代理方法:
-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id)overlay//將路線(xiàn)渲染上去
?1.3 3D視角以及地圖快照(iOS9出的)
3D:創(chuàng)建地圖項(xiàng)(MKMapItem)
- (BOOL)openInMapsWithLaunchOptions:(NSDictionary *)launchOptions;
在調(diào)用+ (BOOL)openMapsWithItems:(NSArray *)mapItems launchOptions:(NSDictionary *)launchOptions;//系統(tǒng)地圖進(jìn)行導(dǎo)航
快照:(MKSnapShotter)