BaiduLoc_IOSSDK_v2.0.6_Docs  2.0.6
BMKLocationManager.h
浏览该文件的文档.
1 //
2 // BMKLocationManager.h
3 // BMKLocationKit
4 //
5 // Created by baidu on 2017/3/2.
6 // Copyright © 2017年 baidu. All rights reserved.
7 //
8 
9 #import <Availability.h>
10 #import <Foundation/Foundation.h>
11 #import <CoreLocation/CoreLocation.h>
12 #import "BMKLocationReGeocode.h"
13 #import "BMKLocation.h"
14 
18 typedef NS_ENUM(NSUInteger, BMKLocationCoordinateType)
19 {
20  BMKLocationCoordinateTypeBMK09LL = 0,
21  BMKLocationCoordinateTypeBMK09MC,
22  BMKLocationCoordinateTypeWGS84,
23  BMKLocationCoordinateTypeGCJ02
24 };
25 
29 typedef NS_ENUM(int, BMKLocationNetworkState) {
30  BMKLocationNetworkStateUnknown = 0,
31  BMKLocationNetworkStateWifi,
32  BMKLocationNetworkStateWifiHotSpot,
33  BMKLocationNetworkStateMobile2G,
34  BMKLocationNetworkStateMobile3G,
35  BMKLocationNetworkStateMobile4G
36 
37 };
38 
39 
41 
42 FOUNDATION_EXPORT NSErrorDomain const _Nonnull BMKLocationErrorDomain;
43 
45 typedef NS_ENUM(NSInteger, BMKLocationErrorCode)
46 {
47  BMKLocationErrorUnKnown = 0,
48  BMKLocationErrorLocFailed = 1,
49  BMKLocationErrorDenied = 2,
50  BMKLocationErrorNetWork = 3,
51  BMKLocationErrorHeadingFailed = 4,
52  BMKLocationErrorGetExtraNetworkFailed = 5,
53  BMKLocationErrorGetExtraParseFailed = 6,
54  BMKLocationErrorFailureAuth = 7,
55 };
56 
60 typedef NS_ENUM(NSInteger, BMKLAccuracyAuthorization) {
61 
62  BMKLAccuracyAuthorizationFullAccuracy,
63  BMKLAccuracyAuthorizationReducedAccuracy,
64 };
65 
66 
73 typedef void (^BMKLocatingCompletionBlock)(BMKLocation * _Nullable location, BMKLocationNetworkState state , NSError * _Nullable error);
74 
75 
76 
78 
79 #pragma mark - BMKLocationManager
80 
81 
83 @interface BMKLocationManager : NSObject
84 
86 @property (nonatomic, weak, nullable) id<BMKLocationManagerDelegate> delegate;
87 
89 @property(nonatomic, assign) CLLocationDistance distanceFilter;
90 
92 @property(nonatomic, assign) CLLocationDegrees headingFilter;
93 
95 @property(nonatomic, assign) CLLocationAccuracy desiredAccuracy;
96 
98 @property(nonatomic, assign) CLActivityType activityType;
99 
101 @property(nonatomic, assign) BMKLocationCoordinateType coordinateType;
102 
104 @property(nonatomic, assign) BOOL pausesLocationUpdatesAutomatically;
105 
106 
108 @property(nonatomic, assign) BOOL allowsBackgroundLocationUpdates;
109 
111 @property(nonatomic, assign) NSInteger locationTimeout;
112 
114 @property(nonatomic, assign) NSInteger reGeocodeTimeout;
115 
117 @property (nonatomic, assign) BOOL locatingWithReGeocode;
118 
120 @property (nonatomic, assign) BOOL isNeedNewVersionReGeocode;
121 
122 
124 @property(nonatomic, copy, nullable) NSString * userID;
125 
127 @property (nonatomic, readonly) BMKLAccuracyAuthorization accuracyAuthorization;
128 
129 
137 - (BOOL)requestLocationWithReGeocode:(BOOL)withReGeocode withNetworkState:(BOOL)withNetWorkState completionBlock:(BMKLocatingCompletionBlock _Nonnull)completionBlock;
138 
142 - (void)startUpdatingLocation;
143 
147 - (void)stopUpdatingLocation;
148 
152 - (void)requestNetworkState;
153 
154 
159 + (BOOL)headingAvailable;
160 
164 - (void)startUpdatingHeading;
165 
169 - (void)stopUpdatingHeading;
170 
174 - (void)tryIndoorLocation;
175 
179 - (void)stopIndoorLocation;
180 
181 
189 + (CLLocationCoordinate2D) BMKLocationCoordinateConvert:(CLLocationCoordinate2D) coordinate SrcType:(BMKLocationCoordinateType)srctype DesType:(BMKLocationCoordinateType)destype;
190 
197 + (BOOL) BMKLocationDataAvailableForCoordinate:(CLLocationCoordinate2D)coordinate withCoorType:(BMKLocationCoordinateType)coortype;
198 
199 
200 
205 - (CLAuthorizationStatus)authorizationStatus;
206 
207 
214 - (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString * _Nonnull)purposeKey completion:(void(^ _Nullable)(NSError * _Nullable))completion API_AVAILABLE(ios(14.0));
215 
221 - (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString * _Nonnull)purposeKey API_AVAILABLE(ios(14.0));
222 
223 
224 @end
225 
226 #pragma mark - BMKLocationManagerDelegate
227 
228 
230 @protocol BMKLocationManagerDelegate <NSObject>
231 
232 @optional
233 
240 - (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager doRequestAlwaysAuthorization:(CLLocationManager * _Nonnull)locationManager;
241 
247 - (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager didFailWithError:(NSError * _Nullable)error;
248 
249 
256 - (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager didUpdateLocation:(BMKLocation * _Nullable)location orError:(NSError * _Nullable)error;
257 
263 - (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status API_DEPRECATED_WITH_REPLACEMENT("-BMKLocationManagerDidChangeAuthorization", ios(4.2, 14.0));
264 
265 
270 - (void)BMKLocationManagerDidChangeAuthorization:(BMKLocationManager * _Nonnull)manager;
271 
272 
277 - (BOOL)BMKLocationManagerShouldDisplayHeadingCalibration:(BMKLocationManager * _Nonnull)manager;
278 
284 - (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager
285  didUpdateHeading:(CLHeading * _Nullable)heading;
286 
293 - (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager
294  didUpdateNetworkState:(BMKLocationNetworkState)state orError:(NSError * _Nullable)error;
295 
296 
297 @end
298 
299 
BMKLocationManager::locationTimeout
NSInteger locationTimeout
指定单次定位超时时间,默认为10s。最小值是2s。注意单次定位请求前设置。注意: 单次定位超时时间从确定了定位权限(非kCLAuthorizationStatusNotDetermined状态)后开始计...
Definition: BMKLocationManager.h:111
-[BMKLocationManager startUpdatingHeading]
void startUpdatingHeading()
该方法为BMKLocationManager开始设备朝向事件回调。
BMKLocationManager::isNeedNewVersionReGeocode
BOOL isNeedNewVersionReGeocode
定位sdk-v1.3之后,开发者可以选择是否需要最新版本rgc数据,1.9之后默认是需要YES;YES的情况下,定位sdk会实时返回最新的rgc数据,如城市变更等数据都会实时更新
Definition: BMKLocationManager.h:120
NS_ENUM
typedef NS_ENUM(NSUInteger, BMKLocationCoordinateType)
Definition: BMKLocationManager.h:18
BMKLocationManager::desiredAccuracy
CLLocationAccuracy desiredAccuracy
设定定位精度。默认为 kCLLocationAccuracyBest。
Definition: BMKLocationManager.h:95
BMKLocationReGeocode.h
-[BMKLocationManager authorizationStatus]
CLAuthorizationStatus authorizationStatus()
返回当前定位权限
BMKLocationManager::locatingWithReGeocode
BOOL locatingWithReGeocode
连续定位是否返回逆地理信息,默认YES。
Definition: BMKLocationManager.h:117
-[BMKLocationManager tryIndoorLocation]
void tryIndoorLocation()
该方法为BMKLocationManager尝试使用高精度室内定位。在特定的室内场景下会有更高精度的定位回调,只在室内定位版本生效。
BMKLocationManager::coordinateType
BMKLocationCoordinateType coordinateType
设定定位坐标系类型。默认为 BMKLocationCoordinateTypeGCJ02。
Definition: BMKLocationManager.h:101
BMKLocationManager::distanceFilter
CLLocationDistance distanceFilter
设定定位的最小更新距离。默认为 kCLDistanceFilterNone。
Definition: BMKLocationManager.h:89
BMKLocationManager::accuracyAuthorization
BMKLAccuracyAuthorization accuracyAuthorization
返回定位精度等级,IOS14之后用户可以直接控制返回定位的精度等级,开发者可以通过这个值适配不同定位等级下的产品逻辑
Definition: BMKLocationManager.h:127
BMKLocation.h
-[BMKLocationManager startUpdatingLocation]
void startUpdatingLocation()
开始连续定位。调用此方法会cancel掉所有的单次定位请求。
+[BMKLocationManager headingAvailable]
BOOL headingAvailable()
该方法返回设备是否支持设备朝向事件回调。
BMKLocationManager::reGeocodeTimeout
NSInteger reGeocodeTimeout
指定单次定位逆地理超时时间,默认为10s。最小值是2s。注意单次定位请求前设置。
Definition: BMKLocationManager.h:114
BMKLocationErrorDomain
FOUNDATION_EXPORT NSErrorDomain const _Nonnull BMKLocationErrorDomain
BMKLocation errorDomain
Definition: BMKLocationManager.h:37
BMKLocationManager::delegate
id< BMKLocationManagerDelegate > delegate
实现了 BMKLocationManagerDelegate 协议的类指针。
Definition: BMKLocationManager.h:86
BMKLocationManager::activityType
CLActivityType activityType
设定定位类型。默认为 CLActivityTypeAutomotiveNavigation。
Definition: BMKLocationManager.h:98
BMKLocationManager
BMKLocationManager类。初始化之前请设置 BMKLocationAuth 中的APIKey,否则将无法正常使用服务.
Definition: BMKLocationManager.h:84
BMKLocationManager::headingFilter
CLLocationDegrees headingFilter
设定设备朝向最小更新角度。默认为 1。since 2.0.5
Definition: BMKLocationManager.h:92
BMKLocationManagerDelegate-p
BMKLocationManagerDelegate 协议定义了发生错误时的错误回调方法,连续定位的回调方法等。
Definition: BMKLocationManager.h:230
-[BMKLocationManager stopUpdatingHeading]
void stopUpdatingHeading()
该方法为BMKLocationManager停止设备朝向事件回调。
BMKLocationManager::allowsBackgroundLocationUpdates
BOOL allowsBackgroundLocationUpdates
是否允许后台定位。默认为NO。只在iOS 9.0及之后起作用。设置为YES的时候必须保证 Background Modes 中的 Location updates 处于选中状态,否则会抛出异常。由于iO...
Definition: BMKLocationManager.h:108
BMKLocationManager::pausesLocationUpdatesAutomatically
BOOL pausesLocationUpdatesAutomatically
指定定位是否会被系统自动暂停。默认为NO。
Definition: BMKLocationManager.h:104
-[BMKLocationManager stopIndoorLocation]
void stopIndoorLocation()
该方法为BMKLocationManager会关闭高精度室内定位,只在室内定位版本生效。
BMKLocationManager::userID
NSString * userID
开发者可以指定该用户的id,用于后续统一识别用户,便于查找问题
Definition: BMKLocationManager.h:124
-[BMKLocationManager requestNetworkState]
void requestNetworkState()
请求网络状态结果回调。
BMKLocation
描述百度iOS 定位数据
Definition: BMKLocation.h:40
BMKLocatingCompletionBlock
void(^ BMKLocatingCompletionBlock)(BMKLocation *_Nullable location, BMKLocationNetworkState state, NSError *_Nullable error)
单次定位返回Block
Definition: BMKLocationManager.h:73
-[BMKLocationManager stopUpdatingLocation]
void stopUpdatingLocation()
停止连续定位。调用此方法会cancel掉所有的单次定位请求,可以用来取消单次定位。