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.
- package/DEPLOY_DOCS.md +209 -0
- package/PUBLISHING.md +173 -155
- package/README.en.md +1 -25
- package/README.md +26 -456
- package/RELEASE_CHECKLIST.md +146 -0
- package/RELEASE_v2.0.0.md +59 -0
- package/app.plugin.js +11 -0
- package/ios/modules/LocationManager.swift +4 -3
- package/package.json +8 -5
- package/plugin/README.md +52 -0
- package/plugin/build/withGaodeMap.d.ts +20 -0
- package/plugin/build/withGaodeMap.js +147 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/docs/API.en.md +0 -408
- package/docs/API.md +0 -494
- package/docs/ARCHITECTURE.en.md +0 -423
- package/docs/ARCHITECTURE.md +0 -423
- package/docs/EXAMPLES.en.md +0 -651
- package/docs/EXAMPLES.md +0 -922
- package/docs/INITIALIZATION.en.md +0 -346
- package/docs/INITIALIZATION.md +0 -335
- package/docs/MIGRATION.md +0 -423
- package/docs/RELEASE_GUIDE.md +0 -178
package/docs/ARCHITECTURE.md
DELETED
|
@@ -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) - 初始化指南
|