# TencentLBSLocationManager Class Reference

Inherits from | NSObject
Declared in | TencentLBSLocationManager.h

## Overview

腾讯定位服务管理类，提供定位、逆地理编码、朝向、DR 惯导等核心功能。 使用前需设置 apiKey 并确保用户同意隐私协议。

### `apiKey`

API Key，在使用定位 SDK 服务之前需要先绑定 key

`@property (nonatomic, copy) NSString *apiKey`

#### Declared In

`TencentLBSLocationManager.h`

### `accuracyAuthorization`

当前位置管理器定位精度的授权状态

`@property (nonatomic, readonly) TencentLBSAccuracyAuthorization accuracyAuthorization`

#### Declared In

`TencentLBSLocationManager.h`

### `authorizationStatus`

当前位置管理器定位权限的授权状态

`@property (nonatomic, readonly) CLAuthorizationStatus authorizationStatus`

#### Declared In

`TencentLBSLocationManager.h`

### `delegate`

实现了 TencentLBSLocationManagerDelegate 协议的代理对象

`@property (nonatomic, weak) id<TencentLBSLocationManagerDelegate> delegate`

#### Declared In

`TencentLBSLocationManager.h`

### `distanceFilter`

定位的最小更新距离，默认为 kCLDistanceFilterNone

`@property (nonatomic, assign) CLLocationDistance distanceFilter`

#### Declared In

`TencentLBSLocationManager.h`

### `desiredAccuracy`

定位精度，默认为 kCLLocationAccuracyBest

`@property (nonatomic, assign) CLLocationAccuracy desiredAccuracy`

#### Declared In

`TencentLBSLocationManager.h`

### `pausesLocationUpdatesAutomatically`

是否允许系统自动暂停定位，默认为 YES

`@property (nonatomic, assign) BOOL pausesLocationUpdatesAutomatically`

#### Declared In

`TencentLBSLocationManager.h`

### `allowsBackgroundLocationUpdates`

是否允许后台定位，默认为 NO

`@property (nonatomic, assign) BOOL allowsBackgroundLocationUpdates`

#### Discussion

是否允许后台定位，默认为 NO

Warning: iOS 9.0 以上需要设置该选项并在 info.plist 的 Background Modes 中勾选 Location updates 才可使用后台定位权限。设置为 YES 时必须保证 Background Modes 中的 Location updates 处于选中状态，否则会抛出异常

#### Declared In

`TencentLBSLocationManager.h`

### `activityType`

用户的活动类型，默认值为 CLActivityTypeOther

`@property (nonatomic, assign) CLActivityType activityType`

#### Declared In

`TencentLBSLocationManager.h`

### `headingFilter`

朝向改变的最小角度阈值，只有当设备方向的改变值超过该属性值时才触发代理回调

`@property (nonatomic, assign) CLLocationDegrees headingFilter`

#### Declared In

`TencentLBSLocationManager.h`

### `headingOrientation`

设备当前的朝向

`@property (nonatomic, assign) CLDeviceOrientation headingOrientation`

#### Declared In

`TencentLBSLocationManager.h`

### `requestLevel`

连续定位的逆地理信息请求级别，默认为 TencentLBSRequestLevelGeo

`@property (nonatomic, assign) TencentLBSRequestLevel requestLevel`

#### Declared In

`TencentLBSLocationManager.h`

### `coordinateType`

返回的 TencentLBSLocation 的 location 字段的坐标类型，默认为 TencentLBSLocationCoordinateTypeGCJ02

`@property (nonatomic, assign) TencentLBSLocationCoordinateType coordinateType`

#### Discussion

返回的 TencentLBSLocation 的 location 字段的坐标类型，默认为 TencentLBSLocationCoordinateTypeGCJ02

Warning: 在一次定位过程中只允许设置一次，不允许重复设置

#### Declared In

`TencentLBSLocationManager.h`

### `poiUpdateInterval`

POI 的更新间隔，默认是 10 秒

`@property (nonatomic, assign) NSInteger poiUpdateInterval`

#### Declared In

`TencentLBSLocationManager.h`

### `enableAntiMockLocation`

是否允许开启反作弊检查

`@property (nonatomic, assign) BOOL enableAntiMockLocation`

#### Declared In

`TencentLBSLocationManager.h`

### `locationCallbackInterval`

连续定位时的回调间隔，默认为 0，单位为毫秒。连续定位且间隔大于 0 时才有效

`@property (nonatomic, assign) uint64_t locationCallbackInterval`

#### Declared In

`TencentLBSLocationManager.h`

### `+ getLBSSDKVersion`

获取定位 SDK 的版本号

`+ (NSString *)getLBSSDKVersion`

#### Declared In

`TencentLBSLocationManager.h`

### `+ getLBSSDKbuild`

获取定位 SDK 的构建日期

`+ (NSString *)getLBSSDKbuild`

#### Declared In

`TencentLBSLocationManager.h`

### `– setDeviceId:`

设置设备 ID 给定位 SDK

`- (void)setDeviceId:(NSString *)deviceid`

#### Parameters

`deviceid` | 设备唯一标识

#### Discussion

设置设备 ID 给定位 SDK

#### Declared In

`TencentLBSLocationManager.h`

### `– setDataWithValue:forKey:`

向 SDK 内部设置数据，以满足定制的需求

`- (void)setDataWithValue:(NSString *)value forKey:(NSString *)key`

#### Parameters

`value` | 设置的值
`key` | 设置的键

#### Discussion

向 SDK 内部设置数据，以满足定制的需求

#### Declared In

`TencentLBSLocationManager.h`

### `+ setUserAgreePrivacy:`

设置用户是否同意隐私协议政策

`+ (void)setUserAgreePrivacy:(BOOL)isAgree`

#### Parameters

`isAgree` | 是否同意隐私政策

#### Discussion

设置用户是否同意隐私协议政策

Warning: 调用其他接口前必须首先调用此接口，传入 YES 后才能正常使用定位功能，否则 TencentLBSLocationManager 初始化不成功，返回 nil

#### Declared In

`TencentLBSLocationManager.h`

### `+ getUserAgreePrivacy`

获取用户是否同意隐私政策协议

`+ (BOOL)getUserAgreePrivacy`

#### Return Value

是否同意隐私政策

#### Discussion

获取用户是否同意隐私政策协议

#### Declared In

`TencentLBSLocationManager.h`

### `– requestWhenInUseAuthorization`

请求使用期间定位权限

`- (void)requestWhenInUseAuthorization`

#### Declared In

`TencentLBSLocationManager.h`

### `– requestAlwaysAuthorization`

请求始终允许定位权限

`- (void)requestAlwaysAuthorization`

#### Declared In

`TencentLBSLocationManager.h`

### `– requestTemporaryFullAccuracyAuthorizationWithPurposeKey:`

当前属于模糊定位状态时，请求暂时的完全定位精度权限

`- (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString *)purposeKey`

#### Parameters

`purposeKey` | 需要在 info.plist 中配置 NSLocationTemporaryUsageDescriptionDictionary 对应的 key 值和申请权限的描述理由

#### Discussion

当前属于模糊定位状态时，请求暂时的完全定位精度权限

#### Declared In

`TencentLBSLocationManager.h`

### `– requestTemporaryFullAccuracyAuthorizationWithPurposeKey:completion:`

当前属于模糊定位状态时，请求暂时的完全定位精度权限

`- (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString *)purposeKey completion:(void ( ^ ) ( NSError *))completion`

#### Parameters

`purposeKey` | 需要在 info.plist 中配置 NSLocationTemporaryUsageDescriptionDictionary 对应的 key 值和申请权限的描述理由
`completion` | 用户选择后的回调，如果用户授予权限则参数为 nil，否则为 PurposeKey 对应的描述信息

#### Discussion

当前属于模糊定位状态时，请求暂时的完全定位精度权限

#### Declared In

`TencentLBSLocationManager.h`

### `+ accuracyAuthorization`

获取当前的定位精度授权状态

`+ (TencentLBSAccuracyAuthorization)accuracyAuthorization`

#### Return Value

当前的 TencentLBSAccuracyAuthorization 状态

#### Discussion

获取当前的定位精度授权状态

#### Declared In

`TencentLBSLocationManager.h`

### `– requestLocationWithCompletionBlock:`

单次定位，使用默认配置

`- (BOOL)requestLocationWithCompletionBlock:(TencentLBSLocatingCompletionBlock)completionBlock`

#### Parameters

`completionBlock` | 单次定位完成后的回调 Block

#### Return Value

是否成功发起定位请求

#### Discussion

单次定位，使用默认配置

Warning: 默认 level 为 TencentLBSRequestLevelPoi，timeout 为 10 秒。不能连续调用该接口，需在上一次返回之后才能再次发起调用

#### Declared In

`TencentLBSLocationManager.h`

### `– requestLocationWithRequestLevel:locationTimeout:completionBlock:`

单次定位，可自定义请求级别和超时时间

`- (BOOL)requestLocationWithRequestLevel:(TencentLBSRequestLevel)level locationTimeout:(NSTimeInterval)timeout completionBlock:(TencentLBSLocatingCompletionBlock)completionBlock`

#### Parameters

`level` | 定位请求级别，可根据此参数获取对应的 POI 信息
`timeout` | 获取 POI 的超时时间
`completionBlock` | 单次定位完成后的回调 Block

#### Return Value

是否成功发起定位请求

#### Discussion

单次定位，可自定义请求级别和超时时间

Warning: 不能连续调用该接口，需在上一次返回之后才能再次发起调用。可通过 cancelRequestLocation 取消请求

#### Declared In

`TencentLBSLocationManager.h`

### `– cancelRequestLocation`

取消单次定位

`- (void)cancelRequestLocation`

#### Declared In

`TencentLBSLocationManager.h`

### `– startUpdatingLocation`

开始连续定位

`- (void)startUpdatingLocation`

#### Declared In

`TencentLBSLocationManager.h`

### `– stopUpdatingLocation`

停止连续定位

`- (void)stopUpdatingLocation`

#### Declared In

`TencentLBSLocationManager.h`

### `– startUpdatingHeading`

开始更新定位朝向

`- (void)startUpdatingHeading`

#### Declared In

`TencentLBSLocationManager.h`

### `– stopUpdatingHeading`

停止更新定位朝向

`- (void)stopUpdatingHeading`

#### Declared In

`TencentLBSLocationManager.h`

### `– dismissHeadingCalibrationDisplay`

停止展示定位朝向校准提示

`- (void)dismissHeadingCalibrationDisplay`

#### Declared In

`TencentLBSLocationManager.h`

### `– isSupport`

是否支持 DR 引擎

`- (BOOL)isSupport`

#### Return Value

支持返回 YES，不支持返回 NO

#### Discussion

是否支持 DR 引擎

#### Declared In

`TencentLBSLocationManager.h`

### `– startDrEngine:`

启动 DR 引擎，引擎会自动获取传感器和 GPS 数据并进行位置计算

`- (TencentLBSDRStartCode)startDrEngine:(TencentLBSDRStartMotionType)type`

#### Parameters

`type` | 运动类型，参考 TencentLBSDRStartMotionType

#### Return Value

启动返回码，参考 TencentLBSDRStartCode

#### Discussion

启动 DR 引擎，引擎会自动获取传感器和 GPS 数据并进行位置计算

Warning: 请确保调用之前已获取位置权限（使用期间或者始终允许）。启动后 DR 引擎会主动开启 CLLocationManager 的 startUpdatingLocation

#### Declared In

`TencentLBSLocationManager.h`

### `– terminateDrEngine`

停止 DR 引擎

`- (void)terminateDrEngine`

#### Discussion

停止 DR 引擎

Warning: 内部有极短时间延迟，若在此期间调用 startDrEngine: 可能导致启动不成功

#### Declared In

`TencentLBSLocationManager.h`

### `– getPosition`

主动获取 DR 实时融合位置

`- (TencentLBSLocation *)getPosition`

#### Return Value

DR 融合后的定位结果，调用 startDrEngine: 成功后才可能有值

#### Discussion

主动获取 DR 实时融合位置

#### Declared In

`TencentLBSLocationManager.h`