expo-gaode-map-navigation 2.0.3 → 2.0.5-next.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 (69) hide show
  1. package/android/build.gradle +3 -0
  2. package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapModule.kt +32 -50
  3. package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapView.kt +5 -15
  4. package/android/src/main/java/expo/modules/gaodemap/map/modules/SDKInitializer.kt +41 -14
  5. package/build/ExpoGaodeMapNaviView.d.ts.map +1 -1
  6. package/build/ExpoGaodeMapNaviView.js +3 -2
  7. package/build/ExpoGaodeMapNaviView.js.map +1 -1
  8. package/build/ExpoGaodeMapNavigationModule.d.ts +2 -7
  9. package/build/ExpoGaodeMapNavigationModule.d.ts.map +1 -1
  10. package/build/ExpoGaodeMapNavigationModule.js +19 -2
  11. package/build/ExpoGaodeMapNavigationModule.js.map +1 -1
  12. package/build/index.d.ts.map +1 -1
  13. package/build/index.js +8 -2
  14. package/build/index.js.map +1 -1
  15. package/build/map/ExpoGaodeMapModule.d.ts.map +1 -1
  16. package/build/map/ExpoGaodeMapModule.js +160 -15
  17. package/build/map/ExpoGaodeMapModule.js.map +1 -1
  18. package/build/map/ExpoGaodeMapOfflineModule.d.ts.map +1 -1
  19. package/build/map/ExpoGaodeMapOfflineModule.js +19 -2
  20. package/build/map/ExpoGaodeMapOfflineModule.js.map +1 -1
  21. package/build/map/ExpoGaodeMapView.d.ts.map +1 -1
  22. package/build/map/ExpoGaodeMapView.js +8 -2
  23. package/build/map/ExpoGaodeMapView.js.map +1 -1
  24. package/build/map/components/overlays/Circle.d.ts.map +1 -1
  25. package/build/map/components/overlays/Circle.js +3 -2
  26. package/build/map/components/overlays/Circle.js.map +1 -1
  27. package/build/map/components/overlays/Cluster.d.ts.map +1 -1
  28. package/build/map/components/overlays/Cluster.js +3 -2
  29. package/build/map/components/overlays/Cluster.js.map +1 -1
  30. package/build/map/components/overlays/HeatMap.d.ts.map +1 -1
  31. package/build/map/components/overlays/HeatMap.js +3 -2
  32. package/build/map/components/overlays/HeatMap.js.map +1 -1
  33. package/build/map/components/overlays/Marker.d.ts.map +1 -1
  34. package/build/map/components/overlays/Marker.js +3 -2
  35. package/build/map/components/overlays/Marker.js.map +1 -1
  36. package/build/map/components/overlays/MultiPoint.d.ts.map +1 -1
  37. package/build/map/components/overlays/MultiPoint.js +3 -2
  38. package/build/map/components/overlays/MultiPoint.js.map +1 -1
  39. package/build/map/components/overlays/Polygon.d.ts.map +1 -1
  40. package/build/map/components/overlays/Polygon.js +3 -2
  41. package/build/map/components/overlays/Polygon.js.map +1 -1
  42. package/build/map/components/overlays/Polyline.d.ts.map +1 -1
  43. package/build/map/components/overlays/Polyline.js +3 -2
  44. package/build/map/components/overlays/Polyline.js.map +1 -1
  45. package/build/map/types/common.types.d.ts +6 -0
  46. package/build/map/types/common.types.d.ts.map +1 -1
  47. package/build/map/types/common.types.js.map +1 -1
  48. package/build/map/types/native-module.types.d.ts +4 -1
  49. package/build/map/types/native-module.types.d.ts.map +1 -1
  50. package/build/map/types/native-module.types.js.map +1 -1
  51. package/build/map/utils/ErrorHandler.d.ts +6 -0
  52. package/build/map/utils/ErrorHandler.d.ts.map +1 -1
  53. package/build/map/utils/ErrorHandler.js +31 -0
  54. package/build/map/utils/ErrorHandler.js.map +1 -1
  55. package/build/map/utils/GeoUtils.d.ts.map +1 -1
  56. package/build/map/utils/GeoUtils.js +6 -2
  57. package/build/map/utils/GeoUtils.js.map +1 -1
  58. package/build/map/utils/lazyNativeViewManager.d.ts +3 -0
  59. package/build/map/utils/lazyNativeViewManager.d.ts.map +1 -0
  60. package/build/map/utils/lazyNativeViewManager.js +11 -0
  61. package/build/map/utils/lazyNativeViewManager.js.map +1 -0
  62. package/ios/ExpoGaodeMapNavigation.podspec +5 -0
  63. package/ios/map/ExpoGaodeMapModule.swift +20 -42
  64. package/ios/map/ExpoGaodeMapView.swift +160 -77
  65. package/ios/map/GaodeMapPrivacyManager.swift +65 -0
  66. package/ios/map/modules/LocationManager.swift +43 -24
  67. package/package.json +1 -1
  68. package/android/src/main/java/expo/modules/gaodemap/map/MapPreloadManager.kt +0 -494
  69. package/ios/map/MapPreloadManager.swift +0 -348
@@ -27,6 +27,9 @@ if (useManagedAndroidSdkVersions) {
27
27
  }
28
28
  }
29
29
 
30
+ logger.warn("[expo-gaode-map-navigation] Thank you for using expo-gaode-map-navigation ❤️")
31
+ logger.warn("[expo-gaode-map-navigation] If you enjoy using expo-gaode-map-navigation, please consider sponsoring this project: https://github.com/TomWq")
32
+
30
33
  android {
31
34
  namespace "expo.modules.gaodemap.navigation"
32
35
  defaultConfig {
@@ -30,42 +30,6 @@ class ExpoGaodeMapModule : Module() {
30
30
  override fun definition() = ModuleDefinition {
31
31
  Name("ExpoGaodeMap")
32
32
 
33
- // 在模块加载时尝试从本地缓存恢复隐私同意状态,避免每次启动都必须 JS 调用
34
- try {
35
- val context = appContext.reactContext!!
36
- SDKInitializer.restorePrivacyState(context)
37
-
38
- // 初始化预加载管理器(注册内存监听)
39
- MapPreloadManager.initialize(context)
40
-
41
- // 尝试从 AndroidManifest.xml 读取并设置 API Key
42
- val apiKey = context.packageManager
43
- .getApplicationInfo(context.packageName, android.content.pm.PackageManager.GET_META_DATA)
44
- .metaData?.getString("com.amap.api.v2.apikey")
45
-
46
- if (!apiKey.isNullOrEmpty()) {
47
- try {
48
- MapsInitializer.setApiKey(apiKey)
49
- com.amap.api.location.AMapLocationClient.setApiKey(apiKey)
50
-
51
-
52
- // 只有在 API Key 已设置的情况下才启动预加载
53
- android.os.Handler(android.os.Looper.getMainLooper()).postDelayed({
54
- android.util.Log.i("ExpoGaodeMap", "🚀 自动启动地图预加载")
55
- MapPreloadManager.startPreload(context, poolSize = 1)
56
- }, 2000)
57
- } catch (e: Exception) {
58
- android.util.Log.w("ExpoGaodeMap", "设置 API Key 失败: ${e.message}")
59
- }
60
- } else {
61
- android.util.Log.w("ExpoGaodeMap", "⚠️ AndroidManifest.xml 未找到 API Key,跳过自动预加载")
62
- }
63
-
64
- } catch (e: Exception) {
65
- android.util.Log.w("ExpoGaodeMap", "恢复隐私状态时出现问题: ${e.message}")
66
- }
67
-
68
-
69
33
  // ==================== SDK 初始化 ====================
70
34
 
71
35
  /**
@@ -74,23 +38,42 @@ class ExpoGaodeMapModule : Module() {
74
38
  */
75
39
  Function("initSDK") { config: Map<String, String> ->
76
40
  val androidKey = config["androidKey"]
77
- if (androidKey != null) {
78
- try {
79
- SDKInitializer.initSDK(appContext.reactContext!!, androidKey)
80
- getLocationManager() // 初始化定位管理器
81
-
82
- // 初始化成功后自动触发一次预加载
83
- MapPreloadManager.startPreload(appContext.reactContext!!, poolSize = 1)
84
- } catch (e: SecurityException) {
85
- android.util.Log.e("ExpoGaodeMap", "隐私协议未同意: ${e.message}")
86
- throw expo.modules.kotlin.exception.CodedException("PRIVACY_NOT_AGREED", e.message ?: "用户未同意隐私协议", e)
87
- } catch (e: Exception) {
88
- android.util.Log.e("ExpoGaodeMap", "SDK 初始化失败: ${e.message}")
89
- throw expo.modules.kotlin.exception.CodedException("INIT_FAILED", e.message ?: "SDK 初始化失败", e)
41
+ try {
42
+ val context = appContext.reactContext!!
43
+ if (androidKey != null) {
44
+ SDKInitializer.initSDK(context, androidKey)
45
+ } else if (!SDKInitializer.isPrivacyReady()) {
46
+ throw expo.modules.kotlin.exception.CodedException(
47
+ "PRIVACY_NOT_AGREED",
48
+ "隐私协议未完成确认,请先调用 setPrivacyShow/setPrivacyAgree",
49
+ null
50
+ )
51
+ } else {
52
+ SDKInitializer.applyPrivacyState(context)
90
53
  }
54
+
55
+ getLocationManager()
56
+ } catch (e: SecurityException) {
57
+ android.util.Log.e("ExpoGaodeMap", "隐私协议未同意: ${e.message}")
58
+ throw expo.modules.kotlin.exception.CodedException("PRIVACY_NOT_AGREED", e.message ?: "用户未同意隐私协议", e)
59
+ } catch (e: Exception) {
60
+ android.util.Log.e("ExpoGaodeMap", "SDK 初始化失败: ${e.message}")
61
+ throw expo.modules.kotlin.exception.CodedException("INIT_FAILED", e.message ?: "SDK 初始化失败", e)
91
62
  }
92
63
  }
93
64
 
65
+ Function("setPrivacyShow") { hasShow: Boolean, hasContainsPrivacy: Boolean ->
66
+ SDKInitializer.setPrivacyShow(appContext.reactContext!!, hasShow, hasContainsPrivacy)
67
+ }
68
+
69
+ Function("setPrivacyAgree") { hasAgree: Boolean ->
70
+ SDKInitializer.setPrivacyAgree(appContext.reactContext!!, hasAgree)
71
+ }
72
+
73
+ Function("getPrivacyStatus") {
74
+ SDKInitializer.getPrivacyStatus()
75
+ }
76
+
94
77
  /**
95
78
  * 设置是否加载世界向量地图
96
79
  * @param enable 是否开启
@@ -890,7 +873,6 @@ class ExpoGaodeMapModule : Module() {
890
873
  OnDestroy {
891
874
  locationManager?.destroy()
892
875
  locationManager = null
893
- MapPreloadManager.cleanup()
894
876
  }
895
877
  }
896
878
 
@@ -13,6 +13,7 @@ import expo.modules.kotlin.viewevent.EventDispatcher
13
13
  import expo.modules.kotlin.views.ExpoView
14
14
  import expo.modules.gaodemap.map.managers.CameraManager
15
15
  import expo.modules.gaodemap.map.managers.UIManager
16
+ import expo.modules.gaodemap.map.modules.SDKInitializer
16
17
  import expo.modules.gaodemap.map.overlays.*
17
18
  import androidx.core.graphics.createBitmap
18
19
  import androidx.core.view.isVisible
@@ -93,22 +94,11 @@ class ExpoGaodeMapView(context: Context, appContext: AppContext) : ExpoView(cont
93
94
 
94
95
  init {
95
96
  try {
96
- // 确保隐私合规已设置
97
- MapsInitializer.updatePrivacyShow(context, true, true)
98
- MapsInitializer.updatePrivacyAgree(context, true)
97
+ SDKInitializer.applyPrivacyState(context)
99
98
 
100
- // 尝试从预加载池获取 MapView
101
- val preloadedMapView = MapPreloadManager.getPreloadedMapView()
102
-
103
- if (preloadedMapView != null) {
104
- mapView = preloadedMapView
105
- android.util.Log.i("ExpoGaodeMapView", "🚀 使用预加载的 MapView 实例")
106
- } else {
107
- // 创建地图视图
108
- mapView = MapView(context)
109
- mapView.onCreate(null)
110
- android.util.Log.i("ExpoGaodeMapView", "⚠️ 创建新的 MapView 实例 (未命中预加载池)")
111
- }
99
+ // 直接创建地图视图
100
+ mapView = MapView(context)
101
+ mapView.onCreate(null)
112
102
 
113
103
  aMap = mapView.map
114
104
 
@@ -14,24 +14,50 @@ import com.amap.api.maps.MapsInitializer
14
14
  * - 获取 SDK 版本信息
15
15
  */
16
16
  object SDKInitializer {
17
-
18
- /** 隐私协议是否已同意(进程内缓存) */
19
- private var privacyAgreed = true
17
+ private var privacyAgreed = false
18
+ private var privacyShown = false
19
+ private var privacyContains = false
20
20
 
21
+ private fun resolveContext(context: Context): Context {
22
+ return context.applicationContext ?: context
23
+ }
24
+
25
+ fun setPrivacyShow(context: Context, hasShow: Boolean, hasContainsPrivacy: Boolean) {
26
+ privacyShown = hasShow
27
+ privacyContains = hasContainsPrivacy
28
+ applyPrivacyState(resolveContext(context))
29
+ }
30
+
31
+ fun setPrivacyAgree(context: Context, hasAgree: Boolean) {
32
+ privacyAgreed = hasAgree
33
+ applyPrivacyState(resolveContext(context))
34
+ }
21
35
 
22
-
23
- fun restorePrivacyState(context: Context) {
36
+ fun applyPrivacyState(context: Context) {
37
+ val appContext = resolveContext(context)
24
38
  try {
25
- // 同步到 SDK
26
- MapsInitializer.updatePrivacyShow(context, true, true)
27
- AMapLocationClient.updatePrivacyShow(context, true, true)
28
- MapsInitializer.updatePrivacyAgree(context, privacyAgreed)
29
- AMapLocationClient.updatePrivacyAgree(context, privacyAgreed)
39
+ MapsInitializer.updatePrivacyShow(appContext, privacyShown, privacyContains)
40
+ AMapLocationClient.updatePrivacyShow(appContext, privacyShown, privacyContains)
41
+ MapsInitializer.updatePrivacyAgree(appContext, privacyAgreed)
42
+ AMapLocationClient.updatePrivacyAgree(appContext, privacyAgreed)
30
43
  } catch (e: Exception) {
31
- android.util.Log.w("ExpoGaodeMap", "恢复隐私状态失败: ${e.message}")
44
+ android.util.Log.w("ExpoGaodeMap", "同步隐私状态失败: ${e.message}")
32
45
  }
33
46
  }
34
47
 
48
+ fun isPrivacyReady(): Boolean {
49
+ return privacyShown && privacyContains && privacyAgreed
50
+ }
51
+
52
+ fun getPrivacyStatus(): Map<String, Boolean> {
53
+ return mapOf(
54
+ "hasShow" to privacyShown,
55
+ "hasContainsPrivacy" to privacyContains,
56
+ "hasAgree" to privacyAgreed,
57
+ "isReady" to isPrivacyReady()
58
+ )
59
+ }
60
+
35
61
  /**
36
62
  * 初始化高德地图和定位 SDK
37
63
  *
@@ -40,13 +66,14 @@ object SDKInitializer {
40
66
  * @throws Exception 初始化失败时抛出异常
41
67
  */
42
68
  fun initSDK(context: Context, androidKey: String) {
69
+ val appContext = resolveContext(context)
43
70
  // 检查隐私协议状态
44
- if (!privacyAgreed) {
45
- // 使用 Kotlin 模块的 CodedException,让 JS 能收到标准化异常
46
- throw expo.modules.kotlin.exception.CodedException("用户未同意隐私协议,无法初始化 SDK")
71
+ if (!isPrivacyReady()) {
72
+ throw expo.modules.kotlin.exception.CodedException("隐私协议未完成确认,请先调用 setPrivacyShow/setPrivacyAgree")
47
73
  }
48
74
 
49
75
  try {
76
+ applyPrivacyState(appContext)
50
77
  // 设置 API Key
51
78
  MapsInitializer.setApiKey(androidKey)
52
79
  AMapLocationClient.setApiKey(androidKey)
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoGaodeMapNaviView.d.ts","sourceRoot":"","sources":["../src/ExpoGaodeMapNaviView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9F;;OAEG;IACH,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,oBAAoB,2GAwB/B,CAAC;AAIH,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"ExpoGaodeMapNaviView.d.ts","sourceRoot":"","sources":["../src/ExpoGaodeMapNaviView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAGtE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9F;;OAEG;IACH,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,oBAAoB,2GAyB/B,CAAC;AAIH,eAAe,oBAAoB,CAAC"}
@@ -1,6 +1,6 @@
1
- import { requireNativeViewManager } from 'expo-modules-core';
2
1
  import * as React from 'react';
3
- const NativeView = requireNativeViewManager('ExpoGaodeMapNaviView');
2
+ import { createLazyNativeViewManager } from './map/utils/lazyNativeViewManager';
3
+ const getNativeView = createLazyNativeViewManager('ExpoGaodeMapNaviView');
4
4
  /**
5
5
  * 高德导航视图组件
6
6
  *
@@ -36,6 +36,7 @@ const NativeView = requireNativeViewManager('ExpoGaodeMapNaviView');
36
36
  */
37
37
  export const ExpoGaodeMapNaviView = React.forwardRef((props, ref) => {
38
38
  const nativeRef = React.useRef(null);
39
+ const NativeView = React.useMemo(() => getNativeView(), []);
39
40
  // 创建 API 引用
40
41
  const apiRef = React.useMemo(() => ({
41
42
  startNavigation: async (start, end, type) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoGaodeMapNaviView.js","sourceRoot":"","sources":["../src/ExpoGaodeMapNaviView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmB/B,MAAM,UAAU,GAA8E,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;AAE/I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,CAAqD,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACtH,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAM,IAAI,CAAC,CAAC;IAE1C,YAAY;IACZ,MAAM,MAAM,GAA4B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,eAAe,EAAE,KAAK,EAAE,KAAyB,EAAE,GAAgB,EAAE,IAAY,EAAE,EAAE;YACnF,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAChF,oBAAoB;YACpB,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;YAC7B,OAAO,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/E,CAAC;QACD,cAAc,EAAE,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5C,CAAC;KACF,CAAC,EAAE,EAAE,CAAC,CAAC;IAER,iBAAiB;IACjB,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,oBAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAC;AAE1D,eAAe,oBAAoB,CAAC","sourcesContent":["\nimport { requireNativeViewManager } from 'expo-modules-core';\nimport * as React from 'react';\nimport type { Coordinates, ExpoGaodeMapNaviViewProps } from './types';\n\n/**\n * ExpoGaodeMapNaviView Ref 类型\n */\nexport interface ExpoGaodeMapNaviViewRef {\n /**\n * 开始导航\n */\n startNavigation: (start: Coordinates | null, end: Coordinates, type: number) => Promise<void>;\n \n /**\n * 停止导航\n */\n stopNavigation: () => Promise<void>;\n}\n\n\nconst NativeView: React.ComponentType<ExpoGaodeMapNaviViewProps & { ref?: React.Ref<any> }> = requireNativeViewManager('ExpoGaodeMapNaviView');\n\n/**\n * 高德导航视图组件\n *\n * 使用高德官方的导航界面,提供完整的导航体验,包括:\n * - 路线规划和显示\n * - 实时导航信息(距离、时间、道路名称)\n * - 转向箭头和提示\n * - 路况信息\n * - 摄像头提示\n * - 语音播报\n *\n * @example\n * ```tsx\n * import { ExpoGaodeMapNaviView } from 'expo-gaode-map-navigation';\n *\n * function NavigationScreen() {\n * return (\n * <ExpoGaodeMapNaviView\n * style={{ flex: 1 }}\n * naviType={0} // GPS 导航\n * showCamera={true}\n * enableVoice={true}\n * onNaviInfoUpdate={(e) => {\n * console.log('剩余距离:', e.nativeEvent.pathRetainDistance);\n * }}\n * onArrive={() => {\n * console.log('到达目的地!');\n * }}\n * />\n * );\n * }\n * ```\n */\nexport const ExpoGaodeMapNaviView = React.forwardRef<ExpoGaodeMapNaviViewRef, ExpoGaodeMapNaviViewProps>((props, ref) => {\n const nativeRef = React.useRef<any>(null);\n \n // 创建 API 引用\n const apiRef: ExpoGaodeMapNaviViewRef = React.useMemo(() => ({\n startNavigation: async (start: Coordinates | null, end: Coordinates, type: number) => {\n if (!nativeRef.current) throw new Error('ExpoGaodeMapNaviView not initialized');\n // 将对象解构为单独的参数传递给原生层\n const startLat = start?.latitude ?? 0;\n const startLng = start?.longitude ?? 0;\n const endLat = end.latitude;\n const endLng = end.longitude;\n return nativeRef.current.startNavigation(startLat, startLng, endLat, endLng);\n },\n stopNavigation: async () => {\n if (!nativeRef.current) throw new Error('ExpoGaodeMapNaviView not initialized');\n return nativeRef.current.stopNavigation();\n },\n }), []);\n \n // 暴露 API 给外部 ref\n React.useImperativeHandle(ref, () => apiRef, [apiRef]);\n \n return <NativeView ref={nativeRef} {...props} />;\n});\n\nExpoGaodeMapNaviView.displayName = 'ExpoGaodeMapNaviView';\n\nexport default ExpoGaodeMapNaviView;"]}
1
+ {"version":3,"file":"ExpoGaodeMapNaviView.js","sourceRoot":"","sources":["../src/ExpoGaodeMapNaviView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AA2BhF,MAAM,aAAa,GAAG,2BAA2B,CAE/C,sBAAsB,CAAC,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,CAAqD,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACtH,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAuC,IAAI,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;IAE5D,YAAY;IACZ,MAAM,MAAM,GAA4B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,eAAe,EAAE,KAAK,EAAE,KAAyB,EAAE,GAAgB,EAAE,IAAY,EAAE,EAAE;YACnF,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAChF,oBAAoB;YACpB,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;YAC7B,OAAO,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/E,CAAC;QACD,cAAc,EAAE,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5C,CAAC;KACF,CAAC,EAAE,EAAE,CAAC,CAAC;IAER,iBAAiB;IACjB,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,oBAAoB,CAAC,WAAW,GAAG,sBAAsB,CAAC;AAE1D,eAAe,oBAAoB,CAAC","sourcesContent":["import * as React from 'react';\nimport type { Coordinates, ExpoGaodeMapNaviViewProps } from './types';\nimport { createLazyNativeViewManager } from './map/utils/lazyNativeViewManager';\n\n/**\n * ExpoGaodeMapNaviView Ref 类型\n */\nexport interface ExpoGaodeMapNaviViewRef {\n /**\n * 开始导航\n */\n startNavigation: (start: Coordinates | null, end: Coordinates, type: number) => Promise<void>;\n \n /**\n * 停止导航\n */\n stopNavigation: () => Promise<void>;\n}\n\ninterface NativeExpoGaodeMapNaviViewRef {\n startNavigation: (\n startLatitude: number,\n startLongitude: number,\n endLatitude: number,\n endLongitude: number\n ) => Promise<void>;\n stopNavigation: () => Promise<void>;\n}\n\nconst getNativeView = createLazyNativeViewManager<\n ExpoGaodeMapNaviViewProps & { ref?: React.Ref<NativeExpoGaodeMapNaviViewRef> }\n>('ExpoGaodeMapNaviView');\n\n/**\n * 高德导航视图组件\n *\n * 使用高德官方的导航界面,提供完整的导航体验,包括:\n * - 路线规划和显示\n * - 实时导航信息(距离、时间、道路名称)\n * - 转向箭头和提示\n * - 路况信息\n * - 摄像头提示\n * - 语音播报\n *\n * @example\n * ```tsx\n * import { ExpoGaodeMapNaviView } from 'expo-gaode-map-navigation';\n *\n * function NavigationScreen() {\n * return (\n * <ExpoGaodeMapNaviView\n * style={{ flex: 1 }}\n * naviType={0} // GPS 导航\n * showCamera={true}\n * enableVoice={true}\n * onNaviInfoUpdate={(e) => {\n * console.log('剩余距离:', e.nativeEvent.pathRetainDistance);\n * }}\n * onArrive={() => {\n * console.log('到达目的地!');\n * }}\n * />\n * );\n * }\n * ```\n */\nexport const ExpoGaodeMapNaviView = React.forwardRef<ExpoGaodeMapNaviViewRef, ExpoGaodeMapNaviViewProps>((props, ref) => {\n const nativeRef = React.useRef<NativeExpoGaodeMapNaviViewRef | null>(null);\n const NativeView = React.useMemo(() => getNativeView(), []);\n \n // 创建 API 引用\n const apiRef: ExpoGaodeMapNaviViewRef = React.useMemo(() => ({\n startNavigation: async (start: Coordinates | null, end: Coordinates, type: number) => {\n if (!nativeRef.current) throw new Error('ExpoGaodeMapNaviView not initialized');\n // 将对象解构为单独的参数传递给原生层\n const startLat = start?.latitude ?? 0;\n const startLng = start?.longitude ?? 0;\n const endLat = end.latitude;\n const endLng = end.longitude;\n return nativeRef.current.startNavigation(startLat, startLng, endLat, endLng);\n },\n stopNavigation: async () => {\n if (!nativeRef.current) throw new Error('ExpoGaodeMapNaviView not initialized');\n return nativeRef.current.stopNavigation();\n },\n }), []);\n \n // 暴露 API 给外部 ref\n React.useImperativeHandle(ref, () => apiRef, [apiRef]);\n \n return <NativeView ref={nativeRef} {...props} />;\n});\n\nExpoGaodeMapNaviView.displayName = 'ExpoGaodeMapNaviView';\n\nexport default ExpoGaodeMapNaviView;\n"]}
@@ -1,9 +1,4 @@
1
1
  import { ExpoGaodeMapNavigationModule as ExpoGaodeMapNavigationModuleType } from './types/native-module.types';
2
- /**
3
- * 高德地图导航模块
4
- *
5
- * 提供路径规划功能,包括驾车、步行、骑行、公交、货车等多种出行方式
6
- */
7
- declare const ExpoGaodeMapNavigationModule: ExpoGaodeMapNavigationModuleType;
8
- export default ExpoGaodeMapNavigationModule;
2
+ declare const _default: ExpoGaodeMapNavigationModuleType;
3
+ export default _default;
9
4
  //# sourceMappingURL=ExpoGaodeMapNavigationModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoGaodeMapNavigationModule.d.ts","sourceRoot":"","sources":["../src/ExpoGaodeMapNavigationModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,IAAI,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/G;;;;GAIG;AACH,QAAA,MAAM,4BAA4B,kCAAkF,CAAC;AAErH,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"ExpoGaodeMapNavigationModule.d.ts","sourceRoot":"","sources":["../src/ExpoGaodeMapNavigationModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,IAAI,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;;AA2B/G,wBAIG"}
@@ -4,6 +4,23 @@ import { requireNativeModule } from 'expo-modules-core';
4
4
  *
5
5
  * 提供路径规划功能,包括驾车、步行、骑行、公交、货车等多种出行方式
6
6
  */
7
- const ExpoGaodeMapNavigationModule = requireNativeModule('ExpoGaodeMapNavigation');
8
- export default ExpoGaodeMapNavigationModule;
7
+ let nativeModuleCache = null;
8
+ function getNativeModule() {
9
+ if (!nativeModuleCache) {
10
+ nativeModuleCache = requireNativeModule('ExpoGaodeMapNavigation');
11
+ }
12
+ return nativeModuleCache;
13
+ }
14
+ function getBoundNativeValue(module, prop) {
15
+ const value = Reflect.get(module, prop, module);
16
+ if (typeof value === 'function') {
17
+ return (...args) => value.apply(module, args);
18
+ }
19
+ return value;
20
+ }
21
+ export default new Proxy({}, {
22
+ get(_target, prop) {
23
+ return getBoundNativeValue(getNativeModule(), prop);
24
+ },
25
+ });
9
26
  //# sourceMappingURL=ExpoGaodeMapNavigationModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoGaodeMapNavigationModule.js","sourceRoot":"","sources":["../src/ExpoGaodeMapNavigationModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;GAIG;AACH,MAAM,4BAA4B,GAAG,mBAAmB,CAAmC,wBAAwB,CAAC,CAAC;AAErH,eAAe,4BAA4B,CAAC","sourcesContent":["\nimport { requireNativeModule } from 'expo-modules-core';\nimport { ExpoGaodeMapNavigationModule as ExpoGaodeMapNavigationModuleType } from './types/native-module.types';\n/**\n * 高德地图导航模块\n * \n * 提供路径规划功能,包括驾车、步行、骑行、公交、货车等多种出行方式\n */\nconst ExpoGaodeMapNavigationModule = requireNativeModule<ExpoGaodeMapNavigationModuleType>('ExpoGaodeMapNavigation');\n\nexport default ExpoGaodeMapNavigationModule;"]}
1
+ {"version":3,"file":"ExpoGaodeMapNavigationModule.js","sourceRoot":"","sources":["../src/ExpoGaodeMapNavigationModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;GAIG;AACH,IAAI,iBAAiB,GAA4C,IAAI,CAAC;AAEtE,SAAS,eAAe;IACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,iBAAiB,GAAG,mBAAmB,CAAmC,wBAAwB,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAwC,EACxC,IAAiB;IAEjB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAgB,EAAE,IAAI,EAAE,MAAgB,CAAC,CAAC;IACpE,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE,CAC3B,KAA2C,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,eAAe,IAAI,KAAK,CAAC,EAAsC,EAAE;IAC/D,GAAG,CAAC,OAAO,EAAE,IAAI;QACf,OAAO,mBAAmB,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF,CAAC,CAAC","sourcesContent":["\nimport { requireNativeModule } from 'expo-modules-core';\nimport { ExpoGaodeMapNavigationModule as ExpoGaodeMapNavigationModuleType } from './types/native-module.types';\n/**\n * 高德地图导航模块\n * \n * 提供路径规划功能,包括驾车、步行、骑行、公交、货车等多种出行方式\n */\nlet nativeModuleCache: ExpoGaodeMapNavigationModuleType | null = null;\n\nfunction getNativeModule(): ExpoGaodeMapNavigationModuleType {\n if (!nativeModuleCache) {\n nativeModuleCache = requireNativeModule<ExpoGaodeMapNavigationModuleType>('ExpoGaodeMapNavigation');\n }\n return nativeModuleCache;\n}\n\nfunction getBoundNativeValue(\n module: ExpoGaodeMapNavigationModuleType,\n prop: PropertyKey\n): unknown {\n const value = Reflect.get(module as object, prop, module as object);\n if (typeof value === 'function') {\n return (...args: unknown[]) =>\n (value as (...fnArgs: unknown[]) => unknown).apply(module, args);\n }\n return value;\n}\n\nexport default new Proxy({} as ExpoGaodeMapNavigationModuleType, {\n get(_target, prop) {\n return getBoundNativeValue(getNativeModule(), prop);\n },\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -2,6 +2,12 @@ import ExpoGaodeMapNavigationModule from './ExpoGaodeMapNavigationModule';
2
2
  // 重新导出地图模块的所有内容
3
3
  export * from './map';
4
4
  import { RouteType, DriveStrategy, WalkStrategy, RideStrategy, TruckSize, TravelStrategy, } from './types';
5
+ function hasStrategyOption(options) {
6
+ return 'strategy' in options;
7
+ }
8
+ function isMotorcycleRouteOptions(options) {
9
+ return 'motorcycleCC' in options;
10
+ }
5
11
  // 导出官方导航界面组件
6
12
  export { ExpoGaodeMapNaviView,
7
13
  // 兼容旧版本名称
@@ -29,14 +35,14 @@ export async function calculateRoute(options) {
29
35
  if ('usePoi' in options)
30
36
  return calculateEBikeRoute(options);
31
37
  // 策略判断:0 或 1 通常为骑行策略,其余默认步行
32
- const strategy = options.strategy;
38
+ const strategy = hasStrategyOption(options) ? options.strategy : undefined;
33
39
  if (strategy === 0 || strategy === 1) {
34
40
  return calculateRideRoute(options);
35
41
  }
36
42
  return calculateWalkRoute(options);
37
43
  }
38
44
  // 3. 摩托车 (通过 carType 或 motorcycleCC 判断)
39
- if ('motorcycleCC' in options || options.carType === 11) {
45
+ if (isMotorcycleRouteOptions(options)) {
40
46
  return calculateMotorcycleRoute(options);
41
47
  }
42
48
  // 4. 默认驾车
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import ExpoGaodeMapNavigationModule from './ExpoGaodeMapNavigationModule';\n\n// 重新导出地图模块的所有内容\nexport * from './map';\nimport {\n RouteType,\n DriveStrategy,\n WalkStrategy,\n RideStrategy,\n TruckSize,\n TravelStrategy,\n} from './types';\nimport type {\n NaviPoint,\n RouteOptions,\n DriveRouteOptions,\n WalkRouteOptions,\n RideRouteOptions,\n EBikeRouteOptions,\n TruckRouteOptions,\n RouteResult,\n DriveRouteResult,\n IndependentRouteResult,\n IndependentDriveRouteOptions,\n IndependentTruckRouteOptions,\n IndependentWalkRouteOptions,\n IndependentRideRouteOptions,\n SelectIndependentRouteOptions,\n StartNaviWithIndependentPathOptions,\n ClearIndependentRouteOptions,\n MotorcycleRouteOptions,\n IndependentMotorcycleRouteOptions,\n} from './types';\n\n// 导出官方导航界面组件\nexport { \n ExpoGaodeMapNaviView, \n type ExpoGaodeMapNaviViewRef,\n // 兼容旧版本名称\n ExpoGaodeMapNaviView as NaviView,\n type ExpoGaodeMapNaviViewRef as NaviViewRef \n} from './ExpoGaodeMapNaviView';\n\n/**\n * 初始化导航模块(可选)\n */\nexport const initNavigation = () => ExpoGaodeMapNavigationModule.initNavigation();\n\n/**\n * 销毁所有路径计算器实例\n * 用于页面切换时释放资源,避免\"Another route calculation is in progress\"错误\n */\nexport const destroyAllCalculators = () => ExpoGaodeMapNavigationModule.destroyAllCalculators();\n\n/**\n * 路径规划(通用方法)\n * 注意:公交路径规划暂未实现\n */\nexport async function calculateRoute(\n options: RouteOptions\n): Promise<RouteResult | DriveRouteResult> {\n // 1. 货车\n if ('size' in options) {\n return calculateTruckRoute(options as TruckRouteOptions);\n }\n \n // 2. 步行、骑行、电动车\n if ('multiple' in options || 'travelStrategy' in options) {\n if ('usePoi' in options) return calculateEBikeRoute(options as EBikeRouteOptions);\n \n // 策略判断:0 或 1 通常为骑行策略,其余默认步行\n const strategy = (options as any).strategy;\n if (strategy === 0 || strategy === 1) {\n return calculateRideRoute(options as RideRouteOptions);\n }\n return calculateWalkRoute(options as WalkRouteOptions);\n }\n\n // 3. 摩托车 (通过 carType 或 motorcycleCC 判断)\n if ('motorcycleCC' in options || (options as any).carType === 11) {\n return calculateMotorcycleRoute(options as MotorcycleRouteOptions);\n }\n\n // 4. 默认驾车\n return calculateDriveRoute(options as DriveRouteOptions);\n}\n\n/**\n * 驾车路径规划\n */\nexport const calculateDriveRoute = (options: DriveRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateDriveRoute(options);\n\n/**\n * 步行路径规划\n */\nexport const calculateWalkRoute = (options: WalkRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateWalkRoute(options);\n\n/**\n * 骑行路径规划\n */\nexport const calculateRideRoute = (options: RideRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateRideRoute(options);\n\n/**\n * 骑行电动车路径规划\n */\nexport const calculateEBikeRoute = (options: EBikeRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateEBikeRoute(options);\n\n/**\n * 货车路径规划\n */\nexport const calculateTruckRoute = (options: TruckRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateTruckRoute(options);\n\n/**\n * 摩托车路径规划(车类型为 11,支持传入排量)\n */\nexport const calculateMotorcycleRoute = (options: MotorcycleRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateMotorcycleRoute(options);\n\n/**\n* 独立路径规划(不会影响当前导航;适合路线预览/行前选路)\n*/\nexport const independentDriveRoute = (options: IndependentDriveRouteOptions) => \n ExpoGaodeMapNavigationModule.independentDriveRoute(options);\n\nexport const independentTruckRoute = (options: IndependentTruckRouteOptions) => \n ExpoGaodeMapNavigationModule.independentTruckRoute(options);\n\nexport const independentWalkRoute = (options: IndependentWalkRouteOptions) => \n ExpoGaodeMapNavigationModule.independentWalkRoute(options);\n\nexport const independentRideRoute = (options: IndependentRideRouteOptions) => \n ExpoGaodeMapNavigationModule.independentRideRoute(options);\n\n/**\n * 独立摩托车路径规划(不干扰当前导航)\n */\nexport const independentMotorcycleRoute = (options: IndependentMotorcycleRouteOptions) => \n ExpoGaodeMapNavigationModule.independentMotorcycleRoute(options);\n\n/**\n * 独立路径组:选主路线\n */\nexport const selectIndependentRoute = (options: SelectIndependentRouteOptions) => \n ExpoGaodeMapNavigationModule.selectIndependentRoute(options);\n\n/**\n * 独立路径组:使用指定路线启动导航\n */\nexport const startNaviWithIndependentPath = (options: StartNaviWithIndependentPathOptions) => \n ExpoGaodeMapNavigationModule.startNaviWithIndependentPath(options);\n\n/**\n * 独立路径组:清理\n */\nexport const clearIndependentRoute = (options: ClearIndependentRouteOptions) => \n ExpoGaodeMapNavigationModule.clearIndependentRoute(options);\n\n// 导出导航相关类型与枚举(Coordinates 从 map 模块导出)\nexport type {\n NaviPoint,\n RouteOptions,\n DriveRouteOptions,\n WalkRouteOptions,\n RideRouteOptions,\n EBikeRouteOptions,\n TruckRouteOptions,\n RouteResult,\n DriveRouteResult,\n IndependentRouteResult,\n IndependentDriveRouteOptions,\n IndependentTruckRouteOptions,\n IndependentWalkRouteOptions,\n IndependentRideRouteOptions,\n SelectIndependentRouteOptions,\n StartNaviWithIndependentPathOptions,\n ClearIndependentRouteOptions,\n MotorcycleRouteOptions,\n IndependentMotorcycleRouteOptions,\n};\n\nexport {\n RouteType,\n DriveStrategy,\n WalkStrategy,\n RideStrategy,\n TruckSize,\n TravelStrategy,\n};\n\n// 精简后的默认导出\nexport default {\n // 初始化\n initNavigation,\n destroyAllCalculators,\n\n // 路径规划\n calculateRoute,\n calculateDriveRoute,\n calculateWalkRoute,\n calculateRideRoute,\n calculateEBikeRoute,\n calculateTruckRoute,\n calculateMotorcycleRoute,\n\n // 独立路径规划\n independentDriveRoute,\n independentTruckRoute,\n independentWalkRoute,\n independentRideRoute,\n independentMotorcycleRoute,\n\n // 独立路径组操作\n selectIndependentRoute,\n startNaviWithIndependentPath,\n clearIndependentRoute,\n};\n\nexport {\n ExpoGaodeMapNavigationModule,\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAE1E,gBAAgB;AAChB,cAAc,OAAO,CAAC;AACtB,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,SAAS,CAAC;AAuBjB,SAAS,iBAAiB,CACxB,OAAqB;IAErB,OAAO,UAAU,IAAI,OAAO,CAAC;AAC/B,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAA8C;IAE9C,OAAO,cAAc,IAAI,OAAO,CAAC;AACnC,CAAC;AAED,aAAa;AACb,OAAO,EACL,oBAAoB;AAEpB,UAAU;AACV,oBAAoB,IAAI,QAAQ,EAEjC,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,4BAA4B,CAAC,cAAc,EAAE,CAAC;AAElF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,4BAA4B,CAAC,qBAAqB,EAAE,CAAC;AAEhG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAqB;IAErB,QAAQ;IACR,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,mBAAmB,CAAC,OAA4B,CAAC,CAAC;IAC3D,CAAC;IAED,eAAe;IACf,IAAI,UAAU,IAAI,OAAO,IAAI,gBAAgB,IAAI,OAAO,EAAE,CAAC;QACzD,IAAI,QAAQ,IAAI,OAAO;YAAE,OAAO,mBAAmB,CAAC,OAA4B,CAAC,CAAC;QAElF,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,kBAAkB,CAAC,OAA2B,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,kBAAkB,CAAC,OAA2B,CAAC,CAAC;IACzD,CAAC;IAED,wCAAwC;IACxC,IAAI,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,wBAAwB,CAAC,OAAiC,CAAC,CAAC;IACrE,CAAC;IAED,UAAU;IACV,OAAO,mBAAmB,CAAC,OAA4B,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAA0B,EAAE,EAAE,CAChE,4BAA4B,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAyB,EAAE,EAAE,CAC9D,4BAA4B,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAyB,EAAE,EAAE,CAC9D,4BAA4B,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAA0B,EAAE,EAAE,CAChE,4BAA4B,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAA0B,EAAE,EAAE,CAChE,4BAA4B,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAA+B,EAAE,EAAE,CAC1E,4BAA4B,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAEjE;;EAEE;AACF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAqC,EAAE,EAAE,CAC7E,4BAA4B,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAqC,EAAE,EAAE,CAC7E,4BAA4B,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAoC,EAAE,EAAE,CAC3E,4BAA4B,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAoC,EAAE,EAAE,CAC3E,4BAA4B,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,OAA0C,EAAE,EAAE,CACvF,4BAA4B,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAsC,EAAE,EAAE,CAC/E,4BAA4B,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,OAA4C,EAAE,EAAE,CAC3F,4BAA4B,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAqC,EAAE,EAAE,CAC7E,4BAA4B,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAyB9D,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,cAAc,GACf,CAAC;AAEF,WAAW;AACX,eAAe;IACb,MAAM;IACN,cAAc;IACd,qBAAqB;IAErB,OAAO;IACP,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,wBAAwB;IAExB,SAAS;IACT,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,0BAA0B;IAE1B,UAAU;IACV,sBAAsB;IACtB,4BAA4B;IAC5B,qBAAqB;CACtB,CAAC;AAEF,OAAO,EACL,4BAA4B,GAC7B,CAAA","sourcesContent":["import ExpoGaodeMapNavigationModule from './ExpoGaodeMapNavigationModule';\n\n// 重新导出地图模块的所有内容\nexport * from './map';\nimport {\n RouteType,\n DriveStrategy,\n WalkStrategy,\n RideStrategy,\n TruckSize,\n TravelStrategy,\n} from './types';\nimport type {\n NaviPoint,\n RouteOptions,\n DriveRouteOptions,\n WalkRouteOptions,\n RideRouteOptions,\n EBikeRouteOptions,\n TruckRouteOptions,\n RouteResult,\n DriveRouteResult,\n IndependentRouteResult,\n IndependentDriveRouteOptions,\n IndependentTruckRouteOptions,\n IndependentWalkRouteOptions,\n IndependentRideRouteOptions,\n SelectIndependentRouteOptions,\n StartNaviWithIndependentPathOptions,\n ClearIndependentRouteOptions,\n MotorcycleRouteOptions,\n IndependentMotorcycleRouteOptions,\n} from './types';\n\nfunction hasStrategyOption(\n options: RouteOptions\n): options is WalkRouteOptions | RideRouteOptions {\n return 'strategy' in options;\n}\n\nfunction isMotorcycleRouteOptions(\n options: RouteOptions | MotorcycleRouteOptions\n): options is MotorcycleRouteOptions {\n return 'motorcycleCC' in options;\n}\n\n// 导出官方导航界面组件\nexport { \n ExpoGaodeMapNaviView, \n type ExpoGaodeMapNaviViewRef,\n // 兼容旧版本名称\n ExpoGaodeMapNaviView as NaviView,\n type ExpoGaodeMapNaviViewRef as NaviViewRef \n} from './ExpoGaodeMapNaviView';\n\n/**\n * 初始化导航模块(可选)\n */\nexport const initNavigation = () => ExpoGaodeMapNavigationModule.initNavigation();\n\n/**\n * 销毁所有路径计算器实例\n * 用于页面切换时释放资源,避免\"Another route calculation is in progress\"错误\n */\nexport const destroyAllCalculators = () => ExpoGaodeMapNavigationModule.destroyAllCalculators();\n\n/**\n * 路径规划(通用方法)\n * 注意:公交路径规划暂未实现\n */\nexport async function calculateRoute(\n options: RouteOptions\n): Promise<RouteResult | DriveRouteResult> {\n // 1. 货车\n if ('size' in options) {\n return calculateTruckRoute(options as TruckRouteOptions);\n }\n \n // 2. 步行、骑行、电动车\n if ('multiple' in options || 'travelStrategy' in options) {\n if ('usePoi' in options) return calculateEBikeRoute(options as EBikeRouteOptions);\n \n // 策略判断:0 或 1 通常为骑行策略,其余默认步行\n const strategy = hasStrategyOption(options) ? options.strategy : undefined;\n if (strategy === 0 || strategy === 1) {\n return calculateRideRoute(options as RideRouteOptions);\n }\n return calculateWalkRoute(options as WalkRouteOptions);\n }\n\n // 3. 摩托车 (通过 carType 或 motorcycleCC 判断)\n if (isMotorcycleRouteOptions(options)) {\n return calculateMotorcycleRoute(options as MotorcycleRouteOptions);\n }\n\n // 4. 默认驾车\n return calculateDriveRoute(options as DriveRouteOptions);\n}\n\n/**\n * 驾车路径规划\n */\nexport const calculateDriveRoute = (options: DriveRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateDriveRoute(options);\n\n/**\n * 步行路径规划\n */\nexport const calculateWalkRoute = (options: WalkRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateWalkRoute(options);\n\n/**\n * 骑行路径规划\n */\nexport const calculateRideRoute = (options: RideRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateRideRoute(options);\n\n/**\n * 骑行电动车路径规划\n */\nexport const calculateEBikeRoute = (options: EBikeRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateEBikeRoute(options);\n\n/**\n * 货车路径规划\n */\nexport const calculateTruckRoute = (options: TruckRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateTruckRoute(options);\n\n/**\n * 摩托车路径规划(车类型为 11,支持传入排量)\n */\nexport const calculateMotorcycleRoute = (options: MotorcycleRouteOptions) => \n ExpoGaodeMapNavigationModule.calculateMotorcycleRoute(options);\n\n/**\n* 独立路径规划(不会影响当前导航;适合路线预览/行前选路)\n*/\nexport const independentDriveRoute = (options: IndependentDriveRouteOptions) => \n ExpoGaodeMapNavigationModule.independentDriveRoute(options);\n\nexport const independentTruckRoute = (options: IndependentTruckRouteOptions) => \n ExpoGaodeMapNavigationModule.independentTruckRoute(options);\n\nexport const independentWalkRoute = (options: IndependentWalkRouteOptions) => \n ExpoGaodeMapNavigationModule.independentWalkRoute(options);\n\nexport const independentRideRoute = (options: IndependentRideRouteOptions) => \n ExpoGaodeMapNavigationModule.independentRideRoute(options);\n\n/**\n * 独立摩托车路径规划(不干扰当前导航)\n */\nexport const independentMotorcycleRoute = (options: IndependentMotorcycleRouteOptions) => \n ExpoGaodeMapNavigationModule.independentMotorcycleRoute(options);\n\n/**\n * 独立路径组:选主路线\n */\nexport const selectIndependentRoute = (options: SelectIndependentRouteOptions) => \n ExpoGaodeMapNavigationModule.selectIndependentRoute(options);\n\n/**\n * 独立路径组:使用指定路线启动导航\n */\nexport const startNaviWithIndependentPath = (options: StartNaviWithIndependentPathOptions) => \n ExpoGaodeMapNavigationModule.startNaviWithIndependentPath(options);\n\n/**\n * 独立路径组:清理\n */\nexport const clearIndependentRoute = (options: ClearIndependentRouteOptions) => \n ExpoGaodeMapNavigationModule.clearIndependentRoute(options);\n\n// 导出导航相关类型与枚举(Coordinates 从 map 模块导出)\nexport type {\n NaviPoint,\n RouteOptions,\n DriveRouteOptions,\n WalkRouteOptions,\n RideRouteOptions,\n EBikeRouteOptions,\n TruckRouteOptions,\n RouteResult,\n DriveRouteResult,\n IndependentRouteResult,\n IndependentDriveRouteOptions,\n IndependentTruckRouteOptions,\n IndependentWalkRouteOptions,\n IndependentRideRouteOptions,\n SelectIndependentRouteOptions,\n StartNaviWithIndependentPathOptions,\n ClearIndependentRouteOptions,\n MotorcycleRouteOptions,\n IndependentMotorcycleRouteOptions,\n};\n\nexport {\n RouteType,\n DriveStrategy,\n WalkStrategy,\n RideStrategy,\n TruckSize,\n TravelStrategy,\n};\n\n// 精简后的默认导出\nexport default {\n // 初始化\n initNavigation,\n destroyAllCalculators,\n\n // 路径规划\n calculateRoute,\n calculateDriveRoute,\n calculateWalkRoute,\n calculateRideRoute,\n calculateEBikeRoute,\n calculateTruckRoute,\n calculateMotorcycleRoute,\n\n // 独立路径规划\n independentDriveRoute,\n independentTruckRoute,\n independentWalkRoute,\n independentRideRoute,\n independentMotorcycleRoute,\n\n // 独立路径组操作\n selectIndependentRoute,\n startNaviWithIndependentPath,\n clearIndependentRoute,\n};\n\nexport {\n ExpoGaodeMapNavigationModule,\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoGaodeMapModule.d.ts","sourceRoot":"","sources":["../../src/map/ExpoGaodeMapModule.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAC;AAqpBnE;;EAEE;AACF,wBAAgB,YAAY,IAAI,SAAS,GAAG,IAAI,CAE/C;AAED;;EAEE;AACF,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;wBAE0D,kBAAkB;AAA7E,wBAA8E"}
1
+ {"version":3,"file":"ExpoGaodeMapModule.d.ts","sourceRoot":"","sources":["../../src/map/ExpoGaodeMapModule.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAiB,SAAS,EAAoB,MAAM,sBAAsB,CAAC;AA6xBlF;;EAEE;AACF,wBAAgB,YAAY,IAAI,SAAS,GAAG,IAAI,CAE/C;AA4BD;;EAEE;AACF,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;wBAE0D,kBAAkB;AAA7E,wBAA8E"}