coreLocation&mapKit的使用小结

一、corelocation(核心定位)基本使用

1.主要作用:定位、区域判断、地理编码

2.主要使用的类

  2.1> CLLocation,表示某个地理位置的信息

其中包含:

CLLocationCoordinate2D coordinate//经纬度

CLLocationDistance altitude //海拔

CLLocationDirection course//方向 取值为0~359.9

CLLocationSpeed speed //速度,m/s

  2.2>CLLocationManager 地图定位管理者:开启地图定位功能

  2.2.1 开启地位定位

-(void)startUpdatingLocation

 2.2.2关闭地图定位

-(void)stopUpdatingLocation

 2.2.3 代理方法:当开启定位功能之后就会调用

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;    //每定位到新的位置就会调用,在数组location中返回CLLocation对象。

 2.2.4补充:在使用CLLocationManager定位是需要判断定位功能是否可用

+ (BOOL)locationServicesEnabled;//定位功能是否可用

@property(assign, nonatomic) CLLocationDistance distanceFilter;//每隔多少米定位一次

@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;//定位精确度(越精确就越耗电)

2.3用户隐私保护:

iOS8之前

开发者可以在Info.plist中设置NSLocationUsageDescription说明定位的目的 (Privacy - Location Usage Description)

ios:

)调用iOS 8.0的API,主动请求用户授权

 - (void)requestAlwaysAuthorization // 请求允许在前后台都能获取用户位置的授权

 - (void)requestWhenInUseAuthorization // 请求允许在前台获取用户位置的授权

(2)务必在info.plist文件中配置对应的键值, 否则以上请求授权的方法不生效

● NSLocationAlwaysUsageDescription : 允许在前后台获取GPS的描述

● NSLocationWhenInUseDescription : 允许在前台获取GPS的描述

iOS9+;

在后台也想定位的话需要主动调用_locationM.allowsBackgroundLocationUpdates = YES;

-(void)locationManager:(nonnull CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status//当用户授权状态改变时


2.4地理编码

 -(void)geocodeAddressString:(NSString*)addressString completionHandler: (CLGeocodeCompletionHandler)completionHandler;

 反地理编码方法

 -(void)reverseGeocodeLocation:(CLLocation*)location completionHandler: (CLGeocodeCompletionHandler)completionHandler;

2.4.1在返回的completionHandler中包含一placeMark的地标数组

placeMark:

@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;  城市

 2.5区域监听

-(void)startMonitoringForRegion;//开启区域监听

代理方法:

/ 进去监听区域后调用(调用一次)

-(void)locationManager:(nonnull CLLocationManager *)manager didEnterRegion:(nonnull CLRegion *)region

{

[manager stopMonitoringForRegion:region];//结束监听

}



二、mapKit

1.主要作用:显示方面(大头针、路线、覆盖层)

 1.1 自定义大头针:

自定义anotation继承于MKAnotation;

-(void)addAnnotation;//添加大头针到mapview上,

mapView代理方法:

(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation//zai代理方法中自定义MKAnotationView,接受传入的annotation模型

1.2航线信息(MKDirectionsRequest)

MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];

request.source = sourceItem;// 起点

request.destination = endItem;// 终点

-(void)calculateDirectionsWithCompletionHandler (MKDirectionsHandler)completionHandler;//在MKDirectionResponse中拿到信息。

其中MKRoute中有个MKPolyLine,调用-addOverlay

代理方法:

-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id)overlay//将路线渲染上去

 1.3 3D视角以及地图快照(iOS9出的)

3D:创建地图项(MKMapItem)

- (BOOL)openInMapsWithLaunchOptions:(NSDictionary *)launchOptions;

在调用+ (BOOL)openMapsWithItems:(NSArray *)mapItems launchOptions:(NSDictionary *)launchOptions;//系统地图进行导航

快照:(MKSnapShotter)

你可能感兴趣的:(coreLocation&mapKit的使用小结)