expo-gaode-map-navigation 2.0.12-next.0 → 2.0.13

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 (238) hide show
  1. package/README.md +296 -7
  2. package/android/build.gradle +12 -4
  3. package/android/src/main/AndroidManifest.xml +10 -1
  4. package/android/src/main/cpp/cluster_jni.cpp +56 -0
  5. package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapModule.kt +49 -8
  6. package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapOfflineModule.kt +83 -15
  7. package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapView.kt +13 -3
  8. package/android/src/main/java/expo/modules/gaodemap/map/managers/UIManager.kt +36 -39
  9. package/android/src/main/java/expo/modules/gaodemap/map/modules/SDKInitializer.kt +23 -17
  10. package/android/src/main/java/expo/modules/gaodemap/map/overlays/ClusterView.kt +5 -2
  11. package/android/src/main/java/expo/modules/gaodemap/map/overlays/HeatMapView.kt +122 -10
  12. package/android/src/main/java/expo/modules/gaodemap/map/overlays/HeatMapViewModule.kt +2 -2
  13. package/android/src/main/java/expo/modules/gaodemap/map/overlays/MarkerView.kt +37 -25
  14. package/android/src/main/java/expo/modules/gaodemap/map/overlays/MarkerViewModule.kt +6 -6
  15. package/android/src/main/java/expo/modules/gaodemap/map/search/ExpoGaodeMapSearchModule.kt +751 -0
  16. package/android/src/main/java/expo/modules/gaodemap/map/utils/GeometryUtils.kt +103 -0
  17. package/android/src/main/java/expo/modules/gaodemap/navigation/ExpoGaodeMapNaviView.kt +1408 -394
  18. package/android/src/main/java/expo/modules/gaodemap/navigation/ExpoGaodeMapNaviViewModule.kt +121 -1
  19. package/android/src/main/java/expo/modules/gaodemap/navigation/ExpoGaodeMapNavigationModule.kt +14 -28
  20. package/android/src/main/java/expo/modules/gaodemap/navigation/listeners/IndependentRouteListener.kt +28 -3
  21. package/android/src/main/java/expo/modules/gaodemap/navigation/listeners/RouteCalculateListener.kt +2 -2
  22. package/android/src/main/java/expo/modules/gaodemap/navigation/managers/IndependentRouteManager.kt +114 -15
  23. package/android/src/main/java/expo/modules/gaodemap/navigation/routes/drive/DriveTruckRouteCalculator.kt +24 -35
  24. package/android/src/main/java/expo/modules/gaodemap/navigation/services/IndependentRouteService.kt +50 -36
  25. package/android/src/main/java/expo/modules/gaodemap/navigation/services/NavigationForegroundService.kt +661 -0
  26. package/android/src/main/java/expo/modules/gaodemap/navigation/utils/Converters.kt +21 -12
  27. package/android/src/main/res/drawable/ic_nav_notification_small.xml +10 -0
  28. package/android/src/main/res/drawable/landback_0.png +0 -0
  29. package/android/src/main/res/drawable/landback_1.png +0 -0
  30. package/android/src/main/res/drawable/landback_2.png +0 -0
  31. package/android/src/main/res/drawable/landback_3.png +0 -0
  32. package/android/src/main/res/drawable/landback_4.png +0 -0
  33. package/android/src/main/res/drawable/landback_5.png +0 -0
  34. package/android/src/main/res/drawable/landback_6.png +0 -0
  35. package/android/src/main/res/drawable/landback_7.png +0 -0
  36. package/android/src/main/res/drawable/landback_8.png +0 -0
  37. package/android/src/main/res/drawable/landback_9.png +0 -0
  38. package/android/src/main/res/drawable/landback_a.png +0 -0
  39. package/android/src/main/res/drawable/landback_b.png +0 -0
  40. package/android/src/main/res/drawable/landback_c.png +0 -0
  41. package/android/src/main/res/drawable/landback_d.png +0 -0
  42. package/android/src/main/res/drawable/landback_e.png +0 -0
  43. package/android/src/main/res/drawable/landback_f.png +0 -0
  44. package/android/src/main/res/drawable/landback_g.png +0 -0
  45. package/android/src/main/res/drawable/landback_h.png +0 -0
  46. package/android/src/main/res/drawable/landback_i.png +0 -0
  47. package/android/src/main/res/drawable/landback_j.png +0 -0
  48. package/android/src/main/res/drawable/landback_k.png +0 -0
  49. package/android/src/main/res/drawable/landback_l.png +0 -0
  50. package/android/src/main/res/drawable/landfront_0.png +0 -0
  51. package/android/src/main/res/drawable/landfront_00.png +0 -0
  52. package/android/src/main/res/drawable/landfront_1.png +0 -0
  53. package/android/src/main/res/drawable/landfront_11.png +0 -0
  54. package/android/src/main/res/drawable/landfront_20.png +0 -0
  55. package/android/src/main/res/drawable/landfront_21.png +0 -0
  56. package/android/src/main/res/drawable/landfront_22.png +0 -0
  57. package/android/src/main/res/drawable/landfront_3.png +0 -0
  58. package/android/src/main/res/drawable/landfront_33.png +0 -0
  59. package/android/src/main/res/drawable/landfront_40.png +0 -0
  60. package/android/src/main/res/drawable/landfront_43.png +0 -0
  61. package/android/src/main/res/drawable/landfront_44.png +0 -0
  62. package/android/src/main/res/drawable/landfront_5.png +0 -0
  63. package/android/src/main/res/drawable/landfront_55.png +0 -0
  64. package/android/src/main/res/drawable/landfront_61.png +0 -0
  65. package/android/src/main/res/drawable/landfront_63.png +0 -0
  66. package/android/src/main/res/drawable/landfront_66.png +0 -0
  67. package/android/src/main/res/drawable/landfront_70.png +0 -0
  68. package/android/src/main/res/drawable/landfront_71.png +0 -0
  69. package/android/src/main/res/drawable/landfront_73.png +0 -0
  70. package/android/src/main/res/drawable/landfront_77.png +0 -0
  71. package/android/src/main/res/drawable/landfront_8.png +0 -0
  72. package/android/src/main/res/drawable/landfront_88.png +0 -0
  73. package/android/src/main/res/drawable/landfront_90.png +0 -0
  74. package/android/src/main/res/drawable/landfront_95.png +0 -0
  75. package/android/src/main/res/drawable/landfront_99.png +0 -0
  76. package/android/src/main/res/drawable/landfront_a0.png +0 -0
  77. package/android/src/main/res/drawable/landfront_a8.png +0 -0
  78. package/android/src/main/res/drawable/landfront_aa.png +0 -0
  79. package/android/src/main/res/drawable/landfront_b1.png +0 -0
  80. package/android/src/main/res/drawable/landfront_b5.png +0 -0
  81. package/android/src/main/res/drawable/landfront_bb.png +0 -0
  82. package/android/src/main/res/drawable/landfront_c3.png +0 -0
  83. package/android/src/main/res/drawable/landfront_c8.png +0 -0
  84. package/android/src/main/res/drawable/landfront_cc.png +0 -0
  85. package/android/src/main/res/drawable/landfront_d.png +0 -0
  86. package/android/src/main/res/drawable/landfront_dd.png +0 -0
  87. package/android/src/main/res/drawable/landfront_e1.png +0 -0
  88. package/android/src/main/res/drawable/landfront_e5.png +0 -0
  89. package/android/src/main/res/drawable/landfront_ee.png +0 -0
  90. package/android/src/main/res/drawable/landfront_f0.png +0 -0
  91. package/android/src/main/res/drawable/landfront_f1.png +0 -0
  92. package/android/src/main/res/drawable/landfront_f5.png +0 -0
  93. package/android/src/main/res/drawable/landfront_ff.png +0 -0
  94. package/android/src/main/res/drawable/landfront_g3.png +0 -0
  95. package/android/src/main/res/drawable/landfront_g5.png +0 -0
  96. package/android/src/main/res/drawable/landfront_gg.png +0 -0
  97. package/android/src/main/res/drawable/landfront_h1.png +0 -0
  98. package/android/src/main/res/drawable/landfront_h3.png +0 -0
  99. package/android/src/main/res/drawable/landfront_h5.png +0 -0
  100. package/android/src/main/res/drawable/landfront_hh.png +0 -0
  101. package/android/src/main/res/drawable/landfront_i0.png +0 -0
  102. package/android/src/main/res/drawable/landfront_i3.png +0 -0
  103. package/android/src/main/res/drawable/landfront_i5.png +0 -0
  104. package/android/src/main/res/drawable/landfront_ii.png +0 -0
  105. package/android/src/main/res/drawable/landfront_j1.png +0 -0
  106. package/android/src/main/res/drawable/landfront_j8.png +0 -0
  107. package/android/src/main/res/drawable/landfront_jj.png +0 -0
  108. package/android/src/main/res/drawable/landfront_kk.png +0 -0
  109. package/android/src/main/res/drawable/landfront_ll.png +0 -0
  110. package/android/src/main/res/drawable/nav_notification_brand_icon.xml +16 -0
  111. package/android/src/main/res/drawable/navi_arrow_leftline.png +0 -0
  112. package/android/src/main/res/drawable/navi_lane_shape_bg_center.xml +5 -0
  113. package/android/src/main/res/drawable/navi_lane_shape_bg_left.xml +8 -0
  114. package/android/src/main/res/drawable/navi_lane_shape_bg_over.xml +6 -0
  115. package/android/src/main/res/drawable/navi_lane_shape_bg_right.xml +8 -0
  116. package/android/src/main/res/drawable-nodpi/nav_tracker_car.png +0 -0
  117. package/build/ExpoGaodeMapNaviView.d.ts +16 -0
  118. package/build/ExpoGaodeMapNaviView.d.ts.map +1 -1
  119. package/build/ExpoGaodeMapNaviView.js +74 -1
  120. package/build/ExpoGaodeMapNaviView.js.map +1 -1
  121. package/build/index.d.ts +56 -8
  122. package/build/index.d.ts.map +1 -1
  123. package/build/index.js +452 -10
  124. package/build/index.js.map +1 -1
  125. package/build/map/ExpoGaodeMapModule.d.ts +15 -13
  126. package/build/map/ExpoGaodeMapModule.d.ts.map +1 -1
  127. package/build/map/ExpoGaodeMapModule.js +31 -39
  128. package/build/map/ExpoGaodeMapModule.js.map +1 -1
  129. package/build/map/ExpoGaodeMapOfflineModule.d.ts +5 -0
  130. package/build/map/ExpoGaodeMapOfflineModule.d.ts.map +1 -1
  131. package/build/map/ExpoGaodeMapOfflineModule.js.map +1 -1
  132. package/build/map/ExpoGaodeMapView.d.ts +3 -4
  133. package/build/map/ExpoGaodeMapView.d.ts.map +1 -1
  134. package/build/map/ExpoGaodeMapView.js +28 -25
  135. package/build/map/ExpoGaodeMapView.js.map +1 -1
  136. package/build/map/components/overlays/Circle.d.ts.map +1 -1
  137. package/build/map/components/overlays/Circle.js +1 -30
  138. package/build/map/components/overlays/Circle.js.map +1 -1
  139. package/build/map/components/overlays/Cluster.d.ts.map +1 -1
  140. package/build/map/components/overlays/Cluster.js +1 -42
  141. package/build/map/components/overlays/Cluster.js.map +1 -1
  142. package/build/map/components/overlays/HeatMap.d.ts.map +1 -1
  143. package/build/map/components/overlays/HeatMap.js +21 -21
  144. package/build/map/components/overlays/HeatMap.js.map +1 -1
  145. package/build/map/components/overlays/Marker.d.ts.map +1 -1
  146. package/build/map/components/overlays/Marker.js +76 -80
  147. package/build/map/components/overlays/Marker.js.map +1 -1
  148. package/build/map/components/overlays/Polygon.d.ts.map +1 -1
  149. package/build/map/components/overlays/Polygon.js +1 -25
  150. package/build/map/components/overlays/Polygon.js.map +1 -1
  151. package/build/map/components/overlays/Polyline.d.ts.map +1 -1
  152. package/build/map/components/overlays/Polyline.js +1 -31
  153. package/build/map/components/overlays/Polyline.js.map +1 -1
  154. package/build/map/index.d.ts +9 -2
  155. package/build/map/index.d.ts.map +1 -1
  156. package/build/map/index.js +9 -2
  157. package/build/map/index.js.map +1 -1
  158. package/build/map/search/ExpoGaodeMapSearch.types.d.ts +340 -0
  159. package/build/map/search/ExpoGaodeMapSearch.types.d.ts.map +1 -0
  160. package/build/map/search/ExpoGaodeMapSearch.types.js +19 -0
  161. package/build/map/search/ExpoGaodeMapSearch.types.js.map +1 -0
  162. package/build/map/search/ExpoGaodeMapSearchModule.d.ts +74 -0
  163. package/build/map/search/ExpoGaodeMapSearchModule.d.ts.map +1 -0
  164. package/build/map/search/ExpoGaodeMapSearchModule.js +47 -0
  165. package/build/map/search/ExpoGaodeMapSearchModule.js.map +1 -0
  166. package/build/map/search/index.d.ts +156 -0
  167. package/build/map/search/index.d.ts.map +1 -0
  168. package/build/map/search/index.js +171 -0
  169. package/build/map/search/index.js.map +1 -0
  170. package/build/map/types/index.d.ts +2 -2
  171. package/build/map/types/index.d.ts.map +1 -1
  172. package/build/map/types/index.js.map +1 -1
  173. package/build/map/types/map-view.types.d.ts +4 -2
  174. package/build/map/types/map-view.types.d.ts.map +1 -1
  175. package/build/map/types/map-view.types.js.map +1 -1
  176. package/build/map/types/native-module.types.d.ts +11 -12
  177. package/build/map/types/native-module.types.d.ts.map +1 -1
  178. package/build/map/types/native-module.types.js.map +1 -1
  179. package/build/map/types/overlays.types.d.ts +9 -14
  180. package/build/map/types/overlays.types.d.ts.map +1 -1
  181. package/build/map/types/overlays.types.js.map +1 -1
  182. package/build/map/types/route-playback.types.d.ts +16 -0
  183. package/build/map/types/route-playback.types.d.ts.map +1 -1
  184. package/build/map/types/route-playback.types.js.map +1 -1
  185. package/build/map/utils/ErrorHandler.js +11 -11
  186. package/build/map/utils/ErrorHandler.js.map +1 -1
  187. package/build/map/utils/OfflineMapManager.d.ts +4 -0
  188. package/build/map/utils/OfflineMapManager.d.ts.map +1 -1
  189. package/build/map/utils/OfflineMapManager.js +6 -0
  190. package/build/map/utils/OfflineMapManager.js.map +1 -1
  191. package/build/types/coordinates.types.d.ts +3 -0
  192. package/build/types/coordinates.types.d.ts.map +1 -1
  193. package/build/types/coordinates.types.js.map +1 -1
  194. package/build/types/independent.types.d.ts +111 -12
  195. package/build/types/independent.types.d.ts.map +1 -1
  196. package/build/types/independent.types.js.map +1 -1
  197. package/build/types/native-module.types.d.ts +1 -1
  198. package/build/types/native-module.types.js.map +1 -1
  199. package/build/types/naviview.types.d.ts +304 -14
  200. package/build/types/naviview.types.d.ts.map +1 -1
  201. package/build/types/naviview.types.js.map +1 -1
  202. package/build/types/route.types.d.ts +12 -2
  203. package/build/types/route.types.d.ts.map +1 -1
  204. package/build/types/route.types.js.map +1 -1
  205. package/expo-module.config.json +4 -2
  206. package/ios/ExpoGaodeMapNaviView.swift +2331 -201
  207. package/ios/ExpoGaodeMapNaviViewModule.swift +109 -1
  208. package/ios/ExpoGaodeMapNavigation.podspec +2 -1
  209. package/ios/ExpoGaodeMapNavigationModule.swift +7 -5
  210. package/ios/managers/IndependentRouteManager.swift +90 -26
  211. package/ios/map/ExpoGaodeMapModule.swift +72 -21
  212. package/ios/map/ExpoGaodeMapOfflineModule.swift +61 -0
  213. package/ios/map/ExpoGaodeMapSearchModule.swift +773 -0
  214. package/ios/map/ExpoGaodeMapView.swift +23 -5
  215. package/ios/map/GaodeMapPrivacyManager.swift +26 -18
  216. package/ios/map/cpp/GeometryEngine.cpp +112 -0
  217. package/ios/map/cpp/GeometryEngine.hpp +21 -0
  218. package/ios/map/modules/LocationManager.swift +37 -5
  219. package/ios/map/overlays/MarkerView.swift +11 -11
  220. package/ios/map/overlays/MarkerViewModule.swift +4 -4
  221. package/ios/map/overlays/PolylineView.swift +6 -12
  222. package/ios/map/utils/ClusterNative.h +8 -0
  223. package/ios/map/utils/ClusterNative.mm +27 -0
  224. package/ios/map/utils/PermissionManager.swift +115 -6
  225. package/ios/routes/drive/DriveTruckRouteCalculator.swift +165 -77
  226. package/ios/routes/walkride/WalkRideRouteCalculator.swift +127 -1
  227. package/ios/services/IndependentRouteService.swift +198 -39
  228. package/ios/services/NavigationLiveActivityAttributes.swift +48 -0
  229. package/ios/services/NavigationLiveActivityManager.swift +359 -0
  230. package/package.json +22 -7
  231. package/plugin/build/withGaodeMap.d.ts +8 -0
  232. package/plugin/build/withGaodeMap.js +60 -4
  233. package/scripts/check-expo-modules.js +68 -0
  234. package/shared/cpp/GeometryEngine.cpp +112 -0
  235. package/shared/cpp/GeometryEngine.hpp +21 -0
  236. package/widget-template/README.md +46 -0
  237. package/widget-template/ios/NavigationLiveActivityWidget.swift +367 -0
  238. package/android/src/main/java/expo/modules/gaodemap/navigation/managers/RouteCalculator.kt +0 -173
@@ -1 +1 @@
1
- {"version":3,"file":"route-playback.types.js","sourceRoot":"","sources":["../../../src/map/types/route-playback.types.ts"],"names":[],"mappings":"","sourcesContent":["export interface FitToCoordinatesOptions {\n duration?: number;\n paddingFactor?: number;\n minZoom?: number;\n maxZoom?: number;\n singlePointZoom?: number;\n bearing?: number;\n tilt?: number;\n preserveBearing?: boolean;\n preserveTilt?: boolean;\n}\n"]}
1
+ {"version":3,"file":"route-playback.types.js","sourceRoot":"","sources":["../../../src/map/types/route-playback.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { NativeSyntheticEvent } from 'react-native';\n\nimport type { LatLng } from './common.types';\n\nexport interface SmoothMoveProgressEvent {\n position: LatLng;\n angle: number;\n progress: number;\n distance: number;\n totalDistance: number;\n}\n\nexport interface SmoothMoveEndEvent {\n position: LatLng;\n angle: number;\n totalDistance: number;\n}\n\nexport interface FitToCoordinatesOptions {\n duration?: number;\n paddingFactor?: number;\n minZoom?: number;\n maxZoom?: number;\n singlePointZoom?: number;\n bearing?: number;\n tilt?: number;\n preserveBearing?: boolean;\n preserveTilt?: boolean;\n}\n\nexport type SmoothMoveProgressEventHandler = (\n event: NativeSyntheticEvent<SmoothMoveProgressEvent>\n) => void;\n\nexport type SmoothMoveEndEventHandler = (\n event: NativeSyntheticEvent<SmoothMoveEndEvent>\n) => void;\n"]}
@@ -70,7 +70,7 @@ export class ErrorHandler {
70
70
  message: '高德地图 SDK 尚未初始化',
71
71
  solution: `请在使用地图功能前先调用 initSDK():
72
72
 
73
- import ExpoGaodeMapModule from 'expo-gaode-map';
73
+ import {ExpoGaodeMapModule} from 'expo-gaode-map-navigation';
74
74
 
75
75
  useEffect(() => {
76
76
  // 在组件挂载时初始化
@@ -97,7 +97,7 @@ useEffect(() => {
97
97
  message: `调用高德地图前未完成隐私合规确认:${sceneText}`,
98
98
  solution: `请在调用任何高德地图 SDK 接口前,先明确完成隐私告知与同意:
99
99
 
100
- import ExpoGaodeMapModule from 'expo-gaode-map';
100
+ import {ExpoGaodeMapModule} from 'expo-gaode-map-navigation';
101
101
 
102
102
  // 应用启动后,先展示你自己的隐私弹窗
103
103
  ExpoGaodeMapModule.setPrivacyConfig({
@@ -153,7 +153,7 @@ ExpoGaodeMapModule.initSDK({
153
153
  "expo": {
154
154
  "plugins": [
155
155
  [
156
- "expo-gaode-map",
156
+ "expo-gaode-map-navigation",
157
157
  {
158
158
  "androidKey": "your-android-key",
159
159
  "iosKey": "your-ios-key"
@@ -185,7 +185,7 @@ ExpoGaodeMapModule.initSDK({
185
185
  solution: `请按以下步骤授予权限:
186
186
 
187
187
  1️⃣ 请求权限:
188
- import ExpoGaodeMapModule from 'expo-gaode-map';
188
+ import {ExpoGaodeMapModule} from 'expo-gaode-map-navigation';
189
189
 
190
190
  const checkPermission = async () => {
191
191
  // 检查权限状态
@@ -222,7 +222,7 @@ const checkPermission = async () => {
222
222
  }
223
223
 
224
224
  3️⃣ Android 配置(Config Plugin 会自动添加):
225
- 使用 expo-gaode-map 的 Config Plugin 会自动添加必要的权限声明`,
225
+ 使用 expo-gaode-map-navigation 的 Config Plugin 会自动添加必要的权限声明`,
226
226
  docUrl: `${this.docBaseUrl}/guide/getting-started.html#权限配置`,
227
227
  });
228
228
  }
@@ -273,13 +273,13 @@ ExpoGaodeMapModule.setDesiredAccuracy(0); // 最佳精度`,
273
273
  static nativeModuleUnavailable() {
274
274
  return new GaodeMapError({
275
275
  type: ErrorType.NATIVE_MODULE_UNAVAILABLE,
276
- message: 'expo-gaode-map 原生模块不可用',
276
+ message: 'expo-gaode-map-navigation 原生模块不可用',
277
277
  solution: `请检查以下步骤:
278
278
 
279
279
  1️⃣ 确认已正确安装:
280
- npm install expo-gaode-map
280
+ npm install expo-gaode-map-navigation
281
281
  # 或
282
- bun install expo-gaode-map
282
+ bun install expo-gaode-map-navigation
283
283
 
284
284
  2️⃣ 重新构建原生代码:
285
285
  npx expo prebuild --clean
@@ -287,7 +287,7 @@ npx expo run:android
287
287
  npx expo run:ios
288
288
 
289
289
  3️⃣ 检查 Expo 版本兼容性:
290
- • expo-gaode-map 需要 Expo SDK 49+
290
+ • expo-gaode-map-navigation 需要 Expo SDK 49+
291
291
  • 不支持 Expo Go,必须使用 Development Build
292
292
 
293
293
  4️⃣ 检查是否与其他包冲突:
@@ -313,7 +313,7 @@ cd ios && pod deintegrate && pod install && cd ..`,
313
313
  2️⃣ 使用 ref 获取地图实例后再调用方法
314
314
 
315
315
  正确用法:
316
- import { MapView, MapViewRef } from 'expo-gaode-map';
316
+ import { MapView, MapViewRef } from 'expo-gaode-map-navigation';
317
317
 
318
318
  const App = () => {
319
319
  const mapRef = useRef<MapViewRef>(null);
@@ -456,7 +456,7 @@ export class ErrorLogger {
456
456
  static warn(message, details) {
457
457
  if (!this.isEnabled)
458
458
  return;
459
- console.warn(`⚠️ expo-gaode-map: ${message}`, details || '');
459
+ console.warn(`⚠️ expo-gaode-map-navigation: ${message}`, details || '');
460
460
  }
461
461
  }
462
462
  //# sourceMappingURL=ErrorHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorHandler.js","sourceRoot":"","sources":["../../../src/map/utils/ErrorHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 高德地图错误处理工具\n * 提供友好的错误提示和解决方案指引\n */\n\n/**\n * 错误类型枚举\n */\nexport enum ErrorType {\n /** SDK 未初始化 */\n SDK_NOT_INITIALIZED = 'SDK_NOT_INITIALIZED',\n /** 隐私协议未确认 */\n PRIVACY_NOT_AGREED = 'PRIVACY_NOT_AGREED',\n /** API Key 配置错误 */\n INVALID_API_KEY = 'INVALID_API_KEY',\n /** 权限未授予 */\n PERMISSION_DENIED = 'PERMISSION_DENIED',\n /** 定位失败 */\n LOCATION_FAILED = 'LOCATION_FAILED',\n /** 原生模块不可用 */\n NATIVE_MODULE_UNAVAILABLE = 'NATIVE_MODULE_UNAVAILABLE',\n /** 地图视图未初始化 */\n MAP_VIEW_NOT_INITIALIZED = 'MAP_VIEW_NOT_INITIALIZED',\n /** 参数错误 */\n INVALID_PARAMETER = 'INVALID_PARAMETER',\n /** 网络错误 */\n NETWORK_ERROR = 'NETWORK_ERROR',\n}\n\n/**\n * 错误详情接口\n */\nexport interface ErrorDetails {\n /** 错误类型 */\n type: ErrorType;\n /** 错误消息 */\n message: string;\n /** 解决方案 */\n solution: string;\n /** 文档链接 */\n docUrl?: string;\n /** 原始错误 */\n originalError?: Error;\n}\n\n/**\n * 自定义错误类\n */\nexport class GaodeMapError extends Error {\n type: ErrorType;\n solution: string;\n docUrl?: string;\n originalError?: Error;\n\n constructor(details: ErrorDetails) {\n const fullMessage = `\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n🗺️ 高德地图错误 [${details.type}]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n❌ 错误信息:\n ${details.message}\n\n💡 解决方案:\n ${details.solution}\n\n${details.docUrl ? `📖 详细文档:\\n ${details.docUrl}\\n` : ''}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`;\n super(fullMessage);\n this.name = 'GaodeMapError';\n this.type = details.type;\n this.solution = details.solution;\n this.docUrl = details.docUrl;\n this.originalError = details.originalError;\n }\n}\n\n/**\n * 错误处理器类\n */\nexport class ErrorHandler {\n private static docBaseUrl = 'https://TomWq.github.io/expo-gaode-map';\n\n /**\n * SDK 未初始化错误\n */\n static sdkNotInitialized(): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.SDK_NOT_INITIALIZED,\n message: '高德地图 SDK 尚未初始化',\n solution: `请在使用地图功能前先调用 initSDK():\n\nimport ExpoGaodeMapModule from 'expo-gaode-map';\n\nuseEffect(() => {\n // 在组件挂载时初始化\n ExpoGaodeMapModule.initSDK({\n androidKey: 'your-android-key',\n iosKey: 'your-ios-key',\n });\n}, []);\n\n⚠️ 常见原因:\n1. 忘记调用 initSDK() 就使用了定位或地图功能\n2. initSDK() 调用时机过晚(应在 useEffect 中尽早调用)\n3. 使用 Config Plugin 但未重新构建原生代码`,\n docUrl: `${this.docBaseUrl}/guide/initialization.html`,\n });\n }\n\n /**\n * 隐私协议未确认错误\n */\n static privacyNotAgreed(scene: 'map' | 'sdk'): GaodeMapError {\n const sceneText = scene === 'map' ? '渲染 MapView' : '初始化 SDK';\n return new GaodeMapError({\n type: ErrorType.PRIVACY_NOT_AGREED,\n message: `调用高德地图前未完成隐私合规确认:${sceneText}`,\n solution: `请在调用任何高德地图 SDK 接口前,先明确完成隐私告知与同意:\n\nimport ExpoGaodeMapModule from 'expo-gaode-map';\n\n// 应用启动后,先展示你自己的隐私弹窗\nExpoGaodeMapModule.setPrivacyConfig({\n hasShow: true,\n hasContainsPrivacy: true,\n hasAgree: true,\n});\n\n// 然后再初始化 SDK / 渲染地图\nExpoGaodeMapModule.initSDK({\n androidKey: 'your-android-key',\n iosKey: 'your-ios-key',\n});\n\n⚠️ 升级注意:\n1. 不能只 import 包后直接渲染 MapView\n2. Android 若未先设置隐私,原生 SDK 可能直接报 555570\n3. 推荐在应用首次启动时先弹出隐私协议,同意后再进入地图页面`,\n docUrl: `${this.docBaseUrl}/guide/initialization.html`,\n });\n }\n\n /**\n * API Key 配置错误\n */\n static invalidApiKey(platform: 'android' | 'ios' | 'both'): GaodeMapError {\n const platformText = {\n android: 'Android',\n ios: 'iOS',\n both: 'Android 和 iOS',\n }[platform];\n\n return new GaodeMapError({\n type: ErrorType.INVALID_API_KEY,\n message: `${platformText} API Key 配置错误或未配置`,\n solution: `⚠️ API Key 与 Bundle ID 不匹配是最常见的原因!\n\n请检查以下步骤:\n\n1️⃣ 确认 API Key 的配置:\n • 访问高德开放平台:https://lbs.amap.com/\n • 检查您的应用配置中的 Bundle ID 是否与当前项目一致\n • iOS Bundle ID:在 Xcode → Target → General → Bundle Identifier 查看\n • Android 包名:在 android/app/build.gradle → applicationId 查看\n\n2️⃣ 重新创建正确的 API Key(如果 Bundle ID 不同):\n • 在高德开放平台创建新应用\n • 填写正确的 Bundle ID(iOS)或包名(Android)\n • 获取新的 API Key\n\n3️⃣ 配置 API Key(推荐使用 Config Plugin):\n\n在 app.json 中配置:\n{\n \"expo\": {\n \"plugins\": [\n [\n \"expo-gaode-map\",\n {\n \"androidKey\": \"your-android-key\",\n \"iosKey\": \"your-ios-key\"\n }\n ]\n ]\n }\n}\n\n然后重新构建:\nnpx expo prebuild --clean\nnpx expo run:${platform === 'ios' ? 'ios' : 'android'}\n\n4️⃣ 或在代码中配置:\nExpoGaodeMapModule.initSDK({\n androidKey: 'your-android-key',\n iosKey: 'your-ios-key',\n});`,\n docUrl: `${this.docBaseUrl}/guide/initialization.html`,\n });\n }\n\n /**\n * 权限未授予错误\n */\n static permissionDenied(permissionType: 'location'): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.PERMISSION_DENIED,\n message: '定位权限未授予,无法使用定位功能',\n solution: `请按以下步骤授予权限:\n\n1️⃣ 请求权限:\nimport ExpoGaodeMapModule from 'expo-gaode-map';\n\nconst checkPermission = async () => {\n // 检查权限状态\n const status = await ExpoGaodeMapModule.checkLocationPermission();\n \n if (!status.granted) {\n // 请求权限\n const result = await ExpoGaodeMapModule.requestLocationPermission();\n \n if (!result.granted) {\n // 用户拒绝授权,引导用户去设置\n Alert.alert(\n '需要定位权限',\n '请在设置中开启定位权限以使用地图功能',\n [\n { text: '取消', style: 'cancel' },\n { text: '去设置', onPress: () => Linking.openSettings() }\n ]\n );\n }\n }\n};\n\n2️⃣ iOS 配置(在 app.json 中):\n{\n \"expo\": {\n \"ios\": {\n \"infoPlist\": {\n \"NSLocationWhenInUseUsageDescription\": \"需要获取您的位置信息以显示地图\",\n \"NSLocationAlwaysAndWhenInUseUsageDescription\": \"需要获取您的位置信息\"\n }\n }\n }\n}\n\n3️⃣ Android 配置(Config Plugin 会自动添加):\n使用 expo-gaode-map 的 Config Plugin 会自动添加必要的权限声明`,\n docUrl: `${this.docBaseUrl}/guide/getting-started.html#权限配置`,\n });\n }\n\n /**\n * 定位失败错误\n */\n static locationFailed(reason?: string): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.LOCATION_FAILED,\n message: `定位失败${reason ? `:${reason}` : ''}`,\n solution: `⚠️ 最常见原因:API Key 与 Bundle ID 不匹配!\n\n请按以下顺序排查:\n\n1️⃣ 检查 API Key 配置(最常见问题):\n • 访问高德开放平台:https://lbs.amap.com/\n • 确认您的应用的 Bundle ID 与当前项目一致\n • iOS Bundle ID:在 Xcode → Target → General → Bundle Identifier\n • Android 包名:在 android/app/build.gradle → applicationId\n \n 如果 Bundle ID 不同,必须在高德平台重新创建应用并获取新 Key\n\n2️⃣ 检查设备 GPS 和网络:\n • 确认设备 GPS 已开启\n • 检查网络连接是否正常\n • 尝试在室外空旷处测试\n\n3️⃣ 检查定位权限:\n • iOS:设置 → 隐私 → 定位服务 → 允许应用访问\n • Android:设置 → 应用 → 权限管理 → 位置信息\n\n4️⃣ 配置定位参数(如果 API Key 正确但定位仍失败):\nExpoGaodeMapModule.setLocationTimeout(30); // 增加超时时间\nExpoGaodeMapModule.setInterval(2000); // 设置定位间隔\n\n// Android 特有配置\nExpoGaodeMapModule.setLocationMode(2); // 高精度模式\nExpoGaodeMapModule.setGpsFirst(true); // GPS 优先\n\n// iOS 特有配置\nExpoGaodeMapModule.setDesiredAccuracy(0); // 最佳精度`,\n docUrl: `${this.docBaseUrl}/api/location.html`,\n });\n }\n\n /**\n * 原生模块不可用错误\n */\n static nativeModuleUnavailable(): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.NATIVE_MODULE_UNAVAILABLE,\n message: 'expo-gaode-map 原生模块不可用',\n solution: `请检查以下步骤:\n\n1️⃣ 确认已正确安装:\nnpm install expo-gaode-map\n# 或\nbun install expo-gaode-map\n\n2️⃣ 重新构建原生代码:\nnpx expo prebuild --clean\nnpx expo run:android\nnpx expo run:ios\n\n3️⃣ 检查 Expo 版本兼容性:\n• expo-gaode-map 需要 Expo SDK 49+\n• 不支持 Expo Go,必须使用 Development Build\n\n4️⃣ 检查是否与其他包冲突:\n• 不能同时安装 expo-gaode-map 和 expo-gaode-map-navigation\n• 两个包选择其一使用\n\n5️⃣ 清理缓存后重试:\ncd android && ./gradlew clean && cd ..\ncd ios && pod deintegrate && pod install && cd ..`,\n docUrl: `${this.docBaseUrl}/guide/getting-started.html`,\n });\n }\n\n /**\n * 地图视图未初始化错误\n */\n static mapViewNotInitialized(methodName: string): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.MAP_VIEW_NOT_INITIALIZED,\n message: `无法调用 ${methodName}:地图视图尚未初始化`,\n solution: `请确保:\n\n1️⃣ MapView 已经渲染完成\n2️⃣ 使用 ref 获取地图实例后再调用方法\n\n正确用法:\nimport { MapView, MapViewRef } from 'expo-gaode-map';\n\nconst App = () => {\n const mapRef = useRef<MapViewRef>(null);\n \n // ❌ 错误:在渲染前调用\n // mapRef.current?.moveCamera(...);\n \n // ✅ 正确:等待地图加载完成\n const handleMapReady = () => {\n mapRef.current?.moveCamera({\n target: { latitude: 39.9, longitude: 116.4 },\n zoom: 15,\n });\n };\n \n return (\n <MapView\n ref={mapRef}\n onMapReady={handleMapReady}\n />\n );\n};`,\n docUrl: `${this.docBaseUrl}/api/mapview.html`,\n });\n }\n\n /**\n * 参数错误\n */\n static invalidParameter(paramName: string, expected: string, received: unknown): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.INVALID_PARAMETER,\n message: `参数 \"${paramName}\" 类型错误`,\n solution: `期望类型:${expected}\n实际接收:${typeof received} (${JSON.stringify(received)})\n\n请检查传入的参数是否符合要求。\n\n💡 提示:\n• 使用 TypeScript 可以在编译时发现类型错误\n• 参考 API 文档了解正确的参数类型`,\n docUrl: `${this.docBaseUrl}/api/`,\n });\n }\n\n /**\n * 网络错误\n */\n static networkError(originalError?: Error): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.NETWORK_ERROR,\n message: '网络请求失败',\n solution: `请检查:\n\n1️⃣ 网络连接是否正常\n2️⃣ API Key 是否有效\n3️⃣ 是否超出配额限制\n\n💡 如果问题持续,请:\n• 检查高德开放平台控制台\n• 查看 API 调用量和配额\n• 确认 Key 的服务是否已开通`,\n docUrl: `${this.docBaseUrl}/guide/troubleshooting.html`,\n originalError,\n });\n }\n\n /**\n * 包装原生错误,提供更友好的提示\n */\n static wrapNativeError(error: unknown, context: string): GaodeMapError {\n const errorMessage = error instanceof Error ? error.message : String(error);\n const scene = context.includes('MapView') || context.includes('渲染') ? 'map' : 'sdk';\n\n if (\n errorMessage.includes('PRIVACY_NOT_AGREED') ||\n errorMessage.includes('隐私协议未完成确认') ||\n errorMessage.includes('隐私合规校验失败') ||\n errorMessage.includes('555570') ||\n errorMessage.includes('确保调用SDK任何接口前先调用更新隐私合规')\n ) {\n return this.privacyNotAgreed(scene);\n }\n \n // SDK 未初始化相关错误\n if (\n errorMessage.includes('not initialized') ||\n errorMessage.includes('未初始化') ||\n errorMessage.includes('SDK未设置')\n ) {\n return this.sdkNotInitialized();\n }\n \n // API Key 相关错误\n if (\n errorMessage.includes('key') ||\n errorMessage.includes('invalid') ||\n errorMessage.includes('鉴权失败')\n ) {\n return this.invalidApiKey('both');\n }\n \n // 权限相关错误\n if (\n errorMessage.includes('permission') ||\n errorMessage.includes('权限')\n ) {\n return this.permissionDenied('location');\n }\n \n // 定位相关错误\n if (\n errorMessage.includes('location') ||\n errorMessage.includes('定位')\n ) {\n return this.locationFailed(errorMessage);\n }\n \n // 通用错误\n return new GaodeMapError({\n type: ErrorType.INVALID_PARAMETER,\n message: `${context} 失败`,\n solution: `原始错误信息:${errorMessage}\n\n如果问题持续,请:\n1. 查看完整的错误堆栈\n2. 检查 API 调用参数\n3. 提交 Issue:https://github.com/TomWq/expo-gaode-map/issues`,\n originalError: error instanceof Error ? error : undefined,\n });\n }\n}\n\n/**\n * 错误日志工具\n */\nexport class ErrorLogger {\n // 兼容不同环境:Bun/Jest/Node\n private static isEnabled = typeof __DEV__ !== 'undefined' ? __DEV__ : true;\n\n /**\n * 启用/禁用错误日志\n */\n static setEnabled(enabled: boolean) {\n this.isEnabled = enabled;\n }\n\n /**\n * 记录错误\n */\n static log(error: GaodeMapError) {\n if (!this.isEnabled) return;\n\n console.error(error.message);\n \n if (error.originalError) {\n console.error('原始错误:', error.originalError);\n }\n }\n\n /**\n * 记录警告\n */\n static warn(message: string, details?: unknown) {\n if (!this.isEnabled) return;\n \n console.warn(`⚠️ expo-gaode-map: ${message}`, details || '');\n }\n}\n"]}
1
+ {"version":3,"file":"ErrorHandler.js","sourceRoot":"","sources":["../../../src/map/utils/ErrorHandler.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 高德地图错误处理工具\n * 提供友好的错误提示和解决方案指引\n */\n\n/**\n * 错误类型枚举\n */\nexport enum ErrorType {\n /** SDK 未初始化 */\n SDK_NOT_INITIALIZED = 'SDK_NOT_INITIALIZED',\n /** 隐私协议未确认 */\n PRIVACY_NOT_AGREED = 'PRIVACY_NOT_AGREED',\n /** API Key 配置错误 */\n INVALID_API_KEY = 'INVALID_API_KEY',\n /** 权限未授予 */\n PERMISSION_DENIED = 'PERMISSION_DENIED',\n /** 定位失败 */\n LOCATION_FAILED = 'LOCATION_FAILED',\n /** 原生模块不可用 */\n NATIVE_MODULE_UNAVAILABLE = 'NATIVE_MODULE_UNAVAILABLE',\n /** 地图视图未初始化 */\n MAP_VIEW_NOT_INITIALIZED = 'MAP_VIEW_NOT_INITIALIZED',\n /** 参数错误 */\n INVALID_PARAMETER = 'INVALID_PARAMETER',\n /** 网络错误 */\n NETWORK_ERROR = 'NETWORK_ERROR',\n}\n\n/**\n * 错误详情接口\n */\nexport interface ErrorDetails {\n /** 错误类型 */\n type: ErrorType;\n /** 错误消息 */\n message: string;\n /** 解决方案 */\n solution: string;\n /** 文档链接 */\n docUrl?: string;\n /** 原始错误 */\n originalError?: Error;\n}\n\n/**\n * 自定义错误类\n */\nexport class GaodeMapError extends Error {\n type: ErrorType;\n solution: string;\n docUrl?: string;\n originalError?: Error;\n\n constructor(details: ErrorDetails) {\n const fullMessage = `\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n🗺️ 高德地图错误 [${details.type}]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n❌ 错误信息:\n ${details.message}\n\n💡 解决方案:\n ${details.solution}\n\n${details.docUrl ? `📖 详细文档:\\n ${details.docUrl}\\n` : ''}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`;\n super(fullMessage);\n this.name = 'GaodeMapError';\n this.type = details.type;\n this.solution = details.solution;\n this.docUrl = details.docUrl;\n this.originalError = details.originalError;\n }\n}\n\n/**\n * 错误处理器类\n */\nexport class ErrorHandler {\n private static docBaseUrl = 'https://TomWq.github.io/expo-gaode-map';\n\n /**\n * SDK 未初始化错误\n */\n static sdkNotInitialized(): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.SDK_NOT_INITIALIZED,\n message: '高德地图 SDK 尚未初始化',\n solution: `请在使用地图功能前先调用 initSDK():\n\nimport {ExpoGaodeMapModule} from 'expo-gaode-map-navigation';\n\nuseEffect(() => {\n // 在组件挂载时初始化\n ExpoGaodeMapModule.initSDK({\n androidKey: 'your-android-key',\n iosKey: 'your-ios-key',\n });\n}, []);\n\n⚠️ 常见原因:\n1. 忘记调用 initSDK() 就使用了定位或地图功能\n2. initSDK() 调用时机过晚(应在 useEffect 中尽早调用)\n3. 使用 Config Plugin 但未重新构建原生代码`,\n docUrl: `${this.docBaseUrl}/guide/initialization.html`,\n });\n }\n\n /**\n * 隐私协议未确认错误\n */\n static privacyNotAgreed(scene: 'map' | 'sdk'): GaodeMapError {\n const sceneText = scene === 'map' ? '渲染 MapView' : '初始化 SDK';\n return new GaodeMapError({\n type: ErrorType.PRIVACY_NOT_AGREED,\n message: `调用高德地图前未完成隐私合规确认:${sceneText}`,\n solution: `请在调用任何高德地图 SDK 接口前,先明确完成隐私告知与同意:\n\nimport {ExpoGaodeMapModule} from 'expo-gaode-map-navigation';\n\n// 应用启动后,先展示你自己的隐私弹窗\nExpoGaodeMapModule.setPrivacyConfig({\n hasShow: true,\n hasContainsPrivacy: true,\n hasAgree: true,\n});\n\n// 然后再初始化 SDK / 渲染地图\nExpoGaodeMapModule.initSDK({\n androidKey: 'your-android-key',\n iosKey: 'your-ios-key',\n});\n\n⚠️ 升级注意:\n1. 不能只 import 包后直接渲染 MapView\n2. Android 若未先设置隐私,原生 SDK 可能直接报 555570\n3. 推荐在应用首次启动时先弹出隐私协议,同意后再进入地图页面`,\n docUrl: `${this.docBaseUrl}/guide/initialization.html`,\n });\n }\n\n /**\n * API Key 配置错误\n */\n static invalidApiKey(platform: 'android' | 'ios' | 'both'): GaodeMapError {\n const platformText = {\n android: 'Android',\n ios: 'iOS',\n both: 'Android 和 iOS',\n }[platform];\n\n return new GaodeMapError({\n type: ErrorType.INVALID_API_KEY,\n message: `${platformText} API Key 配置错误或未配置`,\n solution: `⚠️ API Key 与 Bundle ID 不匹配是最常见的原因!\n\n请检查以下步骤:\n\n1️⃣ 确认 API Key 的配置:\n • 访问高德开放平台:https://lbs.amap.com/\n • 检查您的应用配置中的 Bundle ID 是否与当前项目一致\n • iOS Bundle ID:在 Xcode → Target → General → Bundle Identifier 查看\n • Android 包名:在 android/app/build.gradle → applicationId 查看\n\n2️⃣ 重新创建正确的 API Key(如果 Bundle ID 不同):\n • 在高德开放平台创建新应用\n • 填写正确的 Bundle ID(iOS)或包名(Android)\n • 获取新的 API Key\n\n3️⃣ 配置 API Key(推荐使用 Config Plugin):\n\n在 app.json 中配置:\n{\n \"expo\": {\n \"plugins\": [\n [\n \"expo-gaode-map-navigation\",\n {\n \"androidKey\": \"your-android-key\",\n \"iosKey\": \"your-ios-key\"\n }\n ]\n ]\n }\n}\n\n然后重新构建:\nnpx expo prebuild --clean\nnpx expo run:${platform === 'ios' ? 'ios' : 'android'}\n\n4️⃣ 或在代码中配置:\nExpoGaodeMapModule.initSDK({\n androidKey: 'your-android-key',\n iosKey: 'your-ios-key',\n});`,\n docUrl: `${this.docBaseUrl}/guide/initialization.html`,\n });\n }\n\n /**\n * 权限未授予错误\n */\n static permissionDenied(permissionType: 'location'): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.PERMISSION_DENIED,\n message: '定位权限未授予,无法使用定位功能',\n solution: `请按以下步骤授予权限:\n\n1️⃣ 请求权限:\nimport {ExpoGaodeMapModule} from 'expo-gaode-map-navigation';\n\nconst checkPermission = async () => {\n // 检查权限状态\n const status = await ExpoGaodeMapModule.checkLocationPermission();\n \n if (!status.granted) {\n // 请求权限\n const result = await ExpoGaodeMapModule.requestLocationPermission();\n \n if (!result.granted) {\n // 用户拒绝授权,引导用户去设置\n Alert.alert(\n '需要定位权限',\n '请在设置中开启定位权限以使用地图功能',\n [\n { text: '取消', style: 'cancel' },\n { text: '去设置', onPress: () => Linking.openSettings() }\n ]\n );\n }\n }\n};\n\n2️⃣ iOS 配置(在 app.json 中):\n{\n \"expo\": {\n \"ios\": {\n \"infoPlist\": {\n \"NSLocationWhenInUseUsageDescription\": \"需要获取您的位置信息以显示地图\",\n \"NSLocationAlwaysAndWhenInUseUsageDescription\": \"需要获取您的位置信息\"\n }\n }\n }\n}\n\n3️⃣ Android 配置(Config Plugin 会自动添加):\n使用 expo-gaode-map-navigation 的 Config Plugin 会自动添加必要的权限声明`,\n docUrl: `${this.docBaseUrl}/guide/getting-started.html#权限配置`,\n });\n }\n\n /**\n * 定位失败错误\n */\n static locationFailed(reason?: string): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.LOCATION_FAILED,\n message: `定位失败${reason ? `:${reason}` : ''}`,\n solution: `⚠️ 最常见原因:API Key 与 Bundle ID 不匹配!\n\n请按以下顺序排查:\n\n1️⃣ 检查 API Key 配置(最常见问题):\n • 访问高德开放平台:https://lbs.amap.com/\n • 确认您的应用的 Bundle ID 与当前项目一致\n • iOS Bundle ID:在 Xcode → Target → General → Bundle Identifier\n • Android 包名:在 android/app/build.gradle → applicationId\n \n 如果 Bundle ID 不同,必须在高德平台重新创建应用并获取新 Key\n\n2️⃣ 检查设备 GPS 和网络:\n • 确认设备 GPS 已开启\n • 检查网络连接是否正常\n • 尝试在室外空旷处测试\n\n3️⃣ 检查定位权限:\n • iOS:设置 → 隐私 → 定位服务 → 允许应用访问\n • Android:设置 → 应用 → 权限管理 → 位置信息\n\n4️⃣ 配置定位参数(如果 API Key 正确但定位仍失败):\nExpoGaodeMapModule.setLocationTimeout(30); // 增加超时时间\nExpoGaodeMapModule.setInterval(2000); // 设置定位间隔\n\n// Android 特有配置\nExpoGaodeMapModule.setLocationMode(2); // 高精度模式\nExpoGaodeMapModule.setGpsFirst(true); // GPS 优先\n\n// iOS 特有配置\nExpoGaodeMapModule.setDesiredAccuracy(0); // 最佳精度`,\n docUrl: `${this.docBaseUrl}/api/location.html`,\n });\n }\n\n /**\n * 原生模块不可用错误\n */\n static nativeModuleUnavailable(): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.NATIVE_MODULE_UNAVAILABLE,\n message: 'expo-gaode-map-navigation 原生模块不可用',\n solution: `请检查以下步骤:\n\n1️⃣ 确认已正确安装:\nnpm install expo-gaode-map-navigation\n# 或\nbun install expo-gaode-map-navigation\n\n2️⃣ 重新构建原生代码:\nnpx expo prebuild --clean\nnpx expo run:android\nnpx expo run:ios\n\n3️⃣ 检查 Expo 版本兼容性:\n• expo-gaode-map-navigation 需要 Expo SDK 49+\n• 不支持 Expo Go,必须使用 Development Build\n\n4️⃣ 检查是否与其他包冲突:\n• 不能同时安装 expo-gaode-map 和 expo-gaode-map-navigation\n• 两个包选择其一使用\n\n5️⃣ 清理缓存后重试:\ncd android && ./gradlew clean && cd ..\ncd ios && pod deintegrate && pod install && cd ..`,\n docUrl: `${this.docBaseUrl}/guide/getting-started.html`,\n });\n }\n\n /**\n * 地图视图未初始化错误\n */\n static mapViewNotInitialized(methodName: string): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.MAP_VIEW_NOT_INITIALIZED,\n message: `无法调用 ${methodName}:地图视图尚未初始化`,\n solution: `请确保:\n\n1️⃣ MapView 已经渲染完成\n2️⃣ 使用 ref 获取地图实例后再调用方法\n\n正确用法:\nimport { MapView, MapViewRef } from 'expo-gaode-map-navigation';\n\nconst App = () => {\n const mapRef = useRef<MapViewRef>(null);\n \n // ❌ 错误:在渲染前调用\n // mapRef.current?.moveCamera(...);\n \n // ✅ 正确:等待地图加载完成\n const handleMapReady = () => {\n mapRef.current?.moveCamera({\n target: { latitude: 39.9, longitude: 116.4 },\n zoom: 15,\n });\n };\n \n return (\n <MapView\n ref={mapRef}\n onMapReady={handleMapReady}\n />\n );\n};`,\n docUrl: `${this.docBaseUrl}/api/mapview.html`,\n });\n }\n\n /**\n * 参数错误\n */\n static invalidParameter(paramName: string, expected: string, received: unknown): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.INVALID_PARAMETER,\n message: `参数 \"${paramName}\" 类型错误`,\n solution: `期望类型:${expected}\n实际接收:${typeof received} (${JSON.stringify(received)})\n\n请检查传入的参数是否符合要求。\n\n💡 提示:\n• 使用 TypeScript 可以在编译时发现类型错误\n• 参考 API 文档了解正确的参数类型`,\n docUrl: `${this.docBaseUrl}/api/`,\n });\n }\n\n /**\n * 网络错误\n */\n static networkError(originalError?: Error): GaodeMapError {\n return new GaodeMapError({\n type: ErrorType.NETWORK_ERROR,\n message: '网络请求失败',\n solution: `请检查:\n\n1️⃣ 网络连接是否正常\n2️⃣ API Key 是否有效\n3️⃣ 是否超出配额限制\n\n💡 如果问题持续,请:\n• 检查高德开放平台控制台\n• 查看 API 调用量和配额\n• 确认 Key 的服务是否已开通`,\n docUrl: `${this.docBaseUrl}/guide/troubleshooting.html`,\n originalError,\n });\n }\n\n /**\n * 包装原生错误,提供更友好的提示\n */\n static wrapNativeError(error: unknown, context: string): GaodeMapError {\n const errorMessage = error instanceof Error ? error.message : String(error);\n const scene = context.includes('MapView') || context.includes('渲染') ? 'map' : 'sdk';\n\n if (\n errorMessage.includes('PRIVACY_NOT_AGREED') ||\n errorMessage.includes('隐私协议未完成确认') ||\n errorMessage.includes('隐私合规校验失败') ||\n errorMessage.includes('555570') ||\n errorMessage.includes('确保调用SDK任何接口前先调用更新隐私合规')\n ) {\n return this.privacyNotAgreed(scene);\n }\n \n // SDK 未初始化相关错误\n if (\n errorMessage.includes('not initialized') ||\n errorMessage.includes('未初始化') ||\n errorMessage.includes('SDK未设置')\n ) {\n return this.sdkNotInitialized();\n }\n \n // API Key 相关错误\n if (\n errorMessage.includes('key') ||\n errorMessage.includes('invalid') ||\n errorMessage.includes('鉴权失败')\n ) {\n return this.invalidApiKey('both');\n }\n \n // 权限相关错误\n if (\n errorMessage.includes('permission') ||\n errorMessage.includes('权限')\n ) {\n return this.permissionDenied('location');\n }\n \n // 定位相关错误\n if (\n errorMessage.includes('location') ||\n errorMessage.includes('定位')\n ) {\n return this.locationFailed(errorMessage);\n }\n \n // 通用错误\n return new GaodeMapError({\n type: ErrorType.INVALID_PARAMETER,\n message: `${context} 失败`,\n solution: `原始错误信息:${errorMessage}\n\n如果问题持续,请:\n1. 查看完整的错误堆栈\n2. 检查 API 调用参数\n3. 提交 Issue:https://github.com/TomWq/expo-gaode-map/issues`,\n originalError: error instanceof Error ? error : undefined,\n });\n }\n}\n\n/**\n * 错误日志工具\n */\nexport class ErrorLogger {\n // 兼容不同环境:Bun/Jest/Node\n private static isEnabled = typeof __DEV__ !== 'undefined' ? __DEV__ : true;\n\n /**\n * 启用/禁用错误日志\n */\n static setEnabled(enabled: boolean) {\n this.isEnabled = enabled;\n }\n\n /**\n * 记录错误\n */\n static log(error: GaodeMapError) {\n if (!this.isEnabled) return;\n\n console.error(error.message);\n \n if (error.originalError) {\n console.error('原始错误:', error.originalError);\n }\n }\n\n /**\n * 记录警告\n */\n static warn(message: string, details?: unknown) {\n if (!this.isEnabled) return;\n \n console.warn(`⚠️ expo-gaode-map-navigation: ${message}`, details || '');\n }\n}\n"]}
@@ -7,6 +7,10 @@ import type { OfflineMapInfo, OfflineMapDownloadConfig, OfflineMapDownloadEvent,
7
7
  * 离线地图管理类
8
8
  */
9
9
  export declare class OfflineMapManager {
10
+ /**
11
+ * 打开高德 3D 地图 SDK 官方离线地图 UI 组件(Android)。
12
+ */
13
+ static openOfflineMapUI(): Promise<void>;
10
14
  /**
11
15
  * 获取所有可下载的城市列表
12
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OfflineMapManager.d.ts","sourceRoot":"","sources":["../../../src/map/utils/OfflineMapManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OfflineMapManager.d.ts","sourceRoot":"","sources":["../../../src/map/utils/OfflineMapManager.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,12 @@ import ExpoGaodeMapOfflineModule from '../ExpoGaodeMapOfflineModule';
8
8
  */
9
9
  export class OfflineMapManager {
10
10
  // ==================== 地图列表管理 ====================
11
+ /**
12
+ * 打开高德 3D 地图 SDK 官方离线地图 UI 组件(Android)。
13
+ */
14
+ static async openOfflineMapUI() {
15
+ return ExpoGaodeMapOfflineModule.openOfflineMapUI();
16
+ }
11
17
  /**
12
18
  * 获取所有可下载的城市列表
13
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OfflineMapManager.js","sourceRoot":"","sources":["../../../src/map/utils/OfflineMapManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 离线地图便捷 API\n * 提供更友好的 API 接口和事件监听\n */\n\nimport ExpoGaodeMapOfflineModule from '../ExpoGaodeMapOfflineModule';\nimport type {\n OfflineMapInfo,\n OfflineMapDownloadConfig,\n OfflineMapDownloadEvent,\n OfflineMapCompleteEvent,\n OfflineMapErrorEvent,\n OfflineMapPausedEvent,\n OfflineMapCancelledEvent,\n OfflineMapStorageInfo,\n} from '../types/offline.types';\n\n/**\n * 离线地图管理类\n */\nexport class OfflineMapManager {\n // ==================== 地图列表管理 ====================\n \n /**\n * 获取所有可下载的城市列表\n */\n static async getAvailableCities(): Promise<OfflineMapInfo[]> {\n return ExpoGaodeMapOfflineModule.getAvailableCities();\n }\n \n /**\n * 获取所有省份列表\n */\n static async getAvailableProvinces(): Promise<OfflineMapInfo[]> {\n return ExpoGaodeMapOfflineModule.getAvailableProvinces();\n }\n \n /**\n * 根据省份代码获取城市列表\n */\n static async getCitiesByProvince(provinceCode: string): Promise<OfflineMapInfo[]> {\n return ExpoGaodeMapOfflineModule.getCitiesByProvince(provinceCode);\n }\n \n /**\n * 获取已下载的地图列表\n */\n static async getDownloadedMaps(): Promise<OfflineMapInfo[]> {\n return ExpoGaodeMapOfflineModule.getDownloadedMaps();\n }\n \n // ==================== 下载管理 ====================\n \n /**\n * 开始下载离线地图\n */\n static async startDownload(config: OfflineMapDownloadConfig): Promise<void> {\n return ExpoGaodeMapOfflineModule.startDownload(config);\n }\n \n /**\n * 暂停下载\n */\n static async pauseDownload(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.pauseDownload(cityCode); \n }\n \n /**\n * 恢复下载\n */\n static async resumeDownload(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.resumeDownload(cityCode);\n }\n \n /**\n * 取消下载\n */\n static async cancelDownload(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.cancelDownload(cityCode);\n }\n \n /**\n * 删除离线地图\n */\n static async deleteMap(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.deleteMap(cityCode);\n }\n \n /**\n * 更新离线地图\n */\n static async updateMap(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.updateMap(cityCode);\n }\n \n /**\n * 检查是否有可用更新\n */\n static async checkUpdate(cityCode: string): Promise<boolean> {\n return ExpoGaodeMapOfflineModule.checkUpdate(cityCode);\n }\n \n // ==================== 状态查询 ====================\n \n /**\n * 检查地图是否已下载\n */\n static async isMapDownloaded(cityCode: string): Promise<boolean> {\n return ExpoGaodeMapOfflineModule.isMapDownloaded(cityCode);\n }\n \n /**\n * 获取地图下载状态\n */\n static async getMapStatus(cityCode: string): Promise<OfflineMapInfo> {\n return ExpoGaodeMapOfflineModule.getMapStatus(cityCode);\n }\n \n /**\n * 获取所有下载任务的总进度\n */\n static async getTotalProgress(): Promise<number> {\n return ExpoGaodeMapOfflineModule.getTotalProgress();\n }\n \n /**\n * 获取当前正在下载的城市列表\n */\n static async getDownloadingCities(): Promise<string[]> {\n return ExpoGaodeMapOfflineModule.getDownloadingCities();\n }\n \n // ==================== 存储管理 ====================\n \n /**\n * 获取离线地图占用的存储空间(字节)\n */\n static async getStorageSize(): Promise<number> {\n return ExpoGaodeMapOfflineModule.getStorageSize();\n }\n \n /**\n * 获取详细的存储信息\n */\n static async getStorageInfo(): Promise<OfflineMapStorageInfo> {\n return ExpoGaodeMapOfflineModule.getStorageInfo();\n }\n \n /**\n * 清理所有离线地图\n */\n static async clearAllMaps(): Promise<void> {\n return ExpoGaodeMapOfflineModule.clearAllMaps();\n }\n \n /**\n * 设置离线地图存储路径\n */\n static setStoragePath(path: string): void {\n ExpoGaodeMapOfflineModule.setStoragePath(path);\n }\n \n /**\n * 获取离线地图存储路径\n */\n static async getStoragePath(): Promise<string> {\n return ExpoGaodeMapOfflineModule.getStoragePath();\n }\n \n // ==================== 批量操作 ====================\n \n /**\n * 批量下载地图\n */\n static async batchDownload(cityCodes: string[], allowCellular = false): Promise<void> {\n return ExpoGaodeMapOfflineModule.batchDownload(cityCodes, allowCellular);\n }\n \n /**\n * 批量删除地图\n */\n static async batchDelete(cityCodes: string[]): Promise<void> {\n return ExpoGaodeMapOfflineModule.batchDelete(cityCodes);\n }\n \n /**\n * 批量更新地图\n */\n static async batchUpdate(cityCodes: string[]): Promise<void> {\n return ExpoGaodeMapOfflineModule.batchUpdate(cityCodes);\n }\n \n /**\n * 暂停所有下载任务\n */\n static async pauseAllDownloads(): Promise<void> {\n return ExpoGaodeMapOfflineModule.pauseAllDownloads();\n }\n \n /**\n * 恢复所有下载任务\n */\n static async resumeAllDownloads(): Promise<void> {\n return ExpoGaodeMapOfflineModule.resumeAllDownloads();\n }\n \n // ==================== 事件监听 ====================\n \n /**\n * 监听下载进度事件\n */\n static addDownloadProgressListener(\n listener: (event: OfflineMapDownloadEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadProgress', listener);\n }\n \n /**\n * 监听下载完成事件\n */\n static addDownloadCompleteListener(\n listener: (event: OfflineMapCompleteEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadComplete', listener);\n }\n \n /**\n * 监听下载错误事件\n */\n static addDownloadErrorListener(\n listener: (event: OfflineMapErrorEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadError', listener);\n }\n \n /**\n * 监听下载暂停事件\n */\n static addDownloadPausedListener(\n listener: (event: OfflineMapPausedEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadPaused', listener);\n }\n \n /**\n * 监听下载取消事件\n */\n static addDownloadCancelledListener(\n listener: (event: OfflineMapCancelledEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadCancelled', listener);\n }\n \n /**\n * 移除所有监听器\n */\n static removeAllListeners(): void {\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadProgress');\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadComplete');\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadError');\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadPaused');\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadCancelled');\n }\n}\n\n/**\n * 默认导出管理类\n */\nexport default OfflineMapManager;\n"]}
1
+ {"version":3,"file":"OfflineMapManager.js","sourceRoot":"","sources":["../../../src/map/utils/OfflineMapManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * 离线地图便捷 API\n * 提供更友好的 API 接口和事件监听\n */\n\nimport ExpoGaodeMapOfflineModule from '../ExpoGaodeMapOfflineModule';\nimport type {\n OfflineMapInfo,\n OfflineMapDownloadConfig,\n OfflineMapDownloadEvent,\n OfflineMapCompleteEvent,\n OfflineMapErrorEvent,\n OfflineMapPausedEvent,\n OfflineMapCancelledEvent,\n OfflineMapStorageInfo,\n} from '../types/offline.types';\n\n/**\n * 离线地图管理类\n */\nexport class OfflineMapManager {\n // ==================== 地图列表管理 ====================\n\n /**\n * 打开高德 3D 地图 SDK 官方离线地图 UI 组件(Android)。\n */\n static async openOfflineMapUI(): Promise<void> {\n return ExpoGaodeMapOfflineModule.openOfflineMapUI();\n }\n \n /**\n * 获取所有可下载的城市列表\n */\n static async getAvailableCities(): Promise<OfflineMapInfo[]> {\n return ExpoGaodeMapOfflineModule.getAvailableCities();\n }\n \n /**\n * 获取所有省份列表\n */\n static async getAvailableProvinces(): Promise<OfflineMapInfo[]> {\n return ExpoGaodeMapOfflineModule.getAvailableProvinces();\n }\n \n /**\n * 根据省份代码获取城市列表\n */\n static async getCitiesByProvince(provinceCode: string): Promise<OfflineMapInfo[]> {\n return ExpoGaodeMapOfflineModule.getCitiesByProvince(provinceCode);\n }\n \n /**\n * 获取已下载的地图列表\n */\n static async getDownloadedMaps(): Promise<OfflineMapInfo[]> {\n return ExpoGaodeMapOfflineModule.getDownloadedMaps();\n }\n \n // ==================== 下载管理 ====================\n \n /**\n * 开始下载离线地图\n */\n static async startDownload(config: OfflineMapDownloadConfig): Promise<void> {\n return ExpoGaodeMapOfflineModule.startDownload(config);\n }\n \n /**\n * 暂停下载\n */\n static async pauseDownload(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.pauseDownload(cityCode); \n }\n \n /**\n * 恢复下载\n */\n static async resumeDownload(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.resumeDownload(cityCode);\n }\n \n /**\n * 取消下载\n */\n static async cancelDownload(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.cancelDownload(cityCode);\n }\n \n /**\n * 删除离线地图\n */\n static async deleteMap(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.deleteMap(cityCode);\n }\n \n /**\n * 更新离线地图\n */\n static async updateMap(cityCode: string): Promise<void> {\n return ExpoGaodeMapOfflineModule.updateMap(cityCode);\n }\n \n /**\n * 检查是否有可用更新\n */\n static async checkUpdate(cityCode: string): Promise<boolean> {\n return ExpoGaodeMapOfflineModule.checkUpdate(cityCode);\n }\n \n // ==================== 状态查询 ====================\n \n /**\n * 检查地图是否已下载\n */\n static async isMapDownloaded(cityCode: string): Promise<boolean> {\n return ExpoGaodeMapOfflineModule.isMapDownloaded(cityCode);\n }\n \n /**\n * 获取地图下载状态\n */\n static async getMapStatus(cityCode: string): Promise<OfflineMapInfo> {\n return ExpoGaodeMapOfflineModule.getMapStatus(cityCode);\n }\n \n /**\n * 获取所有下载任务的总进度\n */\n static async getTotalProgress(): Promise<number> {\n return ExpoGaodeMapOfflineModule.getTotalProgress();\n }\n \n /**\n * 获取当前正在下载的城市列表\n */\n static async getDownloadingCities(): Promise<string[]> {\n return ExpoGaodeMapOfflineModule.getDownloadingCities();\n }\n \n // ==================== 存储管理 ====================\n \n /**\n * 获取离线地图占用的存储空间(字节)\n */\n static async getStorageSize(): Promise<number> {\n return ExpoGaodeMapOfflineModule.getStorageSize();\n }\n \n /**\n * 获取详细的存储信息\n */\n static async getStorageInfo(): Promise<OfflineMapStorageInfo> {\n return ExpoGaodeMapOfflineModule.getStorageInfo();\n }\n \n /**\n * 清理所有离线地图\n */\n static async clearAllMaps(): Promise<void> {\n return ExpoGaodeMapOfflineModule.clearAllMaps();\n }\n \n /**\n * 设置离线地图存储路径\n */\n static setStoragePath(path: string): void {\n ExpoGaodeMapOfflineModule.setStoragePath(path);\n }\n \n /**\n * 获取离线地图存储路径\n */\n static async getStoragePath(): Promise<string> {\n return ExpoGaodeMapOfflineModule.getStoragePath();\n }\n \n // ==================== 批量操作 ====================\n \n /**\n * 批量下载地图\n */\n static async batchDownload(cityCodes: string[], allowCellular = false): Promise<void> {\n return ExpoGaodeMapOfflineModule.batchDownload(cityCodes, allowCellular);\n }\n \n /**\n * 批量删除地图\n */\n static async batchDelete(cityCodes: string[]): Promise<void> {\n return ExpoGaodeMapOfflineModule.batchDelete(cityCodes);\n }\n \n /**\n * 批量更新地图\n */\n static async batchUpdate(cityCodes: string[]): Promise<void> {\n return ExpoGaodeMapOfflineModule.batchUpdate(cityCodes);\n }\n \n /**\n * 暂停所有下载任务\n */\n static async pauseAllDownloads(): Promise<void> {\n return ExpoGaodeMapOfflineModule.pauseAllDownloads();\n }\n \n /**\n * 恢复所有下载任务\n */\n static async resumeAllDownloads(): Promise<void> {\n return ExpoGaodeMapOfflineModule.resumeAllDownloads();\n }\n \n // ==================== 事件监听 ====================\n \n /**\n * 监听下载进度事件\n */\n static addDownloadProgressListener(\n listener: (event: OfflineMapDownloadEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadProgress', listener);\n }\n \n /**\n * 监听下载完成事件\n */\n static addDownloadCompleteListener(\n listener: (event: OfflineMapCompleteEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadComplete', listener);\n }\n \n /**\n * 监听下载错误事件\n */\n static addDownloadErrorListener(\n listener: (event: OfflineMapErrorEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadError', listener);\n }\n \n /**\n * 监听下载暂停事件\n */\n static addDownloadPausedListener(\n listener: (event: OfflineMapPausedEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadPaused', listener);\n }\n \n /**\n * 监听下载取消事件\n */\n static addDownloadCancelledListener(\n listener: (event: OfflineMapCancelledEvent) => void\n ): { remove: () => void } {\n return ExpoGaodeMapOfflineModule.addListener('onDownloadCancelled', listener);\n }\n \n /**\n * 移除所有监听器\n */\n static removeAllListeners(): void {\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadProgress');\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadComplete');\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadError');\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadPaused');\n ExpoGaodeMapOfflineModule.removeAllListeners('onDownloadCancelled');\n }\n}\n\n/**\n * 默认导出管理类\n */\nexport default OfflineMapManager;\n"]}
@@ -18,5 +18,8 @@ export interface NamedCoordinates extends NaviPoint {
18
18
  /** POI ID */
19
19
  poiId?: string;
20
20
  }
21
+ /**
22
+ * @deprecated 请使用 `NaviPoint`
23
+ */
21
24
  export type Coordinates = NaviPoint;
22
25
  //# sourceMappingURL=coordinates.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"coordinates.types.d.ts","sourceRoot":"","sources":["../../src/types/coordinates.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"coordinates.types.d.ts","sourceRoot":"","sources":["../../src/types/coordinates.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"coordinates.types.js","sourceRoot":"","sources":["../../src/types/coordinates.types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * 导航模块坐标类型定义\n * 简化版本,仅包含导航所需的基础坐标\n */\n\n/**\n * 导航坐标点(简化版)\n */\nexport interface NaviPoint {\n latitude: number;\n longitude: number;\n}\n\n/**\n * 带名称的坐标点(POI)\n */\nexport interface NamedCoordinates extends NaviPoint {\n /** 名称 */\n name?: string;\n /** POI ID */\n poiId?: string;\n}\n\n// 为了向后兼容,导出 NaviPoint 作为 Coordinates 别名\nexport type Coordinates = NaviPoint;"]}
1
+ {"version":3,"file":"coordinates.types.js","sourceRoot":"","sources":["../../src/types/coordinates.types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * 导航模块坐标类型定义\n * 简化版本,仅包含导航所需的基础坐标\n */\n\n/**\n * 导航坐标点(简化版)\n */\nexport interface NaviPoint {\n latitude: number;\n longitude: number;\n}\n\n/**\n * 带名称的坐标点(POI)\n */\nexport interface NamedCoordinates extends NaviPoint {\n /** 名称 */\n name?: string;\n /** POI ID */\n poiId?: string;\n}\n\n/**\n * @deprecated 请使用 `NaviPoint`\n */\nexport type Coordinates = NaviPoint;\n"]}
@@ -1,3 +1,4 @@
1
+ import type { Coordinates } from './coordinates.types';
1
2
  import type { RouteResult } from './route.types';
2
3
  /**
3
4
  * 独立路径规划返回结构(不会影响当前导航状态)
@@ -13,6 +14,96 @@ export interface IndependentRouteResult {
13
14
  routeIds: number[];
14
15
  routes: RouteResult[];
15
16
  }
17
+ export interface WebPlannedRouteStep {
18
+ /** Web 路线分段点集 */
19
+ polyline?: Coordinates[];
20
+ /** 主动作(可选) */
21
+ action?: string;
22
+ /** 辅助动作(可选) */
23
+ assistantAction?: string;
24
+ }
25
+ export interface WebPlannedRoute {
26
+ /** Web 规划出的完整折线 */
27
+ polyline: Coordinates[];
28
+ /** 可选步骤信息 */
29
+ steps?: WebPlannedRouteStep[];
30
+ }
31
+ export interface BuildAnchorWaypointsOptions {
32
+ /** Web 路线 */
33
+ webRoute: WebPlannedRoute;
34
+ /** 最大途经点数量(不含起终点) */
35
+ maxViaPoints?: number;
36
+ /** 抽稀容差(米) */
37
+ simplifyTolerance?: number;
38
+ /** 相邻锚点的最小间距(米) */
39
+ minSpacingMeters?: number;
40
+ }
41
+ export interface FollowWebPlannedRouteOptions extends BuildAnchorWaypointsOptions {
42
+ /** 起点 */
43
+ from: Coordinates;
44
+ /** 终点 */
45
+ to: Coordinates;
46
+ /** 驾车策略 */
47
+ strategy?: number;
48
+ /** 车牌号 */
49
+ carNumber?: string;
50
+ /** 是否考虑限行 */
51
+ restriction?: boolean;
52
+ /** 避让区域元信息(可选)。当前 followWebPlannedRoute 的原生匹配阶段不会再次直接透传该参数。 */
53
+ avoidPolygons?: Coordinates[][];
54
+ /** 避让道路元信息(可选)。当前 followWebPlannedRoute 的原生匹配阶段不会再次直接透传该参数。 */
55
+ avoidRoad?: string;
56
+ /** 判定“最大允许偏差”的阈值(米) */
57
+ maxDeviationMeters?: number;
58
+ /** 是否在匹配成功后直接启动导航 */
59
+ startNavigation?: boolean;
60
+ /** 导航类型:0 GPS / 1 模拟 */
61
+ naviType?: number;
62
+ }
63
+ export interface FollowWebPlannedRouteCandidate {
64
+ /** 路线 ID(若可用) */
65
+ routeId?: number;
66
+ /** 路线索引 */
67
+ routeIndex: number;
68
+ /** 平均偏差(米) */
69
+ averageDeviationMeters: number;
70
+ /** 最大偏差(米) */
71
+ maxDeviationMeters: number;
72
+ /** 未命中的锚点数量 */
73
+ missedAnchorCount: number;
74
+ /** 综合评分,越小越接近 */
75
+ score: number;
76
+ }
77
+ export interface FollowWebPlannedRouteResult {
78
+ /** 匹配模式 */
79
+ mode: 'matched' | 'approximate' | 'preview_only';
80
+ /** 独立算路 token */
81
+ token: number;
82
+ /** 提炼出的锚点 */
83
+ anchorWaypoints: Coordinates[];
84
+ /** Web 路线长度 */
85
+ webDistance: number;
86
+ /** 选中原生路线长度 */
87
+ nativeDistance?: number;
88
+ /** 选中路线 ID */
89
+ selectedRouteId?: number;
90
+ /** 选中路线索引 */
91
+ selectedRouteIndex?: number;
92
+ /** 选中路线平均偏差 */
93
+ averageDeviationMeters?: number;
94
+ /** 选中路线最大偏差 */
95
+ maxDeviationMeters?: number;
96
+ /** 是否已启动导航 */
97
+ navigationStarted: boolean;
98
+ /** 最终用于导航的路线是否仍依赖锚点途经点 */
99
+ navigationUsesAnchorWaypoints: boolean;
100
+ /** 原生独立算路结果 */
101
+ independentResult: IndependentRouteResult;
102
+ /** 候选路线匹配结果 */
103
+ candidateMatches: FollowWebPlannedRouteCandidate[];
104
+ /** 说明 */
105
+ reason?: string;
106
+ }
16
107
  /**
17
108
  * 独立驾车路径规划参数
18
109
  *
@@ -21,8 +112,8 @@ export interface IndependentRouteResult {
21
112
  * - restriction:是否考虑限行(与 carNumber 搭配)
22
113
  */
23
114
  export interface IndependentDriveRouteOptions {
24
- /** 起点坐标 */
25
- from: {
115
+ /** 起点坐标(可选;不传时由原生 SDK 使用当前位置) */
116
+ from?: {
26
117
  latitude: number;
27
118
  longitude: number;
28
119
  name?: string;
@@ -56,13 +147,6 @@ export interface IndependentDriveRouteOptions {
56
147
  carNumber?: string;
57
148
  /** 是否考虑限行 */
58
149
  restriction?: boolean;
59
- /** 避让区域(可选) */
60
- avoidPolygons?: Array<Array<{
61
- latitude: number;
62
- longitude: number;
63
- }>>;
64
- /** 避让道路(道路名称,可选) */
65
- avoidRoad?: string;
66
150
  }
67
151
  /**
68
152
  * 独立货车路径规划参数
@@ -143,6 +227,8 @@ export interface MotorcycleRouteOptions {
143
227
  prioritiseHighway?: boolean;
144
228
  /** 车牌号(可选) */
145
229
  carNumber?: string;
230
+ /** 是否考虑限行 */
231
+ restriction?: boolean;
146
232
  /** 摩托车排量(单位:cc,可选) */
147
233
  motorcycleCC?: number;
148
234
  }
@@ -186,6 +272,8 @@ export interface IndependentMotorcycleRouteOptions {
186
272
  prioritiseHighway?: boolean;
187
273
  /** 车牌号(可选) */
188
274
  carNumber?: string;
275
+ /** 是否考虑限行 */
276
+ restriction?: boolean;
189
277
  /** 摩托车排量(单位:cc,可选) */
190
278
  motorcycleCC?: number;
191
279
  }
@@ -193,7 +281,9 @@ export interface IndependentMotorcycleRouteOptions {
193
281
  * 独立步行路径规划参数
194
282
  *
195
283
  * 说明:
284
+ * - 这是“独立算路”参数:只负责生成可预览/可选路的独立路径组,不会自动开始导航
196
285
  * - 通过 travelStrategy 指定 SINGLE/MULTIPLE;或使用 multiple=true 开启多路线
286
+ * - 生成结果后,可继续调用模块级 startNaviWithIndependentPath,或在嵌入式导航视图 ref 上调用 startNavigationWithIndependentPath
197
287
  */
198
288
  export interface IndependentWalkRouteOptions {
199
289
  /** 起点坐标 */
@@ -210,7 +300,7 @@ export interface IndependentWalkRouteOptions {
210
300
  name?: string;
211
301
  poiId?: string;
212
302
  };
213
- /** 途经点列表 */
303
+ /** 途经点列表。算路结果支持传入;若后续进入嵌入式导航,iOS 骑步行场景当前不支持像驾车那样额外挂载自定义文案气泡。 */
214
304
  waypoints?: Array<{
215
305
  latitude: number;
216
306
  longitude: number;
@@ -226,7 +316,9 @@ export interface IndependentWalkRouteOptions {
226
316
  * 独立骑行路径规划参数
227
317
  *
228
318
  * 说明:
319
+ * - 这是“独立算路”参数:只负责生成可预览/可选路的独立路径组,不会自动开始导航
229
320
  * - 通过 travelStrategy 指定 SINGLE/MULTIPLE;或使用 multiple=true 开启多路线
321
+ * - 生成结果后,可继续调用模块级 startNaviWithIndependentPath,或在嵌入式导航视图 ref 上调用 startNavigationWithIndependentPath
230
322
  */
231
323
  export interface IndependentRideRouteOptions {
232
324
  /** 起点坐标 */
@@ -243,7 +335,7 @@ export interface IndependentRideRouteOptions {
243
335
  name?: string;
244
336
  poiId?: string;
245
337
  };
246
- /** 途经点列表 */
338
+ /** 途经点列表。算路结果支持传入;若后续进入嵌入式导航,iOS 骑步行场景当前不支持像驾车那样额外挂载自定义文案气泡。 */
247
339
  waypoints?: Array<{
248
340
  latitude: number;
249
341
  longitude: number;
@@ -259,6 +351,7 @@ export interface IndependentRideRouteOptions {
259
351
  * 选择独立路径组中的主路线参数
260
352
  * - token: 独立算路返回的 token
261
353
  * - routeId/routeIndex: 选路(优先使用 routeId;未提供则保持当前主路线)
354
+ * - 仅切换独立路径组里的“当前主路线”,本身不会开始导航
262
355
  */
263
356
  export interface SelectIndependentRouteOptions {
264
357
  token: number;
@@ -266,10 +359,14 @@ export interface SelectIndependentRouteOptions {
266
359
  routeIndex?: number;
267
360
  }
268
361
  /**
269
- * 使用独立路径组启动导航参数
362
+ * 使用独立路径组启动导航参数(模块级 API)
270
363
  * - token: 独立算路返回的 token
271
364
  * - naviType: 0=GPS; 1=EMULATOR(默认 0)
272
365
  * - routeId/routeIndex: 启动前可选路
366
+ *
367
+ * 说明:
368
+ * - 这是模块级启动入口,不依赖某个 ExpoGaodeMapNaviView 实例
369
+ * - 若你已经持有嵌入式导航视图 ref,更适合调用 ref.startNavigationWithIndependentPath(...)
273
370
  */
274
371
  export interface StartNaviWithIndependentPathOptions {
275
372
  token: number;
@@ -279,6 +376,8 @@ export interface StartNaviWithIndependentPathOptions {
279
376
  }
280
377
  /**
281
378
  * 清理独立路径组
379
+ * - token: 独立算路返回的 token
380
+ * - 当页面只需要预览、不再需要后续选路/导航时,建议主动清理
282
381
  */
283
382
  export interface ClearIndependentRouteOptions {
284
383
  token: number;
@@ -1 +1 @@
1
- {"version":3,"file":"independent.types.d.ts","sourceRoot":"","sources":["../../src/types/independent.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"independent.types.d.ts","sourceRoot":"","sources":["../../src/types/independent.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"independent.types.js","sourceRoot":"","sources":["../../src/types/independent.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { RouteResult } from './route.types';\n\n/**\n * 独立路径规划返回结构(不会影响当前导航状态)\n *\n * - routes: 可直接用于路线预览(与普通算路的 RouteResult 结构一致)\n * - mainPathIndex: 主路线索引(调用 startNaviWithPath 前可选路)\n */\nexport interface IndependentRouteResult {\n independent: true;\n token: number;\n count: number;\n mainPathIndex: number;\n routeIds: number[];\n routes: RouteResult[];\n}\n\n/**\n * 独立驾车路径规划参数\n *\n * 说明:\n * - strategy 仍使用 DriveStrategy 即可;也可改用布尔组合标志(下方四个),原生会在未传 strategy 时走 strategyConvert\n * - restriction:是否考虑限行(与 carNumber 搭配)\n */\nexport interface IndependentDriveRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 驾车策略 */\n strategy?: number;\n /** 避免拥堵 */\n avoidCongestion?: boolean;\n /** 避免高速 */\n avoidHighway?: boolean;\n /** 避免收费 */\n avoidCost?: boolean;\n /** 优先高速 */\n prioritiseHighway?: boolean;\n /** 车牌号 */\n carNumber?: string;\n /** 是否考虑限行 */\n restriction?: boolean;\n /** 避让区域(可选) */\n avoidPolygons?: Array<Array<{\n latitude: number;\n longitude: number;\n }>>;\n /** 避让道路(道路名称,可选) */\n avoidRoad?: string;\n}\n\n/**\n * 独立货车路径规划参数\n *\n * 说明:\n * - 默认 carType=1,支持 carNumber / restriction;可在原生侧扩展轴数/长宽高/载重等\n * - 同样支持布尔组合标志以计算策略\n */\nexport interface IndependentTruckRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 驾车策略 */\n strategy?: number;\n /** 避免拥堵 */\n avoidCongestion?: boolean;\n /** 避免高速 */\n avoidHighway?: boolean;\n /** 避免收费 */\n avoidCost?: boolean;\n /** 优先高速 */\n prioritiseHighway?: boolean;\n /** 车牌号 */\n carNumber?: string;\n /** 是否考虑限行 */\n restriction?: boolean;\n}\n\n/**\n * 摩托车路径规划参数\n *\n * 说明:\n * - 与驾车算路一致,但需在原生侧设置 AMapCarInfo.carType=11,并可传 motorcycleCC(排量)\n * - carNumber 可用于限行策略参考\n */\nexport interface MotorcycleRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n }>;\n /** 驾车策略 */\n strategy?: number;\n /** 避免拥堵 */\n avoidCongestion?: boolean;\n /** 避免高速 */\n avoidHighway?: boolean;\n /** 避免收费 */\n avoidCost?: boolean;\n /** 优先高速 */\n prioritiseHighway?: boolean;\n /** 车牌号(可选) */\n carNumber?: string;\n /** 摩托车排量(单位:cc,可选) */\n motorcycleCC?: number;\n}\n\n/**\n * 独立摩托车路径规划参数\n *\n * 说明:\n * - 与独立驾车一致,但需在原生侧设置 carType=11,并可传 motorcycleCC\n */\nexport interface IndependentMotorcycleRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 驾车策略 */\n strategy?: number;\n /** 避免拥堵 */\n avoidCongestion?: boolean;\n /** 避免高速 */\n avoidHighway?: boolean;\n /** 避免收费 */\n avoidCost?: boolean;\n /** 优先高速 */\n prioritiseHighway?: boolean;\n /** 车牌号(可选) */\n carNumber?: string;\n /** 摩托车排量(单位:cc,可选) */\n motorcycleCC?: number;\n}\n\n/**\n * 独立步行路径规划参数\n *\n * 说明:\n * - 通过 travelStrategy 指定 SINGLE/MULTIPLE;或使用 multiple=true 开启多路线\n */\nexport interface IndependentWalkRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: number;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n}\n\n/**\n * 独立骑行路径规划参数\n *\n * 说明:\n * - 通过 travelStrategy 指定 SINGLE/MULTIPLE;或使用 multiple=true 开启多路线\n */\nexport interface IndependentRideRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: number;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n}\n\n/**\n * 选择独立路径组中的主路线参数\n * - token: 独立算路返回的 token\n * - routeId/routeIndex: 选路(优先使用 routeId;未提供则保持当前主路线)\n */\nexport interface SelectIndependentRouteOptions {\n token: number;\n routeId?: number;\n routeIndex?: number;\n}\n\n/**\n * 使用独立路径组启动导航参数\n * - token: 独立算路返回的 token\n * - naviType: 0=GPS; 1=EMULATOR(默认 0)\n * - routeId/routeIndex: 启动前可选路\n */\nexport interface StartNaviWithIndependentPathOptions {\n token: number;\n naviType?: number;\n routeId?: number;\n routeIndex?: number;\n}\n\n/**\n * 清理独立路径组\n */\nexport interface ClearIndependentRouteOptions {\n token: number;\n}"]}
1
+ {"version":3,"file":"independent.types.js","sourceRoot":"","sources":["../../src/types/independent.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Coordinates } from './coordinates.types';\nimport type { RouteResult } from './route.types';\n\n/**\n * 独立路径规划返回结构(不会影响当前导航状态)\n *\n * - routes: 可直接用于路线预览(与普通算路的 RouteResult 结构一致)\n * - mainPathIndex: 主路线索引(调用 startNaviWithPath 前可选路)\n */\nexport interface IndependentRouteResult {\n independent: true;\n token: number;\n count: number;\n mainPathIndex: number;\n routeIds: number[];\n routes: RouteResult[];\n}\n\nexport interface WebPlannedRouteStep {\n /** Web 路线分段点集 */\n polyline?: Coordinates[];\n /** 主动作(可选) */\n action?: string;\n /** 辅助动作(可选) */\n assistantAction?: string;\n}\n\nexport interface WebPlannedRoute {\n /** Web 规划出的完整折线 */\n polyline: Coordinates[];\n /** 可选步骤信息 */\n steps?: WebPlannedRouteStep[];\n}\n\nexport interface BuildAnchorWaypointsOptions {\n /** Web 路线 */\n webRoute: WebPlannedRoute;\n /** 最大途经点数量(不含起终点) */\n maxViaPoints?: number;\n /** 抽稀容差(米) */\n simplifyTolerance?: number;\n /** 相邻锚点的最小间距(米) */\n minSpacingMeters?: number;\n}\n\nexport interface FollowWebPlannedRouteOptions extends BuildAnchorWaypointsOptions {\n /** 起点 */\n from: Coordinates;\n /** 终点 */\n to: Coordinates;\n /** 驾车策略 */\n strategy?: number;\n /** 车牌号 */\n carNumber?: string;\n /** 是否考虑限行 */\n restriction?: boolean;\n /** 避让区域元信息(可选)。当前 followWebPlannedRoute 的原生匹配阶段不会再次直接透传该参数。 */\n avoidPolygons?: Coordinates[][];\n /** 避让道路元信息(可选)。当前 followWebPlannedRoute 的原生匹配阶段不会再次直接透传该参数。 */\n avoidRoad?: string;\n /** 判定“最大允许偏差”的阈值(米) */\n maxDeviationMeters?: number;\n /** 是否在匹配成功后直接启动导航 */\n startNavigation?: boolean;\n /** 导航类型:0 GPS / 1 模拟 */\n naviType?: number;\n}\n\nexport interface FollowWebPlannedRouteCandidate {\n /** 路线 ID(若可用) */\n routeId?: number;\n /** 路线索引 */\n routeIndex: number;\n /** 平均偏差(米) */\n averageDeviationMeters: number;\n /** 最大偏差(米) */\n maxDeviationMeters: number;\n /** 未命中的锚点数量 */\n missedAnchorCount: number;\n /** 综合评分,越小越接近 */\n score: number;\n}\n\nexport interface FollowWebPlannedRouteResult {\n /** 匹配模式 */\n mode: 'matched' | 'approximate' | 'preview_only';\n /** 独立算路 token */\n token: number;\n /** 提炼出的锚点 */\n anchorWaypoints: Coordinates[];\n /** Web 路线长度 */\n webDistance: number;\n /** 选中原生路线长度 */\n nativeDistance?: number;\n /** 选中路线 ID */\n selectedRouteId?: number;\n /** 选中路线索引 */\n selectedRouteIndex?: number;\n /** 选中路线平均偏差 */\n averageDeviationMeters?: number;\n /** 选中路线最大偏差 */\n maxDeviationMeters?: number;\n /** 是否已启动导航 */\n navigationStarted: boolean;\n /** 最终用于导航的路线是否仍依赖锚点途经点 */\n navigationUsesAnchorWaypoints: boolean;\n /** 原生独立算路结果 */\n independentResult: IndependentRouteResult;\n /** 候选路线匹配结果 */\n candidateMatches: FollowWebPlannedRouteCandidate[];\n /** 说明 */\n reason?: string;\n}\n\n/**\n * 独立驾车路径规划参数\n *\n * 说明:\n * - strategy 仍使用 DriveStrategy 即可;也可改用布尔组合标志(下方四个),原生会在未传 strategy 时走 strategyConvert\n * - restriction:是否考虑限行(与 carNumber 搭配)\n */\nexport interface IndependentDriveRouteOptions {\n /** 起点坐标(可选;不传时由原生 SDK 使用当前位置) */\n from?: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 驾车策略 */\n strategy?: number;\n /** 避免拥堵 */\n avoidCongestion?: boolean;\n /** 避免高速 */\n avoidHighway?: boolean;\n /** 避免收费 */\n avoidCost?: boolean;\n /** 优先高速 */\n prioritiseHighway?: boolean;\n /** 车牌号 */\n carNumber?: string;\n /** 是否考虑限行 */\n restriction?: boolean;\n}\n\n/**\n * 独立货车路径规划参数\n *\n * 说明:\n * - 默认 carType=1,支持 carNumber / restriction;可在原生侧扩展轴数/长宽高/载重等\n * - 同样支持布尔组合标志以计算策略\n */\nexport interface IndependentTruckRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 驾车策略 */\n strategy?: number;\n /** 避免拥堵 */\n avoidCongestion?: boolean;\n /** 避免高速 */\n avoidHighway?: boolean;\n /** 避免收费 */\n avoidCost?: boolean;\n /** 优先高速 */\n prioritiseHighway?: boolean;\n /** 车牌号 */\n carNumber?: string;\n /** 是否考虑限行 */\n restriction?: boolean;\n}\n\n/**\n * 摩托车路径规划参数\n *\n * 说明:\n * - 与驾车算路一致,但需在原生侧设置 AMapCarInfo.carType=11,并可传 motorcycleCC(排量)\n * - carNumber 可用于限行策略参考\n */\nexport interface MotorcycleRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n }>;\n /** 驾车策略 */\n strategy?: number;\n /** 避免拥堵 */\n avoidCongestion?: boolean;\n /** 避免高速 */\n avoidHighway?: boolean;\n /** 避免收费 */\n avoidCost?: boolean;\n /** 优先高速 */\n prioritiseHighway?: boolean;\n /** 车牌号(可选) */\n carNumber?: string;\n /** 是否考虑限行 */\n restriction?: boolean;\n /** 摩托车排量(单位:cc,可选) */\n motorcycleCC?: number;\n}\n\n/**\n * 独立摩托车路径规划参数\n *\n * 说明:\n * - 与独立驾车一致,但需在原生侧设置 carType=11,并可传 motorcycleCC\n */\nexport interface IndependentMotorcycleRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 驾车策略 */\n strategy?: number;\n /** 避免拥堵 */\n avoidCongestion?: boolean;\n /** 避免高速 */\n avoidHighway?: boolean;\n /** 避免收费 */\n avoidCost?: boolean;\n /** 优先高速 */\n prioritiseHighway?: boolean;\n /** 车牌号(可选) */\n carNumber?: string;\n /** 是否考虑限行 */\n restriction?: boolean;\n /** 摩托车排量(单位:cc,可选) */\n motorcycleCC?: number;\n}\n\n/**\n * 独立步行路径规划参数\n *\n * 说明:\n * - 这是“独立算路”参数:只负责生成可预览/可选路的独立路径组,不会自动开始导航\n * - 通过 travelStrategy 指定 SINGLE/MULTIPLE;或使用 multiple=true 开启多路线\n * - 生成结果后,可继续调用模块级 startNaviWithIndependentPath,或在嵌入式导航视图 ref 上调用 startNavigationWithIndependentPath\n */\nexport interface IndependentWalkRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表。算路结果支持传入;若后续进入嵌入式导航,iOS 骑步行场景当前不支持像驾车那样额外挂载自定义文案气泡。 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: number;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n}\n\n/**\n * 独立骑行路径规划参数\n *\n * 说明:\n * - 这是“独立算路”参数:只负责生成可预览/可选路的独立路径组,不会自动开始导航\n * - 通过 travelStrategy 指定 SINGLE/MULTIPLE;或使用 multiple=true 开启多路线\n * - 生成结果后,可继续调用模块级 startNaviWithIndependentPath,或在嵌入式导航视图 ref 上调用 startNavigationWithIndependentPath\n */\nexport interface IndependentRideRouteOptions {\n /** 起点坐标 */\n from: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 终点坐标 */\n to: {\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n };\n /** 途经点列表。算路结果支持传入;若后续进入嵌入式导航,iOS 骑步行场景当前不支持像驾车那样额外挂载自定义文案气泡。 */\n waypoints?: Array<{\n latitude: number;\n longitude: number;\n name?: string;\n poiId?: string;\n }>;\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: number;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n}\n\n/**\n * 选择独立路径组中的主路线参数\n * - token: 独立算路返回的 token\n * - routeId/routeIndex: 选路(优先使用 routeId;未提供则保持当前主路线)\n * - 仅切换独立路径组里的“当前主路线”,本身不会开始导航\n */\nexport interface SelectIndependentRouteOptions {\n token: number;\n routeId?: number;\n routeIndex?: number;\n}\n\n/**\n * 使用独立路径组启动导航参数(模块级 API)\n * - token: 独立算路返回的 token\n * - naviType: 0=GPS; 1=EMULATOR(默认 0)\n * - routeId/routeIndex: 启动前可选路\n *\n * 说明:\n * - 这是模块级启动入口,不依赖某个 ExpoGaodeMapNaviView 实例\n * - 若你已经持有嵌入式导航视图 ref,更适合调用 ref.startNavigationWithIndependentPath(...)\n */\nexport interface StartNaviWithIndependentPathOptions {\n token: number;\n naviType?: number;\n routeId?: number;\n routeIndex?: number;\n}\n\n/**\n * 清理独立路径组\n * - token: 独立算路返回的 token\n * - 当页面只需要预览、不再需要后续选路/导航时,建议主动清理\n */\nexport interface ClearIndependentRouteOptions {\n token: number;\n}\n"]}
@@ -63,7 +63,7 @@ export interface ExpoGaodeMapNavigationModule extends NativeModule {
63
63
  */
64
64
  startNaviWithIndependentPath: (options: StartNaviWithIndependentPathOptions) => Promise<boolean>;
65
65
  /**
66
- * 打开官方导航页(Android: AmapNaviPage.showRouteActivity
66
+ * 打开官方导航页(Android: AmapNaviPage.showRouteActivity,)
67
67
  */
68
68
  openOfficialNaviPage: (options: OfficialNaviPageOptions) => Promise<boolean>;
69
69
  /**