BBASMMapAdapterProtocol.h
8.61 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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
//
// BBASMMapAdapterProtocol.h
// SWAN
//
// Created by baidu on 2018/9/10.
// Copyright © 2018年 baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import "BBASMAdapterBaseImplement.h"
#import <BBASchemeDispatcher/BBASchemeDispatcher.h>
typedef NS_ENUM(NSInteger, BBASMMapRegionChangeReason) {
BBASMMapRegionChangeReasonUnknown = -1, // 默认值, 未获取正确原因时使用的值.
BBASMMapRegionChangeReasonGesture = 1, // 手势触发导致地图区域变化,如双击、拖拽、滑动地图
BBASMMapRegionChangeReasonEvent = 2, // 地图上控件事件,如点击指南针返回2D地图。
BBASMMapRegionChangeReasonAPIs = 3, // 开发者调用接口、设置地图参数等导致地图区域变化
};
@protocol BBASMMapMarkerProtocol;
@protocol BBASMMapPolylineProtocol;
@protocol BBASMMapPolygonsProtocol;
@protocol BBASMMapCircleProtocol;
@protocol BBASMMapControlViewProtocol;
@protocol BBASMMapUIAdapterProtocol;
@protocol BBASMMapPolylineViewProtocol<NSObject>
@property (strong) UIColor *fillColor;
@property (strong) UIColor *strokeColor;
@end
@protocol BBASMMapAdapterProtocol;
@protocol BBASMMapKitControllerDelegate <NSObject>
/**
获取相对路径的全路径
@param controller id<BBASMMapAdapterProtocol>
@param path path
@return 全路径
*/
- (NSString *)mapKitController:(id<BBASMMapAdapterProtocol>)controller
fullPathOfRelativePath:(NSString *)path;
/**
定位授权
@param complete 请求系统授权完成回调
*/
- (void)requestLocationAuthFinish:(void(^)(BOOL result))complete;
@optional
@property (nonatomic, strong) NSString *appId;
/**
控件点击回调
*/
- (void)mapKitController:(id<BBASMMapAdapterProtocol>)controller didClickedControl:(id<BBASMMapControlViewProtocol>)control;
//点击标记点时触发
- (void)mapKitController:(id<BBASMMapAdapterProtocol>)controller didClickedMarker:(id<BBASMMapMarkerProtocol>)marker;
//当点击annotation view弹出的泡泡时,调用此接口
- (void)mapKitController:(id<BBASMMapAdapterProtocol>)controller didClickedCallOut:(id<BBASMMapMarkerProtocol>)callOut;
//视野发生变化
- (void)regionWillChange:(id<BBASMMapAdapterProtocol>)controller;
//视野发生变化时触发
- (void)regionDidChange:(id<BBASMMapAdapterProtocol>)controller;
/**
地图显示区域变化时触发,
@param controller 触发 regionChange 的来源 controller.
@param reason 触发 regionChange 的原因.
*/
- (void)regionDidChange:(id<BBASMMapAdapterProtocol>)controller reason:(BBASMMapRegionChangeReason)reason;
//渲染完成
- (void)mapViewDidFinishRendering:(id<BBASMMapAdapterProtocol>)controller;
//地图点击
- (void)mapKitController:(id<BBASMMapAdapterProtocol>)controller didClickedMap:(CLLocationCoordinate2D)coordinate;
//用户位置改变
- (void)userLocationChanged:(id<BBASMMapAdapterProtocol>)controller;
// 点中地图Poi标注
- (void)mapKitController:(id<BBASMMapAdapterProtocol>)controller onClickedMapPoiName:(NSString *)name PoiCoordinate:(CLLocationCoordinate2D)coordinate;
/**
* @brief 请求权限
* @param appId appId
* @param complete 完成回调
*/
- (void)requestLocationAuthWithAppId:(NSString *)appId completionBlock:(void(^)(BOOL result))complete;
@end
@protocol BBASMMapKitUserLocationProtocol<NSObject>
/// 位置更新状态,如果正在更新位置信息,则该值为YES
@property (readonly, nonatomic, getter=isUpdating) BOOL updating;
/// 位置信息,尚未定位成功,则该值为nil
@property (readonly, nonatomic,strong) CLLocation *location;
/// heading信息,尚未定位成功,则该值为nil
@property (readonly, nonatomic, strong) CLHeading *heading;
/// 定位标注点要显示的标题信息
@property (copy, nonatomic) NSString *title;
/// 定位标注点要显示的子标题信息.
@property (copy, nonatomic) NSString *subtitle;
@end
@protocol BBASMMapAdapterProtocol <NSObject>
@property (nonatomic, strong) NSString *appId;
/**
绑定上下文信息
*/
@property(nonatomic,strong)id context;
/**
地图ID
*/
@property(nonatomic,copy)NSString *mapID;
/**
比例尺的位置,设定坐标以MapView左上角为原点,向右向下增长
*/
@property (nonatomic) CGPoint mapScaleBarPosition;
/**
端能力派发器
*/
@property (nonatomic, strong) BBASchemeDispatcher *dispatcher;
/**
代理
*/
@property(nonatomic,weak)id<BBASMMapKitControllerDelegate> delegate;
/**
开启地图服务,该服务仅开启一次
*/
+ (void)startMapService;
/**
获取mapView
@return 地图View
*/
- (UIView *)mapView;
/**
创建map组件
@param mapAttr map 配置
@return 地图View
*/
- (UIView *)mapView:(id<BBASMMapUIAdapterProtocol>)mapAttr;
/**
销毁map组件
*/
- (BOOL)destroy;
/**
移动地图中心点到location位置 无动画
@param location location
*/
- (void)moveToLocation:(CLLocationCoordinate2D)location;
/**
移动地图中心点到location位置
@param location location
@param animated YES 带动画
*/
- (void)moveToLocation:(CLLocationCoordinate2D)location animated:(BOOL)animated;
/**
获取当前地图的视野范围,返回西南角,东北角的经纬度
@return @[西南角,东北角]
*/
- (NSArray<CLLocation*> *)getRegion;
/**
获取当前地图的缩放级别
@return float
*/
- (float)getScale;
/**
获取当前地图中心的经纬度
@return CLLocationCoordinate2D
*/
- (CLLocationCoordinate2D)getCenterLocation;
/**
在地图上显示圆
@param aCircle BBASMMapKitCircle
*/
- (BOOL)showCircle:(id<BBASMMapCircleProtocol>)aCircle;
/**
在地图上画线 指定一系列坐标点,从数组第一项连线至最后一项
@param polyline BBASMMapKitPolyline
*/
- (BOOL)showPolyline:(id<BBASMMapPolylineProtocol>)polyline;
/**
在地图上画多边形
@param polygons BBASMMapKitPolygons
*/
- (BOOL)showPolygons:(id<BBASMMapPolygonsProtocol>)polygons;
/**
添加标记
@param marker BBASMMapKitMarker
*/
- (BOOL)showMark:(id<BBASMMapMarkerProtocol>)marker;
/**
在地图上添加控件
@param control BBASMMapKitControl
*/
- (void)showControl:(id<BBASMMapControlViewProtocol>)control;
/**
显示用户位置
@param show YES显示
*/
- (void)showUserLocation:(BOOL)show;
/**
用户所在位置经纬度
@return CLLocationCoordinate2D
*/
- (CLLocationCoordinate2D)userLocation;
/**
更新map配置
@param attr BBASMMapKitMap
*/
- (void)update:(id<BBASMMapUIAdapterProtocol>)attr;
/**
设置map参数
@param attr BBASMMapKitMap
*/
- (void)setMapAttr:(id<BBASMMapUIAdapterProtocol>)attr;
/**
平移marker
@param markid markid
@param destination destination 要移动到的点的坐标
@param autoRotate 是否自动旋转 暂不支持
@param rotate rotate 旋转角度 暂不支持
@param duration duration 动画时长
@param finish finish 动画完成回调
*/
- (void)translateMarker:(NSString *)markid
destination:(CLLocationCoordinate2D)destination
autoRotate:(BOOL)autoRotate
rotate:(double)rotate
duration:(double)duration
finsh:(void(^)(void))finish;
/**
缩放视野展示所有经纬度
@param points 经纬度列表
@param padding 坐标点形成的矩形边缘到地图边缘的距离
@return YES成功
*/
- (BOOL)includePoints:(NSArray<CLLocation *> *)points padding:(UIEdgeInsets)padding;
/**
获取当前用户位置
@return id<BBASMMapKitUserLocationProtocol>
*/
- (id<BBASMMapKitUserLocationProtocol> )curUserLocation;
/**
*当mapview即将被显式的时候调用,恢复之前存储的mapview状态。
*/
-(void)viewWillAppear;
/**
*当mapview即将被隐藏的时候调用,存储当前mapview的状态。
*/
-(void)viewWillDisappear;
/**
计算2个坐标的直线距离
@param coordinate CLLocationCoordinate2D
@param otherCoordinate CLLocationCoordinate2D
@return CLLocationDistance
*/
- (CLLocationDistance)distanceBetween:(CLLocationCoordinate2D)coordinate
andCoordinate:(CLLocationCoordinate2D)otherCoordinate;
/**
添加默认大头针标注
@param coordinate CLLocationCoordinate2D
@return YES 添加成功
*/
- (BOOL)addPointAnnotation:(CLLocationCoordinate2D)coordinate;
/**
比例尺的宽高
@return 比例尺的宽高
*/
- (CGSize) mapScaleBarSize;
/**
返回地图的logo图片名称
@return 地图的logo图片名称
*/
- (NSString *)logoImageName;
/**
地图默认配置
配置显示比例尺 地图logo位置等
@param mapView 地图View
@param zoomLevel 缩放级别
*/
+ (void)configMapView:(UIView*)mapView zoomLevel:(float)zoomLevel;
/**
关闭地图移动的手势
@param scrollEnabled YES:可以移动 NO:禁止移动
*/
- (void)setMapGestureScrollEnabled:(BOOL)scrollEnabled;
@end