概述
API
大框架
- CoreLocation:用于地理定位,地理编码区域监听等(着重功能实现)
- MapKit:用于地图展示,例如大头针,路线,覆盖层展示等(着重界面展示)
内部的框架
-
CoreLocation框架
- CoreLocation
- CLLocation
- ios地图开发的隐私保护(如何添加授权)
- CLGeocoder
- CLPlacemark
-
MapKit框架
- MKMapView
- MKCoordinateRegion
- MKMapView的代理
- MKUserLocation
- 大头针
- annotation
- 自定义大头针
- MKAnnotationView
- MKPinAnnotationView
- MKMapItem调用系统APP进行导航
- MKMapCamera地图街景
- MKMapSnapshotter地图截图
常用的类和方法
CLLocationManager
CLLocation
CLLocationCoordinate2D
CLGeocoder
CLPlacemark
CLLocationManager
- CoreLocation框架中使用CLLocationManager对象来做用户定位
- 创建(初始化)
CLLocationManager *lM = [[CLLocationManager alloc] init];
1.manager设置定位的精准度(最优的方式,导航最好的方式,10m,100m等等),定位越远,好点越多
2.manager取出授权(authorizationStatus),没有授权,先授权。
3.manager使用startUpdating开启定位
4.使用didiupdating回调确认定位
5.使用(didChangeAuthorizationStatus)确认授权信息
CLLocation
使用属性(coordinate)获取经度,纬度,航向,海拔,速度
CLLocationCoordinate2D
里面包含经度,纬度,航向,海拔,速度信息
CLGeocoder
- 地理编码方法-(void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;
- 反地理编码方法-(void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;
[self.geoC geocodeAddressString:self.addressDetailTV.text completionHandler:^(NSArray<CLPlacemark *> * __nullable placemarks, NSError * __nullable error) { // 包含区,街道等信息的地标对象 CLPlacemark *placemark = [placemarks firstObject]; // 城市名称 // NSString *city = placemark.locality; // 街道名称 // NSString *street = placemark.thoroughfare; // 全称 NSString *name = placemark.name; self.addressDetailTV.text = [NSString stringWithFormat:@"%@", name]; self.latitudeTF.text = [NSString stringWithFormat:@"%f", placemark.location.coordinate.latitude]; s }
[self.geoC reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * __nullable placemarks, NSError * __nullable error) { // 包含区,街道等信息的地标对象 CLPlacemark *placemark = [placemarks firstObject]; // 城市名称 // NSString *city = placemark.locality; // 街道名称 // NSString *street = placemark.thoroughfare; // 全称 NSString *name = placemark.name; self.addressDetailTV.text = [NSString stringWithFormat:@"%@", name]; }];
CLPlacemark
- @property (nonatomic, readonly) CLLocation *location;地理位置
- @property (nonatomic, readonly) CLRegion *region;
区域 - @property (nonatomic, readonly) NSDictionary *addressDictionary;详细的地址信息
- @property (nonatomic, readonly) NSString *name;
地址名称 - @property (nonatomic, readonly) NSString *locality;
城市