BBASMLocationAdapterProtocol.h
3.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//
// BBASMLocationAdapterProtocol.h
// BBAMNP
//
// Created by baidu on 2018/9/6.
// Copyright © 2018年 baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import "BBASMAdapterBaseImplement.h"
@protocol BBASMLocationDataProtocol;
typedef NSString * BBASMLocationCallbackIdentifier;
typedef void(^BBASMLocationCallback)(BOOL authorized, NSError *error, id<BBASMLocationDataProtocol>);
typedef NS_ENUM(NSUInteger, BBASMLocationStatus) {
BBASMLocationStatusSuccess = 0,
BBASMLocationStatusServicesNotDetermined,
BBASMLocationStatusServicesDenied,
BBASMLocationStatusServicesRestricted,
BBASMLocationStatusServicesDisabled,
BBASMLocationStatusError,
};
typedef NS_ENUM(NSUInteger, BBASMLocationCoordinateType) {
BBASMLocationCoordinateTypeWGS84 = 0,
BBASMLocationCoordinateTypeGCJ02,
BBASMLocationCoordinateTypeBMK09MC,
BBASMLocationCoordinateTypeBMK09LL,
};
@protocol BBASMLocationAdapterProtocol <NSObject>
/**
* 获取定位信息-异步
* @discussion 根据指定坐标系类型异步获取定位信息。宿主app在实现该方法时,需要添加系统定位权限相关的请求和检查,swan-native不会触发和接管权限请求。
* @param type 坐标系类型
* @param completion 定位结果的callback
*/
+ (void)asyncGetLocationWithType:(BBASMLocationCoordinateType)type
completion:(void (^)(BBASMLocationStatus status, id<BBASMLocationDataProtocol> locationData))completion;
/**
* 获取位置信息-同步
* @discussion 根据指定坐标系类型同步获取定位信息。。宿主app在实现该方法时,需要添加系统定位权限相关的请求和检查,swan-native不会触发和接管权限请求。
* @param type 坐标系类型
* @return 定位结果, 可以为nil
*/
+ (id<BBASMLocationDataProtocol>)syncGetLocationWithType:(BBASMLocationCoordinateType)type;
/**
开启定位,并不断接收定位地理位置信息
@param locationCallback 不断接收定位信息的回调
@return BBALocationCallBackIdentifier 位置接收callback对应的唯一标示,stop、pause和resume方法都需要该标示
*/
+ (BBASMLocationCallbackIdentifier)startLocationWithCallback:(BBASMLocationCallback)locationCallback;
/**
停止定位
@param identifier 位置接收callback对应的唯一标示
*/
+ (void)stopLocationWithIdentifier:(BBASMLocationCallbackIdentifier)identifier;
/**
暂停定位
@param identifier 位置接收callback对应的唯一标示
*/
+ (void)pauseLocationWithIdentifier:(BBASMLocationCallbackIdentifier)identifier;
/**
恢复定位
@param identifier 位置接收callback对应的唯一标示
*/
+ (void)resumeLocationWithIdentifier:(BBASMLocationCallbackIdentifier)identifier;
@end
@protocol BBASMLocationDataProtocol <NSObject>
///位置基本信息
@property (nonatomic, strong) CLLocation *location;
///国家名字属性
@property(nonatomic, copy) NSString *country;
///国家编码属性
@property(nonatomic, copy) NSString *countryCode;
///省份名字属性
@property(nonatomic, copy) NSString *province;
///城市名字属性
@property(nonatomic, copy) NSString *city;
///城市编码属性
@property(nonatomic, copy) NSString *cityCode;
///区名字属性
@property(nonatomic, copy) NSString *district;
///街道名字属性
@property(nonatomic, copy) NSString *street;
///街道号码属性
@property(nonatomic, copy) NSString *streetNumber;
@end