expo-gaode-map 0.1.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.
Files changed (132) hide show
  1. package/.eslintrc.js +5 -0
  2. package/PUBLISHING.md +244 -0
  3. package/README.md +990 -0
  4. package/android/build.gradle +48 -0
  5. package/android/src/main/AndroidManifest.xml +40 -0
  6. package/android/src/main/java/expo/modules/gaodemap/ExpoGaodeMapModule.kt +455 -0
  7. package/android/src/main/java/expo/modules/gaodemap/ExpoGaodeMapView.kt +337 -0
  8. package/android/src/main/java/expo/modules/gaodemap/managers/CameraManager.kt +128 -0
  9. package/android/src/main/java/expo/modules/gaodemap/managers/OverlayManager.kt +324 -0
  10. package/android/src/main/java/expo/modules/gaodemap/managers/UIManager.kt +122 -0
  11. package/android/src/main/java/expo/modules/gaodemap/modules/LocationManager.kt +247 -0
  12. package/android/src/main/java/expo/modules/gaodemap/modules/SDKInitializer.kt +45 -0
  13. package/android/src/main/java/expo/modules/gaodemap/overlays/CircleView.kt +151 -0
  14. package/android/src/main/java/expo/modules/gaodemap/overlays/ClusterView.kt +127 -0
  15. package/android/src/main/java/expo/modules/gaodemap/overlays/HeatMapView.kt +97 -0
  16. package/android/src/main/java/expo/modules/gaodemap/overlays/MarkerView.kt +204 -0
  17. package/android/src/main/java/expo/modules/gaodemap/overlays/MultiPointView.kt +103 -0
  18. package/android/src/main/java/expo/modules/gaodemap/overlays/PolygonView.kt +114 -0
  19. package/android/src/main/java/expo/modules/gaodemap/overlays/PolylineView.kt +138 -0
  20. package/build/ExpoGaodeMap.types.d.ts +24 -0
  21. package/build/ExpoGaodeMap.types.d.ts.map +1 -0
  22. package/build/ExpoGaodeMap.types.js +14 -0
  23. package/build/ExpoGaodeMap.types.js.map +1 -0
  24. package/build/ExpoGaodeMapModule.d.ts +7 -0
  25. package/build/ExpoGaodeMapModule.d.ts.map +1 -0
  26. package/build/ExpoGaodeMapModule.js +14 -0
  27. package/build/ExpoGaodeMapModule.js.map +1 -0
  28. package/build/ExpoGaodeMapView.d.ts +31 -0
  29. package/build/ExpoGaodeMapView.d.ts.map +1 -0
  30. package/build/ExpoGaodeMapView.js +141 -0
  31. package/build/ExpoGaodeMapView.js.map +1 -0
  32. package/build/components/overlays/Circle.d.ts +18 -0
  33. package/build/components/overlays/Circle.d.ts.map +1 -0
  34. package/build/components/overlays/Circle.js +63 -0
  35. package/build/components/overlays/Circle.js.map +1 -0
  36. package/build/components/overlays/Cluster.d.ts +22 -0
  37. package/build/components/overlays/Cluster.d.ts.map +1 -0
  38. package/build/components/overlays/Cluster.js +35 -0
  39. package/build/components/overlays/Cluster.js.map +1 -0
  40. package/build/components/overlays/HeatMap.d.ts +21 -0
  41. package/build/components/overlays/HeatMap.d.ts.map +1 -0
  42. package/build/components/overlays/HeatMap.js +34 -0
  43. package/build/components/overlays/HeatMap.js.map +1 -0
  44. package/build/components/overlays/Marker.d.ts +17 -0
  45. package/build/components/overlays/Marker.d.ts.map +1 -0
  46. package/build/components/overlays/Marker.js +57 -0
  47. package/build/components/overlays/Marker.js.map +1 -0
  48. package/build/components/overlays/MultiPoint.d.ts +21 -0
  49. package/build/components/overlays/MultiPoint.d.ts.map +1 -0
  50. package/build/components/overlays/MultiPoint.js +34 -0
  51. package/build/components/overlays/MultiPoint.js.map +1 -0
  52. package/build/components/overlays/Polygon.d.ts +22 -0
  53. package/build/components/overlays/Polygon.d.ts.map +1 -0
  54. package/build/components/overlays/Polygon.js +100 -0
  55. package/build/components/overlays/Polygon.js.map +1 -0
  56. package/build/components/overlays/Polyline.d.ts +20 -0
  57. package/build/components/overlays/Polyline.d.ts.map +1 -0
  58. package/build/components/overlays/Polyline.js +60 -0
  59. package/build/components/overlays/Polyline.js.map +1 -0
  60. package/build/components/overlays/index.d.ts +8 -0
  61. package/build/components/overlays/index.d.ts.map +1 -0
  62. package/build/components/overlays/index.js +18 -0
  63. package/build/components/overlays/index.js.map +1 -0
  64. package/build/index.d.ts +10 -0
  65. package/build/index.d.ts.map +1 -0
  66. package/build/index.js +28 -0
  67. package/build/index.js.map +1 -0
  68. package/build/modules/AMapLocation.d.ts +58 -0
  69. package/build/modules/AMapLocation.d.ts.map +1 -0
  70. package/build/modules/AMapLocation.js +141 -0
  71. package/build/modules/AMapLocation.js.map +1 -0
  72. package/build/modules/AMapSDK.d.ts +27 -0
  73. package/build/modules/AMapSDK.d.ts.map +1 -0
  74. package/build/modules/AMapSDK.js +43 -0
  75. package/build/modules/AMapSDK.js.map +1 -0
  76. package/build/modules/AMapView.d.ts +39 -0
  77. package/build/modules/AMapView.d.ts.map +1 -0
  78. package/build/modules/AMapView.js +61 -0
  79. package/build/modules/AMapView.js.map +1 -0
  80. package/build/types/common.types.d.ts +133 -0
  81. package/build/types/common.types.d.ts.map +1 -0
  82. package/build/types/common.types.js +31 -0
  83. package/build/types/common.types.js.map +1 -0
  84. package/build/types/index.d.ts +12 -0
  85. package/build/types/index.d.ts.map +1 -0
  86. package/build/types/index.js +17 -0
  87. package/build/types/index.js.map +1 -0
  88. package/build/types/location.types.d.ts +306 -0
  89. package/build/types/location.types.d.ts.map +1 -0
  90. package/build/types/location.types.js +93 -0
  91. package/build/types/location.types.js.map +1 -0
  92. package/build/types/map-view.types.d.ts +213 -0
  93. package/build/types/map-view.types.d.ts.map +1 -0
  94. package/build/types/map-view.types.js +6 -0
  95. package/build/types/map-view.types.js.map +1 -0
  96. package/build/types/overlays.types.d.ts +296 -0
  97. package/build/types/overlays.types.d.ts.map +1 -0
  98. package/build/types/overlays.types.js +6 -0
  99. package/build/types/overlays.types.js.map +1 -0
  100. package/build/types/sdk.types.d.ts +113 -0
  101. package/build/types/sdk.types.d.ts.map +1 -0
  102. package/build/types/sdk.types.js +6 -0
  103. package/build/types/sdk.types.js.map +1 -0
  104. package/docs/followUserLocation.md +186 -0
  105. package/expo-module.config.json +9 -0
  106. package/ios/ExpoGaodeMap.podspec +29 -0
  107. package/ios/ExpoGaodeMapModule.swift +48 -0
  108. package/ios/ExpoGaodeMapView.swift +38 -0
  109. package/package.json +45 -0
  110. package/src/ExpoGaodeMap.types.ts +68 -0
  111. package/src/ExpoGaodeMapModule.ts +21 -0
  112. package/src/ExpoGaodeMapView.tsx +151 -0
  113. package/src/components/overlays/Circle.tsx +73 -0
  114. package/src/components/overlays/Cluster.tsx +38 -0
  115. package/src/components/overlays/HeatMap.tsx +37 -0
  116. package/src/components/overlays/Marker.tsx +66 -0
  117. package/src/components/overlays/MultiPoint.tsx +37 -0
  118. package/src/components/overlays/Polygon.tsx +107 -0
  119. package/src/components/overlays/Polyline.tsx +69 -0
  120. package/src/components/overlays/index.ts +18 -0
  121. package/src/index.ts +55 -0
  122. package/src/modules/AMapLocation.ts +164 -0
  123. package/src/modules/AMapSDK.ts +48 -0
  124. package/src/modules/AMapView.ts +68 -0
  125. package/src/types/README.md +186 -0
  126. package/src/types/common.types.ts +155 -0
  127. package/src/types/index.ts +74 -0
  128. package/src/types/location.types.ts +364 -0
  129. package/src/types/map-view.types.ts +249 -0
  130. package/src/types/overlays.types.ts +346 -0
  131. package/src/types/sdk.types.ts +128 -0
  132. package/tsconfig.json +9 -0
@@ -0,0 +1,186 @@
1
+ # 高德地图 Expo Module 类型定义
2
+
3
+ 本目录包含基于 Expo Modules API 重新设计的高德地图类型定义,从旧的 `requireNativeComponent` 方式迁移到新的 Expo Modules 架构。
4
+
5
+ ## 文件结构
6
+
7
+ ```
8
+ src/types/
9
+ ├── index.ts # 统一导出入口
10
+ ├── common.types.ts # 通用类型定义
11
+ ├── map-view.types.ts # 地图视图类型
12
+ ├── location.types.ts # 定位相关类型
13
+ ├── overlays.types.ts # 覆盖物类型(标记、折线、多边形等)
14
+ ├── sdk.types.ts # SDK 模块接口定义
15
+ └── README.md # 本文件
16
+ ```
17
+
18
+ ## 主要变化
19
+
20
+ ### 1. 从旧版本迁移
21
+
22
+ **旧版本方式** (基于 `requireNativeComponent`):
23
+ ```typescript
24
+ import { requireNativeComponent } from 'react-native';
25
+ const AMapView = requireNativeComponent<MapViewProps>('AMapView');
26
+ ```
27
+
28
+ **新版本方式** (基于 Expo Modules):
29
+ ```typescript
30
+ import { requireNativeView } from 'expo-modules-core';
31
+ // 或在 Module Definition 中使用 View() 定义
32
+ ```
33
+
34
+ ### 2. 类型系统改进
35
+
36
+ - **模块化**: 将类型按功能分类到不同文件
37
+ - **类型安全**: 使用 TypeScript 严格模式
38
+ - **文档完善**: 每个类型都有详细的 JSDoc 注释
39
+ - **平台标注**: 使用 `@platform` 标注平台特定功能
40
+
41
+ ### 3. 事件处理改进
42
+
43
+ **旧版本**:
44
+ ```typescript
45
+ onPress?: (event: NativeSyntheticEvent<LatLng>) => void;
46
+ ```
47
+
48
+ **新版本** (Expo Modules 标准):
49
+ ```typescript
50
+ onPress?: (event: { nativeEvent: LatLng }) => void;
51
+ ```
52
+
53
+ ## 使用示例
54
+
55
+ ### 导入类型
56
+
57
+ ```typescript
58
+ // 导入通用类型
59
+ import type { LatLng, CameraPosition, MapType } from './types';
60
+
61
+ // 导入地图视图类型
62
+ import type { MapViewProps, MapViewMethods } from './types';
63
+
64
+ // 导入定位类型
65
+ import type {
66
+ Coordinates,
67
+ ReGeocode,
68
+ LocationOptions,
69
+ LocationAccuracy,
70
+ LocationMode
71
+ } from './types';
72
+
73
+ // 导入覆盖物类型
74
+ import type {
75
+ MarkerProps,
76
+ PolylineProps,
77
+ PolygonProps
78
+ } from './types';
79
+ ```
80
+
81
+ ### 类型使用示例
82
+
83
+ #### 1. 地图视图
84
+
85
+ ```typescript
86
+ import type { MapViewProps } from './types';
87
+
88
+ const mapConfig: MapViewProps = {
89
+ mapType: MapType.Standard,
90
+ initialCameraPosition: {
91
+ target: { latitude: 39.9, longitude: 116.4 },
92
+ zoom: 10,
93
+ },
94
+ myLocationEnabled: true,
95
+ compassEnabled: true,
96
+ onPress: (event) => {
97
+ console.log('点击位置:', event.nativeEvent);
98
+ },
99
+ };
100
+ ```
101
+
102
+ #### 2. 定位配置
103
+
104
+ ```typescript
105
+ import type { LocationOptions } from './types';
106
+ import { LocationMode, LocationAccuracy } from './types';
107
+
108
+ const locationConfig: LocationOptions = {
109
+ withReGeocode: true,
110
+ mode: LocationMode.HighAccuracy,
111
+ accuracy: LocationAccuracy.HundredMeters,
112
+ interval: 2000,
113
+ geoLanguage: 'ZH',
114
+ };
115
+ ```
116
+
117
+ #### 3. 标记点
118
+
119
+ ```typescript
120
+ import type { MarkerProps } from './types';
121
+
122
+ const markerConfig: MarkerProps = {
123
+ position: { latitude: 39.9, longitude: 116.4 },
124
+ title: '北京',
125
+ draggable: true,
126
+ onPress: () => console.log('标记被点击'),
127
+ onDragEnd: (event) => {
128
+ console.log('拖拽结束位置:', event.nativeEvent);
129
+ },
130
+ };
131
+ ```
132
+
133
+ ## 与旧代码的对应关系
134
+
135
+ | 旧文件 | 新类型文件 | 说明 |
136
+ |--------|-----------|------|
137
+ | `types.ts` | `common.types.ts` | 基础类型定义 |
138
+ | `map-view.tsx` | `map-view.types.ts` | 地图视图类型 |
139
+ | `geolocation/index.d.ts` | `location.types.ts` | 定位类型 |
140
+ | `location/index.d.ts` | `location.types.ts` | 定位类型(合并) |
141
+ | `marker.tsx` | `overlays.types.ts` | 标记类型 |
142
+ | `polyline.tsx` | `overlays.types.ts` | 折线类型 |
143
+ | `polygon.tsx` | `overlays.types.ts` | 多边形类型 |
144
+ | `circle.tsx` | `overlays.types.ts` | 圆形类型 |
145
+ | `heat-map.tsx` | `overlays.types.ts` | 热力图类型 |
146
+ | `multi-point.tsx` | `overlays.types.ts` | 海量点类型 |
147
+ | `cluster/index.tsx` | `overlays.types.ts` | 聚合图层类型 |
148
+ | `sdk.ts` | `sdk.types.ts` | SDK 模块类型 |
149
+
150
+ ## 下一步工作
151
+
152
+ 1. **实现原生模块**
153
+ - Android: 在 `ExpoGaodeMapModule.kt` 中实现模块定义
154
+ - iOS: 在 `ExpoGaodeMapModule.swift` 中实现模块定义
155
+
156
+ 2. **实现视图组件**
157
+ - Android: 实现各种覆盖物的原生视图
158
+ - iOS: 实现各种覆盖物的原生视图
159
+
160
+ 3. **创建 React 组件**
161
+ - 基于类型定义创建对应的 React 组件
162
+ - 使用 `requireNativeView` 或 `requireNativeModule`
163
+
164
+ 4. **编写单元测试**
165
+ - 测试类型定义的正确性
166
+ - 测试组件的功能完整性
167
+
168
+ ## 参考文档
169
+
170
+ - [Expo Modules API 文档](https://docs.expo.dev/modules/module-api/)
171
+ - [高德地图 Android SDK](https://lbs.amap.com/api/android-sdk/summary)
172
+ - [高德地图 iOS SDK](https://lbs.amap.com/api/ios-sdk/summary)
173
+ - [TypeScript 类型系统](https://www.typescriptlang.org/docs/handbook/2/types-from-types.html)
174
+
175
+ ## 注意事项
176
+
177
+ 1. **类型导出**: 使用 `export type` 导出类型,避免运行时开销
178
+ 2. **枚举使用**: 对于固定值集合,优先使用 `enum`
179
+ 3. **可选属性**: 合理使用 `?` 标记可选属性
180
+ 4. **平台差异**: 使用 `@platform` 注释标注平台特定功能
181
+ 5. **向后兼容**: 新类型应尽可能保持与旧类型的兼容性
182
+
183
+ ## 版本历史
184
+
185
+ - **v2.0.0** (2025-11-13): 基于 Expo Modules API 重新设计类型系统
186
+ - **v1.x**: 基于 `requireNativeComponent` 的旧版本实现
@@ -0,0 +1,155 @@
1
+ /**
2
+ * 高德地图通用类型定义
3
+ * 基于 Expo Modules API
4
+ */
5
+
6
+ /**
7
+ * 点坐标(屏幕坐标)
8
+ */
9
+ export interface Point {
10
+ x: number;
11
+ y: number;
12
+ }
13
+
14
+ /**
15
+ * 地理坐标
16
+ */
17
+ export interface LatLng {
18
+ /**
19
+ * 纬度
20
+ */
21
+ latitude: number;
22
+
23
+ /**
24
+ * 经度
25
+ */
26
+ longitude: number;
27
+ }
28
+
29
+ /**
30
+ * 地图标注点(POI)
31
+ */
32
+ export interface MapPoi {
33
+ /**
34
+ * 标注点 ID
35
+ */
36
+ id: string;
37
+
38
+ /**
39
+ * 标注点名称
40
+ */
41
+ name: string;
42
+
43
+ /**
44
+ * 标注点坐标
45
+ */
46
+ position: LatLng;
47
+ }
48
+
49
+ /**
50
+ * 矩形坐标边界
51
+ */
52
+ export interface LatLngBounds {
53
+ /**
54
+ * 西南坐标
55
+ */
56
+ southwest: LatLng;
57
+
58
+ /**
59
+ * 东北坐标
60
+ */
61
+ northeast: LatLng;
62
+ }
63
+
64
+ /**
65
+ * 地图相机位置
66
+ */
67
+ export interface CameraPosition {
68
+ /**
69
+ * 中心坐标
70
+ */
71
+ target?: LatLng;
72
+
73
+ /**
74
+ * 缩放级别(3-20)
75
+ */
76
+ zoom?: number;
77
+
78
+ /**
79
+ * 朝向、旋转角度(0-360度)
80
+ */
81
+ bearing?: number;
82
+
83
+ /**
84
+ * 倾斜角度(0-60度)
85
+ */
86
+ tilt?: number;
87
+ }
88
+
89
+ /**
90
+ * 地图类型
91
+ */
92
+ export enum MapType {
93
+ /**
94
+ * 标准地图
95
+ */
96
+ Standard = 0,
97
+
98
+ /**
99
+ * 卫星地图
100
+ */
101
+ Satellite = 1,
102
+
103
+ /**
104
+ * 夜间地图
105
+ */
106
+ Night = 2,
107
+
108
+ /**
109
+ * 导航地图
110
+ */
111
+ Navi = 3,
112
+
113
+ /**
114
+ * 公交地图
115
+ */
116
+ Bus = 4,
117
+ }
118
+
119
+ /**
120
+ * 定位信息(基础)
121
+ */
122
+ export interface Location extends LatLng {
123
+ /**
124
+ * 精度(米)
125
+ */
126
+ accuracy: number;
127
+
128
+ /**
129
+ * 朝向(度)
130
+ */
131
+ heading: number;
132
+
133
+ /**
134
+ * 海拔(米)
135
+ */
136
+ altitude: number;
137
+
138
+ /**
139
+ * 运动速度(米/秒)
140
+ */
141
+ speed: number;
142
+
143
+ /**
144
+ * 时间戳
145
+ */
146
+ timestamp: number;
147
+ }
148
+
149
+ /**
150
+ * 颜色值类型
151
+ * 支持:
152
+ * - 十六进制字符串: '#AARRGGBB' 或 '#RRGGBB'
153
+ * - 数字格式: 0xAARRGGBB (用于 Android)
154
+ */
155
+ export type ColorValue = string | number;
@@ -0,0 +1,74 @@
1
+ /*
2
+ * @Author : 尚博信_王强 wangqiang03@sunboxsoft.com
3
+ * @Date : 2025-11-13 14:25:51
4
+ * @LastEditors : 尚博信_王强 wangqiang03@sunboxsoft.com
5
+ * @LastEditTime : 2025-11-13 14:25:57
6
+ * @FilePath : /expo-gaode-map/src/types/index.ts
7
+ * @Description :
8
+ *
9
+ * Copyright (c) 2025 by 尚博信_王强, All Rights Reserved.
10
+ */
11
+ /**
12
+ * 高德地图 Expo Module 类型定义统一导出
13
+ * 基于 Expo Modules API 重新设计
14
+ */
15
+
16
+ // 通用类型
17
+ export type {
18
+ Point,
19
+ LatLng,
20
+ MapPoi,
21
+ LatLngBounds,
22
+ CameraPosition,
23
+ Location,
24
+ ColorValue,
25
+ } from './common.types';
26
+
27
+ export { MapType } from './common.types';
28
+
29
+ // 地图视图类型
30
+ export type {
31
+ CameraEvent,
32
+ MapViewProps,
33
+ MapViewMethods,
34
+ MapViewRef,
35
+ NativeMapViewRef,
36
+ } from './map-view.types';
37
+
38
+ // 定位类型
39
+ export type {
40
+ Coordinates,
41
+ ReGeocode,
42
+ LocationOptions,
43
+ LocationListener,
44
+ GeoLanguage,
45
+ LocationProtocol,
46
+ } from './location.types';
47
+
48
+ export {
49
+ LocationAccuracy,
50
+ LocationMode,
51
+ CoordinateType,
52
+ } from './location.types';
53
+
54
+ // 覆盖物类型
55
+ export type {
56
+ MarkerProps,
57
+ PolylineProps,
58
+ PolygonProps,
59
+ CircleProps,
60
+ HeatMapProps,
61
+ MultiPointItem,
62
+ MultiPointProps,
63
+ ClusterParams,
64
+ ClusterPoint,
65
+ ClusterProps,
66
+ } from './overlays.types';
67
+
68
+ // SDK 模块类型
69
+ export type {
70
+ SDKConfig,
71
+ AMapSDKModule,
72
+ AMapLocationModule,
73
+ ModuleEvents,
74
+ } from './sdk.types';