expo-gaode-map 2.0.0-alpha.6 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,423 +0,0 @@
1
- # 项目架构文档
2
-
3
- [English](./ARCHITECTURE.en.md) | 简体中文
4
-
5
- 本文档详细说明了 expo-gaode-map 项目的代码结构和各个文件的职责。
6
-
7
- ## 目录结构概览
8
-
9
- ```
10
- expo-gaode-map/
11
- ├── src/ # TypeScript 源代码
12
- ├── ios/ # iOS 原生代码
13
- ├── android/ # Android 原生代码
14
- ├── docs/ # 文档
15
- └── example/ # 示例应用
16
- ```
17
-
18
- ---
19
-
20
- ## iOS 代码结构
21
-
22
- ```
23
- ios/
24
- ├── ExpoGaodeMapModule.swift # Expo 模块定义
25
- ├── ExpoGaodeMapView.swift # 地图视图组件
26
- ├── ExpoGaodeMap.podspec # CocoaPods 配置
27
- ├── managers/ # 管理器类
28
- │ ├── CameraManager.swift # 相机控制管理器
29
- │ ├── UIManager.swift # UI 和手势管理器
30
- │ └── OverlayManager.swift # 覆盖物管理器
31
- ├── modules/ # 功能模块
32
- │ ├── LocationManager.swift # 定位管理器
33
- │ └── ColorParser.swift # 颜色解析工具
34
- ├── utils/ # 工具类
35
- │ └── PermissionManager.swift # 权限管理器
36
- └── overlays/ # 覆盖物视图
37
- ├── CircleView.swift # 圆形覆盖物
38
- ├── MarkerView.swift # 标记点
39
- ├── PolylineView.swift # 折线
40
- ├── PolygonView.swift # 多边形
41
- ├── HeatMapView.swift # 热力图
42
- ├── MultiPointView.swift # 海量点
43
- └── ClusterView.swift # 点聚合
44
- ```
45
-
46
- ### iOS 文件说明
47
-
48
- #### 核心文件
49
-
50
- - **ExpoGaodeMapModule.swift**
51
- - Expo 模块的主入口
52
- - 注册地图视图和覆盖物视图
53
- - 定义 SDK 初始化方法
54
- - 定义定位相关方法
55
- - 管理定位监听器生命周期
56
-
57
- - **ExpoGaodeMapView.swift**
58
- - 地图视图的主要实现
59
- - 管理地图属性(类型、相机位置等)
60
- - 处理地图事件(点击、长按等)
61
- - 协调各个管理器
62
- - 管理子视图(覆盖物)
63
-
64
- - **ExpoGaodeMap.podspec**
65
- - CocoaPods 依赖配置
66
- - 定义 iOS SDK 版本要求
67
- - 指定高德地图和定位 SDK 依赖
68
-
69
- #### 管理器类 (managers/)
70
-
71
- - **CameraManager.swift**
72
- - 相机位置控制
73
- - 缩放级别管理
74
- - 地图中心点设置
75
- - 倾斜和旋转控制
76
- - 屏幕坐标与地理坐标转换
77
-
78
- - **UIManager.swift**
79
- - 地图类型设置(标准/卫星/夜间/导航)
80
- - UI 控件显示(缩放、指南针、比例尺)
81
- - 手势控制(缩放、滚动、旋转、倾斜)
82
- - 用户位置显示和样式
83
- - 图层显示(交通、建筑、室内地图)
84
-
85
- - **OverlayManager.swift**
86
- - 圆形覆盖物管理
87
- - 标记点管理
88
- - 折线管理(支持纹理)
89
- - 多边形管理
90
- - 覆盖物渲染器
91
- - 纹理图片加载
92
-
93
- #### 功能模块 (modules/)
94
-
95
- - **LocationManager.swift**
96
- - 连续定位和单次定位
97
- - 定位配置(精度、间隔、模式)
98
- - 逆地理编码
99
- - 方向传感器
100
- - 定位结果格式化
101
-
102
- - **ColorParser.swift**
103
- - 颜色值解析
104
- - 支持多种颜色格式
105
-
106
- #### 工具类 (utils/)
107
-
108
- - **PermissionManager.swift**
109
- - 位置权限请求
110
- - 权限状态查询
111
- - 权限变化监听
112
-
113
- #### 覆盖物视图 (overlays/)
114
-
115
- - **CircleView.swift**
116
- - 圆形覆盖物视图实现
117
- - 支持填充色、边框色、边框宽度
118
-
119
- - **MarkerView.swift**
120
- - 标记点视图实现
121
- - 支持标题、描述、拖拽
122
-
123
- - **PolylineView.swift**
124
- - 折线视图实现
125
- - 支持线宽、颜色、纹理
126
-
127
- - **PolygonView.swift**
128
- - 多边形视图实现
129
- - 支持填充色、边框色、边框宽度
130
-
131
- - **HeatMapView.swift**
132
- - 热力图视图实现
133
- - 支持半径、透明度配置
134
-
135
- - **MultiPointView.swift**
136
- - 海量点视图实现
137
- - 高性能点位渲染
138
-
139
- - **ClusterView.swift**
140
- - 点聚合视图实现
141
- - 自动聚合邻近点位
142
-
143
- ---
144
-
145
- ## Android 代码结构
146
-
147
- ```
148
- android/
149
- └── src/main/java/expo/modules/gaodemap/
150
- ├── ExpoGaodeMapModule.kt # Expo 模块定义
151
- ├── ExpoGaodeMapView.kt # 地图视图组件
152
- ├── managers/ # 管理器类
153
- │ ├── CameraManager.kt # 相机控制管理器
154
- │ ├── UIManager.kt # UI 和手势管理器
155
- │ └── OverlayManager.kt # 覆盖物管理器
156
- ├── modules/ # 功能模块
157
- │ ├── SDKInitializer.kt # SDK 初始化
158
- │ └── LocationManager.kt # 定位管理器
159
- ├── utils/ # 工具类
160
- │ └── ColorParser.kt # 颜色解析工具
161
- └── overlays/ # 覆盖物视图
162
- ├── CircleView.kt # 圆形覆盖物
163
- ├── MarkerView.kt # 标记点
164
- ├── PolylineView.kt # 折线
165
- ├── PolygonView.kt # 多边形
166
- ├── HeatMapView.kt # 热力图
167
- ├── MultiPointView.kt # 海量点
168
- └── ClusterView.kt # 点聚合
169
- ```
170
-
171
- ### Android 文件说明
172
-
173
- #### 核心文件
174
-
175
- - **ExpoGaodeMapModule.kt**
176
- - Expo 模块的主入口
177
- - 注册地图视图和覆盖物视图
178
- - 定义 SDK 初始化方法
179
- - 定义定位相关方法
180
- - 定义权限管理方法
181
- - 管理定位监听器生命周期
182
-
183
- - **ExpoGaodeMapView.kt**
184
- - 地图视图的主要实现
185
- - 管理地图属性(类型、相机位置等)
186
- - 处理地图事件(点击、长按、加载)
187
- - 协调各个管理器
188
- - 管理子视图(覆盖物)
189
- - 处理生命周期和内存管理
190
-
191
- #### 管理器类 (managers/)
192
-
193
- - **CameraManager.kt**
194
- - 相机位置控制
195
- - 缩放级别管理(包括最大/最小限制)
196
- - 地图中心点设置
197
- - 倾斜和旋转控制
198
- - 屏幕坐标与地理坐标转换
199
- - 动画相机移动
200
-
201
- - **UIManager.kt**
202
- - 地图类型设置(标准/卫星/夜间/导航/公交)
203
- - UI 控件显示(缩放、指南针、比例尺)
204
- - 手势控制(缩放、滚动、旋转、倾斜)
205
- - 用户位置显示和样式
206
- - 自定义定位图标(支持网络图片)
207
- - 图层显示(交通、建筑、室内地图)
208
-
209
- - **OverlayManager.kt**
210
- - 圆形覆盖物管理
211
- - 标记点管理
212
- - 折线管理(支持纹理贴图)
213
- - 多边形管理
214
- - 覆盖物属性更新
215
- - 纹理图片加载(支持网络和本地)
216
-
217
- #### 功能模块 (modules/)
218
-
219
- - **SDKInitializer.kt**
220
- - SDK 初始化
221
- - 隐私合规设置
222
- - API Key 配置
223
- - 版本信息获取
224
-
225
- - **LocationManager.kt**
226
- - 连续定位和单次定位
227
- - 定位配置(精度、间隔、模式)
228
- - 逆地理编码
229
- - 坐标转换
230
- - 定位结果格式化
231
- - 资源清理
232
-
233
- #### 工具类 (utils/)
234
-
235
- - **ColorParser.kt**
236
- - 颜色值解析
237
- - 支持多种颜色格式(十六进制、整数)
238
- - 透明度处理
239
-
240
- #### 覆盖物视图 (overlays/)
241
-
242
- - **CircleView.kt**
243
- - 圆形覆盖物视图实现
244
- - 支持填充色、边框色、边框宽度
245
- - 属性动态更新
246
-
247
- - **MarkerView.kt**
248
- - 标记点视图实现
249
- - 支持标题、描述、拖拽
250
- - 自定义图标
251
-
252
- - **PolylineView.kt**
253
- - 折线视图实现
254
- - 支持线宽、颜色
255
- - 纹理贴图支持
256
-
257
- - **PolygonView.kt**
258
- - 多边形视图实现
259
- - 支持填充色、边框色、边框宽度
260
- - Z-Index 层级控制
261
-
262
- - **HeatMapView.kt**
263
- - 热力图视图实现
264
- - 支持半径、透明度配置
265
- - 高性能热力渲染
266
-
267
- - **MultiPointView.kt**
268
- - 海量点视图实现
269
- - 高性能点位渲染
270
- - 自定义点样式
271
-
272
- - **ClusterView.kt**
273
- - 点聚合视图实现
274
- - 自动聚合邻近点位
275
- - 可配置聚合半径和最小聚合数量
276
-
277
- ---
278
-
279
- ## TypeScript 代码结构
280
-
281
- ```
282
- src/
283
- ├── index.ts # 主导出文件
284
- ├── ExpoGaodeMapModule.ts # 原生模块导入
285
- ├── ExpoGaodeMapView.tsx # 地图视图组件
286
- ├── ExpoGaodeMap.types.ts # 类型定义导出
287
- ├── components/ # React 组件
288
- │ └── overlays/ # 覆盖物组件
289
- │ ├── index.ts # 覆盖物导出
290
- │ ├── Circle.tsx # 圆形组件
291
- │ ├── Marker.tsx # 标记点组件
292
- │ ├── Polyline.tsx # 折线组件
293
- │ ├── Polygon.tsx # 多边形组件
294
- │ ├── HeatMap.tsx # 热力图组件
295
- │ ├── MultiPoint.tsx # 海量点组件
296
- │ └── Cluster.tsx # 点聚合组件
297
- ├── modules/ # 功能模块
298
- │ ├── AMapSDK.ts # SDK 模块
299
- │ ├── AMapLocation.ts # 定位模块
300
- │ └── AMapView.ts # 地图视图模块(已废弃)
301
- └── types/ # TypeScript 类型定义
302
- ├── index.ts # 类型导出
303
- ├── common.types.ts # 通用类型
304
- ├── map-view.types.ts # 地图视图类型
305
- ├── location.types.ts # 定位类型
306
- ├── overlays.types.ts # 覆盖物类型
307
- └── sdk.types.ts # SDK 类型
308
- ```
309
-
310
- ### TypeScript 文件说明
311
-
312
- #### 核心文件
313
-
314
- - **index.ts**
315
- - 主导出文件
316
- - 导出所有公共 API
317
-
318
- - **ExpoGaodeMapModule.ts**
319
- - 原生模块导入
320
- - 事件类型定义
321
-
322
- - **ExpoGaodeMapView.tsx**
323
- - 地图视图 React 组件
324
- - 封装原生视图
325
- - 提供命令式 API(ref)
326
-
327
- - **ExpoGaodeMap.types.ts**
328
- - 重新导出所有类型
329
- - 提供便捷的类型导入
330
-
331
- #### 组件 (components/)
332
-
333
- 覆盖物组件提供声明式 API,作为 MapView 的子组件使用。
334
-
335
- #### 模块 (modules/)
336
-
337
- - **AMapSDK.ts**
338
- - SDK 初始化
339
- - 版本获取
340
-
341
- - **AMapLocation.ts**
342
- - 定位配置
343
- - 定位监听
344
- - 位置获取
345
-
346
- #### 类型 (types/)
347
-
348
- 定义了所有 TypeScript 类型,包括:
349
- - 地图配置
350
- - 相机位置
351
- - 覆盖物属性
352
- - 定位结果
353
- - 事件回调
354
-
355
- ---
356
-
357
- ## 架构设计原则
358
-
359
- ### 1. 职责分离
360
-
361
- - **Module**: 负责模块定义和方法注册
362
- - **View**: 负责视图创建和属性管理
363
- - **Manager**: 负责具体功能实现
364
- - **Overlay**: 负责覆盖物渲染
365
-
366
- ### 2. 跨平台一致性
367
-
368
- - iOS 和 Android 提供相同的 API
369
- - TypeScript 层统一封装
370
- - 差异在原生层处理
371
-
372
- ### 3. 内存管理
373
-
374
- - 使用弱引用避免循环引用
375
- - 及时清理监听器和资源
376
- - 主线程操作使用 Handler/DispatchQueue
377
-
378
- ### 4. 错误处理
379
-
380
- - Promise 处理异步操作
381
- - 统一的错误码和消息
382
- - 详细的错误日志
383
-
384
- ### 5. 性能优化
385
-
386
- - 主线程调度 UI 操作
387
- - 后台线程加载图片
388
- - 覆盖物按需渲染
389
-
390
- ---
391
-
392
- ## 开发指南
393
-
394
- ### 添加新功能
395
-
396
- 1. 在原生层实现功能(iOS 和 Android)
397
- 2. 在 Module 中注册方法
398
- 3. 在 TypeScript 层封装 API
399
- 4. 添加类型定义
400
- 5. 更新文档
401
-
402
- ### 调试技巧
403
-
404
- - 使用日志查看调用流程
405
- - 检查主线程操作
406
- - 验证内存泄露
407
- - 测试边界情况
408
-
409
- ### 代码规范
410
-
411
- - 使用详细的中文注释
412
- - 遵循平台命名规范
413
- - 保持代码整洁
414
- - 编写单元测试
415
-
416
- ---
417
-
418
- ## 相关文档
419
-
420
- - [README.md](../README.md) - 快速开始和基本使用
421
- - [API.md](./API.md) - 完整 API 文档
422
- - [EXAMPLES.md](./EXAMPLES.md) - 示例代码
423
- - [INITIALIZATION.md](./INITIALIZATION.md) - 初始化指南