expo-gaode-map-navigation 2.0.17 → 2.0.19

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 (277) hide show
  1. package/android/build.gradle +10 -25
  2. package/build/ExpoGaodeMapNaviView.js +2 -1
  3. package/build/ExpoGaodeMapNaviView.js.map +1 -1
  4. package/build/ExpoGaodeMapNavigationModule.d.ts +1 -1
  5. package/build/ExpoGaodeMapNavigationModule.d.ts.map +1 -1
  6. package/build/ExpoGaodeMapNavigationModule.js.map +1 -1
  7. package/build/map/ExpoGaodeMapModule.d.ts +3 -2
  8. package/build/map/ExpoGaodeMapModule.d.ts.map +1 -1
  9. package/build/map/ExpoGaodeMapModule.js +13 -4
  10. package/build/map/ExpoGaodeMapModule.js.map +1 -1
  11. package/build/map/ExpoGaodeMapOfflineModule.js +1 -1
  12. package/build/map/ExpoGaodeMapOfflineModule.js.map +1 -1
  13. package/build/map/ExpoGaodeMapView.js +2 -8
  14. package/build/map/ExpoGaodeMapView.js.map +1 -1
  15. package/build/map/components/FoldableMapView.d.ts +3 -2
  16. package/build/map/components/FoldableMapView.d.ts.map +1 -1
  17. package/build/map/components/FoldableMapView.js +2 -1
  18. package/build/map/components/FoldableMapView.js.map +1 -1
  19. package/build/map/components/MapUI.js +2 -1
  20. package/build/map/components/MapUI.js.map +1 -1
  21. package/build/map/components/overlays/Circle.d.ts +1 -1
  22. package/build/map/components/overlays/Circle.d.ts.map +1 -1
  23. package/build/map/components/overlays/Circle.js +2 -1
  24. package/build/map/components/overlays/Circle.js.map +1 -1
  25. package/build/map/components/overlays/Cluster.d.ts +1 -1
  26. package/build/map/components/overlays/Cluster.d.ts.map +1 -1
  27. package/build/map/components/overlays/Cluster.js +2 -1
  28. package/build/map/components/overlays/Cluster.js.map +1 -1
  29. package/build/map/components/overlays/HeatMap.d.ts +1 -1
  30. package/build/map/components/overlays/HeatMap.d.ts.map +1 -1
  31. package/build/map/components/overlays/HeatMap.js +2 -1
  32. package/build/map/components/overlays/HeatMap.js.map +1 -1
  33. package/build/map/components/overlays/Marker.d.ts +1 -1
  34. package/build/map/components/overlays/Marker.d.ts.map +1 -1
  35. package/build/map/components/overlays/Marker.js +2 -5
  36. package/build/map/components/overlays/Marker.js.map +1 -1
  37. package/build/map/components/overlays/MultiPoint.d.ts +1 -2
  38. package/build/map/components/overlays/MultiPoint.d.ts.map +1 -1
  39. package/build/map/components/overlays/MultiPoint.js +2 -1
  40. package/build/map/components/overlays/MultiPoint.js.map +1 -1
  41. package/build/map/components/overlays/Polygon.d.ts +1 -1
  42. package/build/map/components/overlays/Polygon.d.ts.map +1 -1
  43. package/build/map/components/overlays/Polygon.js +2 -1
  44. package/build/map/components/overlays/Polygon.js.map +1 -1
  45. package/build/map/components/overlays/Polyline.d.ts +1 -1
  46. package/build/map/components/overlays/Polyline.d.ts.map +1 -1
  47. package/build/map/components/overlays/Polyline.js +2 -1
  48. package/build/map/components/overlays/Polyline.js.map +1 -1
  49. package/build/map/search/ExpoGaodeMapSearchModule.d.ts +1 -1
  50. package/build/map/search/ExpoGaodeMapSearchModule.d.ts.map +1 -1
  51. package/build/map/search/ExpoGaodeMapSearchModule.js.map +1 -1
  52. package/build/map/types/common.types.d.ts +1 -1
  53. package/build/map/types/common.types.d.ts.map +1 -1
  54. package/build/map/types/common.types.js.map +1 -1
  55. package/build/map/types/map-view.types.d.ts +2 -2
  56. package/build/map/types/map-view.types.d.ts.map +1 -1
  57. package/build/map/types/map-view.types.js.map +1 -1
  58. package/build/map/utils/ErrorHandler.d.ts +4 -0
  59. package/build/map/utils/ErrorHandler.d.ts.map +1 -1
  60. package/build/map/utils/ErrorHandler.js +8 -0
  61. package/build/map/utils/ErrorHandler.js.map +1 -1
  62. package/build/map/utils/GeoUtils.d.ts +1 -1
  63. package/build/map/utils/GeoUtils.d.ts.map +1 -1
  64. package/build/map/utils/GeoUtils.js +2 -2
  65. package/build/map/utils/GeoUtils.js.map +1 -1
  66. package/build/route-geometry.d.ts.map +1 -1
  67. package/build/route-geometry.js +24 -8
  68. package/build/route-geometry.js.map +1 -1
  69. package/build/src/ExpoGaodeMapNaviView.d.ts +67 -0
  70. package/build/src/ExpoGaodeMapNaviView.d.ts.map +1 -0
  71. package/build/src/ExpoGaodeMapNaviView.js +138 -0
  72. package/build/src/ExpoGaodeMapNaviView.js.map +1 -0
  73. package/build/src/ExpoGaodeMapNavigation.types.d.ts +2 -0
  74. package/build/src/ExpoGaodeMapNavigation.types.d.ts.map +1 -0
  75. package/build/src/ExpoGaodeMapNavigation.types.js +3 -0
  76. package/build/src/ExpoGaodeMapNavigation.types.js.map +1 -0
  77. package/build/src/ExpoGaodeMapNavigationModule.d.ts +4 -0
  78. package/build/src/ExpoGaodeMapNavigationModule.d.ts.map +1 -0
  79. package/build/src/ExpoGaodeMapNavigationModule.js +27 -0
  80. package/build/src/ExpoGaodeMapNavigationModule.js.map +1 -0
  81. package/build/src/index.d.ts +47 -0
  82. package/build/src/index.d.ts.map +1 -0
  83. package/build/src/index.js +48 -0
  84. package/build/src/index.js.map +1 -0
  85. package/build/src/map/ExpoGaodeMapModule.d.ts +256 -0
  86. package/build/src/map/ExpoGaodeMapModule.d.ts.map +1 -0
  87. package/build/src/map/ExpoGaodeMapModule.js +813 -0
  88. package/build/src/map/ExpoGaodeMapModule.js.map +1 -0
  89. package/build/src/map/ExpoGaodeMapOfflineModule.d.ts +145 -0
  90. package/build/src/map/ExpoGaodeMapOfflineModule.d.ts.map +1 -0
  91. package/build/src/map/ExpoGaodeMapOfflineModule.js +24 -0
  92. package/build/src/map/ExpoGaodeMapOfflineModule.js.map +1 -0
  93. package/build/src/map/ExpoGaodeMapView.d.ts +23 -0
  94. package/build/src/map/ExpoGaodeMapView.d.ts.map +1 -0
  95. package/build/src/map/ExpoGaodeMapView.js +173 -0
  96. package/build/src/map/ExpoGaodeMapView.js.map +1 -0
  97. package/build/src/map/components/FoldableMapView.d.ts +39 -0
  98. package/build/src/map/components/FoldableMapView.d.ts.map +1 -0
  99. package/build/src/map/components/FoldableMapView.js +171 -0
  100. package/build/src/map/components/FoldableMapView.js.map +1 -0
  101. package/build/src/map/components/MapContext.d.ts +13 -0
  102. package/build/src/map/components/MapContext.d.ts.map +1 -0
  103. package/build/src/map/components/MapContext.js +18 -0
  104. package/build/src/map/components/MapContext.js.map +1 -0
  105. package/build/src/map/components/MapUI.d.ts +19 -0
  106. package/build/src/map/components/MapUI.d.ts.map +1 -0
  107. package/build/src/map/components/MapUI.js +24 -0
  108. package/build/src/map/components/MapUI.js.map +1 -0
  109. package/build/src/map/components/overlays/Circle.d.ts +13 -0
  110. package/build/src/map/components/overlays/Circle.d.ts.map +1 -0
  111. package/build/src/map/components/overlays/Circle.js +20 -0
  112. package/build/src/map/components/overlays/Circle.js.map +1 -0
  113. package/build/src/map/components/overlays/Cluster.d.ts +12 -0
  114. package/build/src/map/components/overlays/Cluster.d.ts.map +1 -0
  115. package/build/src/map/components/overlays/Cluster.js +16 -0
  116. package/build/src/map/components/overlays/Cluster.js.map +1 -0
  117. package/build/src/map/components/overlays/HeatMap.d.ts +12 -0
  118. package/build/src/map/components/overlays/HeatMap.d.ts.map +1 -0
  119. package/build/src/map/components/overlays/HeatMap.js +46 -0
  120. package/build/src/map/components/overlays/HeatMap.js.map +1 -0
  121. package/build/src/map/components/overlays/Marker.d.ts +16 -0
  122. package/build/src/map/components/overlays/Marker.d.ts.map +1 -0
  123. package/build/src/map/components/overlays/Marker.js +125 -0
  124. package/build/src/map/components/overlays/Marker.js.map +1 -0
  125. package/build/src/map/components/overlays/MultiPoint.d.ts +9 -0
  126. package/build/src/map/components/overlays/MultiPoint.d.ts.map +1 -0
  127. package/build/src/map/components/overlays/MultiPoint.js +15 -0
  128. package/build/src/map/components/overlays/MultiPoint.js.map +1 -0
  129. package/build/src/map/components/overlays/Polygon.d.ts +12 -0
  130. package/build/src/map/components/overlays/Polygon.d.ts.map +1 -0
  131. package/build/src/map/components/overlays/Polygon.js +20 -0
  132. package/build/src/map/components/overlays/Polygon.js.map +1 -0
  133. package/build/src/map/components/overlays/Polyline.d.ts +12 -0
  134. package/build/src/map/components/overlays/Polyline.d.ts.map +1 -0
  135. package/build/src/map/components/overlays/Polyline.js +20 -0
  136. package/build/src/map/components/overlays/Polyline.js.map +1 -0
  137. package/build/src/map/components/overlays/index.d.ts +8 -0
  138. package/build/src/map/components/overlays/index.d.ts.map +1 -0
  139. package/build/src/map/components/overlays/index.js +8 -0
  140. package/build/src/map/components/overlays/index.js.map +1 -0
  141. package/build/src/map/index.d.ts +35 -0
  142. package/build/src/map/index.d.ts.map +1 -0
  143. package/build/src/map/index.js +48 -0
  144. package/build/src/map/index.js.map +1 -0
  145. package/build/src/map/search/ExpoGaodeMapSearch.types.d.ts +340 -0
  146. package/build/src/map/search/ExpoGaodeMapSearch.types.d.ts.map +1 -0
  147. package/build/src/map/search/ExpoGaodeMapSearch.types.js +19 -0
  148. package/build/src/map/search/ExpoGaodeMapSearch.types.js.map +1 -0
  149. package/build/src/map/search/ExpoGaodeMapSearchModule.d.ts +74 -0
  150. package/build/src/map/search/ExpoGaodeMapSearchModule.d.ts.map +1 -0
  151. package/build/src/map/search/ExpoGaodeMapSearchModule.js +48 -0
  152. package/build/src/map/search/ExpoGaodeMapSearchModule.js.map +1 -0
  153. package/build/src/map/search/index.d.ts +156 -0
  154. package/build/src/map/search/index.d.ts.map +1 -0
  155. package/build/src/map/search/index.js +171 -0
  156. package/build/src/map/search/index.js.map +1 -0
  157. package/build/src/map/types/common.types.d.ts +199 -0
  158. package/build/src/map/types/common.types.d.ts.map +1 -0
  159. package/build/src/map/types/common.types.js +33 -0
  160. package/build/src/map/types/common.types.js.map +1 -0
  161. package/build/src/map/types/index.d.ts +13 -0
  162. package/build/src/map/types/index.d.ts.map +1 -0
  163. package/build/src/map/types/index.js +7 -0
  164. package/build/src/map/types/index.js.map +1 -0
  165. package/build/src/map/types/location.types.d.ts +358 -0
  166. package/build/src/map/types/location.types.d.ts.map +1 -0
  167. package/build/src/map/types/location.types.js +93 -0
  168. package/build/src/map/types/location.types.js.map +1 -0
  169. package/build/src/map/types/map-view.types.d.ts +340 -0
  170. package/build/src/map/types/map-view.types.d.ts.map +1 -0
  171. package/build/src/map/types/map-view.types.js +6 -0
  172. package/build/src/map/types/map-view.types.js.map +1 -0
  173. package/build/src/map/types/native-module.types.d.ts +395 -0
  174. package/build/src/map/types/native-module.types.d.ts.map +1 -0
  175. package/build/src/map/types/native-module.types.js +5 -0
  176. package/build/src/map/types/native-module.types.js.map +1 -0
  177. package/build/src/map/types/offline.types.d.ts +133 -0
  178. package/build/src/map/types/offline.types.d.ts.map +1 -0
  179. package/build/src/map/types/offline.types.js +5 -0
  180. package/build/src/map/types/offline.types.js.map +1 -0
  181. package/build/src/map/types/overlays.types.d.ts +456 -0
  182. package/build/src/map/types/overlays.types.d.ts.map +1 -0
  183. package/build/src/map/types/overlays.types.js +6 -0
  184. package/build/src/map/types/overlays.types.js.map +1 -0
  185. package/build/src/map/types/route-playback.types.d.ts +28 -0
  186. package/build/src/map/types/route-playback.types.d.ts.map +1 -0
  187. package/build/src/map/types/route-playback.types.js +2 -0
  188. package/build/src/map/types/route-playback.types.js.map +1 -0
  189. package/build/src/map/utils/ErrorHandler.d.ts +121 -0
  190. package/build/src/map/utils/ErrorHandler.d.ts.map +1 -0
  191. package/build/src/map/utils/ErrorHandler.js +470 -0
  192. package/build/src/map/utils/ErrorHandler.js.map +1 -0
  193. package/build/src/map/utils/GeoUtils.d.ts +21 -0
  194. package/build/src/map/utils/GeoUtils.d.ts.map +1 -0
  195. package/build/src/map/utils/GeoUtils.js +78 -0
  196. package/build/src/map/utils/GeoUtils.js.map +1 -0
  197. package/build/src/map/utils/OfflineMapManager.d.ts +153 -0
  198. package/build/src/map/utils/OfflineMapManager.d.ts.map +1 -0
  199. package/build/src/map/utils/OfflineMapManager.js +217 -0
  200. package/build/src/map/utils/OfflineMapManager.js.map +1 -0
  201. package/build/src/map/utils/PermissionUtils.d.ts +92 -0
  202. package/build/src/map/utils/PermissionUtils.d.ts.map +1 -0
  203. package/build/src/map/utils/PermissionUtils.js +252 -0
  204. package/build/src/map/utils/PermissionUtils.js.map +1 -0
  205. package/build/src/map/utils/PlatformDetector.d.ts +103 -0
  206. package/build/src/map/utils/PlatformDetector.d.ts.map +1 -0
  207. package/build/src/map/utils/PlatformDetector.js +178 -0
  208. package/build/src/map/utils/PlatformDetector.js.map +1 -0
  209. package/build/src/map/utils/lazyNativeViewManager.d.ts +3 -0
  210. package/build/src/map/utils/lazyNativeViewManager.d.ts.map +1 -0
  211. package/build/src/map/utils/lazyNativeViewManager.js +11 -0
  212. package/build/src/map/utils/lazyNativeViewManager.js.map +1 -0
  213. package/build/src/route-geometry.d.ts +13 -0
  214. package/build/src/route-geometry.d.ts.map +1 -0
  215. package/build/src/route-geometry.js +154 -0
  216. package/build/src/route-geometry.js.map +1 -0
  217. package/build/src/route-planning.d.ts +21 -0
  218. package/build/src/route-planning.d.ts.map +1 -0
  219. package/build/src/route-planning.js +67 -0
  220. package/build/src/route-planning.js.map +1 -0
  221. package/build/src/types/coordinates.types.d.ts +25 -0
  222. package/build/src/types/coordinates.types.d.ts.map +1 -0
  223. package/build/src/types/coordinates.types.js +6 -0
  224. package/build/src/types/coordinates.types.js.map +1 -0
  225. package/build/src/types/independent.types.d.ts +385 -0
  226. package/build/src/types/independent.types.d.ts.map +1 -0
  227. package/build/src/types/independent.types.js +2 -0
  228. package/build/src/types/independent.types.js.map +1 -0
  229. package/build/src/types/index.d.ts +6 -0
  230. package/build/src/types/index.d.ts.map +1 -0
  231. package/build/src/types/index.js +7 -0
  232. package/build/src/types/index.js.map +1 -0
  233. package/build/src/types/native-module.types.d.ts +74 -0
  234. package/build/src/types/native-module.types.d.ts.map +1 -0
  235. package/build/src/types/native-module.types.js +3 -0
  236. package/build/src/types/native-module.types.js.map +1 -0
  237. package/build/src/types/naviview.types.d.ts +562 -0
  238. package/build/src/types/naviview.types.d.ts.map +1 -0
  239. package/build/src/types/naviview.types.js +2 -0
  240. package/build/src/types/naviview.types.js.map +1 -0
  241. package/build/src/types/route.types.d.ts +414 -0
  242. package/build/src/types/route.types.d.ts.map +1 -0
  243. package/build/src/types/route.types.js +137 -0
  244. package/build/src/types/route.types.js.map +1 -0
  245. package/build/src/web-api-fallback.d.ts +5 -0
  246. package/build/src/web-api-fallback.d.ts.map +1 -0
  247. package/build/src/web-api-fallback.js +160 -0
  248. package/build/src/web-api-fallback.js.map +1 -0
  249. package/build/src/web-route-following.d.ts +3 -0
  250. package/build/src/web-route-following.d.ts.map +1 -0
  251. package/build/src/web-route-following.js +178 -0
  252. package/build/src/web-route-following.js.map +1 -0
  253. package/build/types/native-module.types.d.ts +2 -2
  254. package/build/types/native-module.types.d.ts.map +1 -1
  255. package/build/types/native-module.types.js.map +1 -1
  256. package/build/types/naviview.types.d.ts +1 -1
  257. package/build/types/naviview.types.d.ts.map +1 -1
  258. package/build/types/naviview.types.js.map +1 -1
  259. package/build/web-api-fallback.d.ts.map +1 -1
  260. package/build/web-api-fallback.js +0 -1
  261. package/build/web-api-fallback.js.map +1 -1
  262. package/ios/map/ExpoGaodeMapView.swift +145 -3
  263. package/ios/map/cpp/ClusterEngine.cpp +4 -14
  264. package/ios/map/cpp/ClusterEngine.hpp +1 -12
  265. package/ios/map/cpp/ClusterTypes.hpp +18 -0
  266. package/ios/map/cpp/ColorParser.cpp +22 -3
  267. package/ios/map/cpp/GeometryEngine.cpp +1 -1
  268. package/ios/map/cpp/QuadTree.hpp +1 -1
  269. package/ios/map/managers/UIManager.swift +3 -0
  270. package/package.json +16 -8
  271. package/plugin/build/withGaodeMap.js +19 -14
  272. package/shared/cpp/ClusterEngine.cpp +4 -14
  273. package/shared/cpp/ClusterEngine.hpp +1 -12
  274. package/shared/cpp/ClusterTypes.hpp +18 -0
  275. package/shared/cpp/ColorParser.cpp +22 -3
  276. package/shared/cpp/GeometryEngine.cpp +1 -1
  277. package/shared/cpp/QuadTree.hpp +1 -1
@@ -0,0 +1 @@
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,EACV,WAAW,EACX,yBAAyB,EAU1B,MAAM,SAAS,CAAC;AAuCjB;;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;IAC9F;;;;;;OAMG;IACH,kCAAkC,EAAE,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;OAEG;IACH,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;OAEG;IACH,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrE;AAuCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,oBAAoB,2GA6H/B,CAAC;AAIH,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Image, PermissionsAndroid, Platform, StatusBar, } from 'react-native';
4
+ import { createLazyNativeViewManager } from './map/utils/lazyNativeViewManager';
5
+ function normalizeNaviImageSource(source) {
6
+ if (source == null) {
7
+ return undefined;
8
+ }
9
+ if (typeof source === 'string') {
10
+ return source;
11
+ }
12
+ return Image.resolveAssetSource(source)?.uri;
13
+ }
14
+ async function ensureAndroidNavigationNotificationPermission(enabled) {
15
+ if (!enabled || Platform.OS !== 'android' || Platform.Version < 33) {
16
+ return;
17
+ }
18
+ try {
19
+ const permission = PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS;
20
+ const granted = await PermissionsAndroid.check(permission);
21
+ if (!granted) {
22
+ await PermissionsAndroid.request(permission);
23
+ }
24
+ }
25
+ catch (error) {
26
+ console.warn('[expo-gaode-map-navigation] Failed to request POST_NOTIFICATIONS permission automatically.', error);
27
+ }
28
+ }
29
+ const getNativeView = createLazyNativeViewManager('ExpoGaodeMapNaviView');
30
+ /**
31
+ * 高德导航视图组件
32
+ *
33
+ * 使用高德官方的导航界面,提供完整的导航体验,包括:
34
+ * - 路线规划和显示
35
+ * - 实时导航信息(距离、时间、道路名称)
36
+ * - 转向箭头和提示
37
+ * - 路况信息
38
+ * - 摄像头提示
39
+ * - 语音播报
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * import { ExpoGaodeMapNaviView } from 'expo-gaode-map-navigation';
44
+ *
45
+ * function NavigationScreen() {
46
+ * return (
47
+ * <ExpoGaodeMapNaviView
48
+ * style={{ flex: 1 }}
49
+ * naviType={0} // GPS 导航
50
+ * showCamera={true}
51
+ * enableVoice={true}
52
+ * onNaviInfoUpdate={(e) => {
53
+ * console.log('剩余距离:', e.nativeEvent.pathRetainDistance);
54
+ * }}
55
+ * onArrive={() => {
56
+ * console.log('到达目的地!');
57
+ * }}
58
+ * />
59
+ * );
60
+ * }
61
+ * ```
62
+ */
63
+ export const ExpoGaodeMapNaviView = React.forwardRef((props, ref) => {
64
+ const nativeRef = React.useRef(null);
65
+ const hasRequestedAndroidNotificationPermissionRef = React.useRef(false);
66
+ const NativeView = React.useMemo(() => getNativeView(), []);
67
+ const { onNaviInfoUpdate, onNaviStart, onNaviEnd, onArrive, onReCalculate, onPlayVoice, onNaviVisualStateChange, onLaneInfoUpdate, onTrafficStatusesUpdate, isNightMode, mapViewModeType, carImage, fourCornersImage, carCompassImage, startPointImage, wayPointImage, endPointImage, cameraImage, androidStatusBarPaddingTop, ...restProps } = props;
68
+ const resolvedAndroidStatusBarPaddingTop = Platform.OS === 'android' &&
69
+ androidStatusBarPaddingTop == null &&
70
+ props.showUIElements !== false &&
71
+ props.hideNativeTopInfoLayout !== true
72
+ ? (StatusBar.currentHeight ?? 0)
73
+ : androidStatusBarPaddingTop;
74
+ const resolvedCarImage = normalizeNaviImageSource(carImage);
75
+ const resolvedFourCornersImage = normalizeNaviImageSource(fourCornersImage);
76
+ const resolvedCarCompassImage = normalizeNaviImageSource(carCompassImage);
77
+ const resolvedStartPointImage = normalizeNaviImageSource(startPointImage);
78
+ const resolvedWayPointImage = normalizeNaviImageSource(wayPointImage);
79
+ const resolvedEndPointImage = normalizeNaviImageSource(endPointImage);
80
+ const resolvedCameraImage = normalizeNaviImageSource(cameraImage);
81
+ const resolvedMapViewModeType = mapViewModeType ?? (isNightMode == null ? undefined : (isNightMode ? 1 : 0));
82
+ const platformSpecificImageProps = Platform.OS === 'android'
83
+ ? {
84
+ fourCornersImage: resolvedFourCornersImage,
85
+ }
86
+ : {
87
+ carCompassImage: resolvedCarCompassImage,
88
+ cameraImage: resolvedCameraImage,
89
+ };
90
+ React.useEffect(() => {
91
+ if (Platform.OS !== 'android') {
92
+ return;
93
+ }
94
+ if (!props.androidBackgroundNavigationNotificationEnabled) {
95
+ hasRequestedAndroidNotificationPermissionRef.current = false;
96
+ return;
97
+ }
98
+ if (hasRequestedAndroidNotificationPermissionRef.current) {
99
+ return;
100
+ }
101
+ hasRequestedAndroidNotificationPermissionRef.current = true;
102
+ void ensureAndroidNavigationNotificationPermission(true);
103
+ }, [props.androidBackgroundNavigationNotificationEnabled]);
104
+ // 创建 API 引用
105
+ const apiRef = React.useMemo(() => ({
106
+ startNavigation: async (start, end, type) => {
107
+ if (!nativeRef.current)
108
+ throw new Error('ExpoGaodeMapNaviView not initialized');
109
+ // 将对象解构为单独的参数传递给原生层
110
+ const startLat = start?.latitude ?? 0;
111
+ const startLng = start?.longitude ?? 0;
112
+ const endLat = end.latitude;
113
+ const endLng = end.longitude;
114
+ return nativeRef.current.startNavigation(startLat, startLng, endLat, endLng);
115
+ },
116
+ startNavigationWithIndependentPath: async (token, options) => {
117
+ if (!nativeRef.current)
118
+ throw new Error('ExpoGaodeMapNaviView not initialized');
119
+ return nativeRef.current.startNavigationWithIndependentPath(token, options?.routeId, options?.routeIndex, options?.naviType);
120
+ },
121
+ stopNavigation: async () => {
122
+ if (!nativeRef.current)
123
+ throw new Error('ExpoGaodeMapNaviView not initialized');
124
+ return nativeRef.current.stopNavigation();
125
+ },
126
+ playCustomTTS: async (text, forcePlay = false) => {
127
+ if (!nativeRef.current)
128
+ throw new Error('ExpoGaodeMapNaviView not initialized');
129
+ return nativeRef.current.playCustomTTS(text, forcePlay);
130
+ },
131
+ }), []);
132
+ // 暴露 API 给外部 ref
133
+ React.useImperativeHandle(ref, () => apiRef, [apiRef]);
134
+ return (_jsx(NativeView, { ref: nativeRef, ...restProps, androidStatusBarPaddingTop: resolvedAndroidStatusBarPaddingTop, mapViewModeType: resolvedMapViewModeType, carImage: resolvedCarImage, startPointImage: resolvedStartPointImage, wayPointImage: resolvedWayPointImage, endPointImage: resolvedEndPointImage, ...platformSpecificImageProps, onNavigationInfoUpdate: onNaviInfoUpdate, onNavigationStarted: onNaviStart, onNavigationEnded: onNaviEnd, onArriveDestination: onArrive, onRouteRecalculate: onReCalculate, onNavigationText: onPlayVoice, onNavigationVisualStateUpdate: onNaviVisualStateChange, onLaneInfoUpdate: onLaneInfoUpdate, onTrafficStatusesUpdate: onTrafficStatusesUpdate }));
135
+ });
136
+ ExpoGaodeMapNaviView.displayName = 'ExpoGaodeMapNaviView';
137
+ export default ExpoGaodeMapNaviView;
138
+ //# sourceMappingURL=ExpoGaodeMapNaviView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoGaodeMapNaviView.js","sourceRoot":"","sources":["../../src/ExpoGaodeMapNaviView.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport type {\n Coordinates,\n ExpoGaodeMapNaviViewProps,\n NaviArriveEvent,\n NaviEndEvent,\n NaviInfoUpdateEvent,\n NaviLaneInfoEvent,\n NaviStartEvent,\n NaviTrafficStatusesEvent,\n NaviVisualStateEvent,\n PlayVoiceEvent,\n ReCalculateEvent,\n} from './types';\nimport {\n Image,\n PermissionsAndroid,\n Platform,\n StatusBar,\n type NativeSyntheticEvent,\n} from 'react-native';\nimport { createLazyNativeViewManager } from './map/utils/lazyNativeViewManager';\n\nfunction normalizeNaviImageSource(source?: ExpoGaodeMapNaviViewProps['carImage']): string | undefined {\n if (source == null) {\n return undefined;\n }\n if (typeof source === 'string') {\n return source;\n }\n return Image.resolveAssetSource(source)?.uri;\n}\n\nasync function ensureAndroidNavigationNotificationPermission(enabled: boolean): Promise<void> {\n if (!enabled || Platform.OS !== 'android' || Platform.Version < 33) {\n return;\n }\n\n try {\n const permission = PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS;\n const granted = await PermissionsAndroid.check(permission);\n if (!granted) {\n await PermissionsAndroid.request(permission);\n }\n } catch (error) {\n console.warn(\n '[expo-gaode-map-navigation] Failed to request POST_NOTIFICATIONS permission automatically.',\n error\n );\n }\n}\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 * - 依赖当前 ExpoGaodeMapNaviView 实例\n * - 适合“路线选择页 -> 进入嵌入式导航页”这类页面内流程\n * - 若不依赖嵌入式导航视图,可改用模块级 startNaviWithIndependentPath(...)\n */\n startNavigationWithIndependentPath: (\n token: number,\n options?: {\n routeId?: number;\n routeIndex?: number;\n naviType?: number;\n }\n ) => Promise<void>;\n \n /**\n * 停止导航\n */\n stopNavigation: () => Promise<void>;\n\n /**\n * 播放自定义 TTS\n */\n playCustomTTS: (text: string, forcePlay?: boolean) => Promise<void>;\n}\n\ninterface NativeExpoGaodeMapNaviViewRef {\n startNavigation: (\n startLatitude: number,\n startLongitude: number,\n endLatitude: number,\n endLongitude: number\n ) => Promise<void>;\n startNavigationWithIndependentPath: (\n token: number,\n routeId?: number,\n routeIndex?: number,\n naviType?: number\n ) => Promise<void>;\n stopNavigation: () => Promise<void>;\n playCustomTTS: (text: string, forcePlay?: boolean) => Promise<void>;\n}\n\ninterface NativeExpoGaodeMapNaviViewProps\n extends ExpoGaodeMapNaviViewProps {\n ref?: React.Ref<NativeExpoGaodeMapNaviViewRef>;\n onNavigationInfoUpdate?: (event: NativeSyntheticEvent<NaviInfoUpdateEvent>) => void;\n onNavigationStarted?: (event: NativeSyntheticEvent<NaviStartEvent>) => void;\n onNavigationEnded?: (event: NativeSyntheticEvent<NaviEndEvent>) => void;\n onArriveDestination?: (event: NativeSyntheticEvent<NaviArriveEvent>) => void;\n onRouteRecalculate?: (event: NativeSyntheticEvent<ReCalculateEvent>) => void;\n onNavigationText?: (event: NativeSyntheticEvent<PlayVoiceEvent>) => void;\n onNavigationVisualStateUpdate?: (event: NativeSyntheticEvent<NaviVisualStateEvent>) => void;\n onLaneInfoUpdate?: (event: NativeSyntheticEvent<NaviLaneInfoEvent>) => void;\n // Unified traffic-segment event used by the library traffic bar and any\n // consumer that wants to render a fully custom traffic beam.\n onTrafficStatusesUpdate?: (event: NativeSyntheticEvent<NaviTrafficStatusesEvent>) => void;\n}\n\nconst getNativeView = createLazyNativeViewManager<\n NativeExpoGaodeMapNaviViewProps\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 hasRequestedAndroidNotificationPermissionRef = React.useRef(false);\n const NativeView = React.useMemo(() => getNativeView(), []);\n const {\n onNaviInfoUpdate,\n onNaviStart,\n onNaviEnd,\n onArrive,\n onReCalculate,\n onPlayVoice,\n onNaviVisualStateChange,\n onLaneInfoUpdate,\n onTrafficStatusesUpdate,\n isNightMode,\n mapViewModeType,\n carImage,\n fourCornersImage,\n carCompassImage,\n startPointImage,\n wayPointImage,\n endPointImage,\n cameraImage,\n androidStatusBarPaddingTop,\n ...restProps\n } = props;\n\n const resolvedAndroidStatusBarPaddingTop =\n Platform.OS === 'android' &&\n androidStatusBarPaddingTop == null &&\n props.showUIElements !== false &&\n props.hideNativeTopInfoLayout !== true\n ? (StatusBar.currentHeight ?? 0)\n : androidStatusBarPaddingTop;\n const resolvedCarImage = normalizeNaviImageSource(carImage);\n const resolvedFourCornersImage = normalizeNaviImageSource(fourCornersImage);\n const resolvedCarCompassImage = normalizeNaviImageSource(carCompassImage);\n const resolvedStartPointImage = normalizeNaviImageSource(startPointImage);\n const resolvedWayPointImage = normalizeNaviImageSource(wayPointImage);\n const resolvedEndPointImage = normalizeNaviImageSource(endPointImage);\n const resolvedCameraImage = normalizeNaviImageSource(cameraImage);\n const resolvedMapViewModeType = mapViewModeType ?? (isNightMode == null ? undefined : (isNightMode ? 1 : 0));\n const platformSpecificImageProps =\n Platform.OS === 'android'\n ? {\n fourCornersImage: resolvedFourCornersImage,\n }\n : {\n carCompassImage: resolvedCarCompassImage,\n cameraImage: resolvedCameraImage,\n };\n\n React.useEffect(() => {\n if (Platform.OS !== 'android') {\n return;\n }\n\n if (!props.androidBackgroundNavigationNotificationEnabled) {\n hasRequestedAndroidNotificationPermissionRef.current = false;\n return;\n }\n\n if (hasRequestedAndroidNotificationPermissionRef.current) {\n return;\n }\n\n hasRequestedAndroidNotificationPermissionRef.current = true;\n void ensureAndroidNavigationNotificationPermission(true);\n }, [props.androidBackgroundNavigationNotificationEnabled]);\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 startNavigationWithIndependentPath: async (token, options) => {\n if (!nativeRef.current) throw new Error('ExpoGaodeMapNaviView not initialized');\n return nativeRef.current.startNavigationWithIndependentPath(\n token,\n options?.routeId,\n options?.routeIndex,\n options?.naviType\n );\n },\n stopNavigation: async () => {\n if (!nativeRef.current) throw new Error('ExpoGaodeMapNaviView not initialized');\n return nativeRef.current.stopNavigation();\n },\n playCustomTTS: async (text, forcePlay = false) => {\n if (!nativeRef.current) throw new Error('ExpoGaodeMapNaviView not initialized');\n return nativeRef.current.playCustomTTS(text, forcePlay);\n },\n }), []);\n \n // 暴露 API 给外部 ref\n React.useImperativeHandle(ref, () => apiRef, [apiRef]);\n \n return (\n <NativeView\n ref={nativeRef}\n {...restProps}\n androidStatusBarPaddingTop={resolvedAndroidStatusBarPaddingTop}\n mapViewModeType={resolvedMapViewModeType}\n carImage={resolvedCarImage}\n startPointImage={resolvedStartPointImage}\n wayPointImage={resolvedWayPointImage}\n endPointImage={resolvedEndPointImage}\n {...platformSpecificImageProps}\n onNavigationInfoUpdate={onNaviInfoUpdate}\n onNavigationStarted={onNaviStart}\n onNavigationEnded={onNaviEnd}\n onArriveDestination={onArrive}\n onRouteRecalculate={onReCalculate}\n onNavigationText={onPlayVoice}\n onNavigationVisualStateUpdate={onNaviVisualStateChange}\n onLaneInfoUpdate={onLaneInfoUpdate}\n onTrafficStatusesUpdate={onTrafficStatusesUpdate}\n />\n );\n});\n\nExpoGaodeMapNaviView.displayName = 'ExpoGaodeMapNaviView';\n\nexport default ExpoGaodeMapNaviView;\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ //# sourceMappingURL=ExpoGaodeMapNavigation.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoGaodeMapNavigation.types.d.ts","sourceRoot":"","sources":["../../src/ExpoGaodeMapNavigation.types.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ // 重新导出所有类型,保持向后兼容
2
+ export * from './types';
3
+ //# sourceMappingURL=ExpoGaodeMapNavigation.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoGaodeMapNavigation.types.js","sourceRoot":"","sources":["../../src/ExpoGaodeMapNavigation.types.ts"],"names":[],"mappings":"AACA,kBAAkB;AAClB,cAAc,SAAS,CAAC","sourcesContent":["\n// 重新导出所有类型,保持向后兼容\nexport * from './types';"]}
@@ -0,0 +1,4 @@
1
+ import { ExpoGaodeMapNavigationModule as ExpoGaodeMapNavigationModuleType } from './types/native-module.types';
2
+ declare const _default: ExpoGaodeMapNavigationModuleType;
3
+ export default _default;
4
+ //# sourceMappingURL=ExpoGaodeMapNavigationModule.d.ts.map
@@ -0,0 +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;;AA2B/G,wBAIG"}
@@ -0,0 +1,27 @@
1
+ import { requireNativeModule } from 'expo-modules-core';
2
+ import { ExpoGaodeMapNavigationModule as ExpoGaodeMapNavigationModuleType } from './types/native-module.types';
3
+ /**
4
+ * 高德地图导航模块
5
+ *
6
+ * 提供路径规划功能,包括驾车、步行、骑行、公交、货车等多种出行方式
7
+ */
8
+ let nativeModuleCache = null;
9
+ function getNativeModule() {
10
+ if (!nativeModuleCache) {
11
+ nativeModuleCache = requireNativeModule('ExpoGaodeMapNavigation');
12
+ }
13
+ return nativeModuleCache;
14
+ }
15
+ function getBoundNativeValue(module, prop) {
16
+ const value = Reflect.get(module, prop, module);
17
+ if (typeof value === 'function') {
18
+ return (...args) => value.apply(module, args);
19
+ }
20
+ return value;
21
+ }
22
+ export default new Proxy({}, {
23
+ get(_target, prop) {
24
+ return getBoundNativeValue(getNativeModule(), prop);
25
+ },
26
+ });
27
+ //# sourceMappingURL=ExpoGaodeMapNavigationModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoGaodeMapNavigationModule.js","sourceRoot":"","sources":["../../src/ExpoGaodeMapNavigationModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,4BAA4B,IAAI,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/G;;;;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"]}
@@ -0,0 +1,47 @@
1
+ import ExpoGaodeMapNavigationModule from './ExpoGaodeMapNavigationModule';
2
+ import { ExpoGaodeMapNaviView, type ExpoGaodeMapNaviViewRef } from './ExpoGaodeMapNaviView';
3
+ export * from './map';
4
+ import { DriveStrategy, RouteType, WalkStrategy, RideStrategy, TruckSize, TravelStrategy } from './types';
5
+ import { calculateRoute, calculateDriveRoute, calculateWalkRoute, calculateRideRoute, calculateEBikeRoute, calculateTransitRoute, calculateTruckRoute, calculateMotorcycleRoute, initNavigation, destroyAllCalculators, independentDriveRoute, independentTruckRoute, independentWalkRoute, independentRideRoute, independentMotorcycleRoute, selectIndependentRoute, startNaviWithIndependentPath, openOfficialNaviPage, clearIndependentRoute } from './route-planning';
6
+ import { buildAnchorWaypointsFromWebRoute } from './route-geometry';
7
+ import { followWebPlannedRoute } from './web-route-following';
8
+ export { calculateRoute, calculateDriveRoute, calculateWalkRoute, calculateRideRoute, calculateEBikeRoute, calculateTransitRoute, calculateTruckRoute, calculateMotorcycleRoute, initNavigation, destroyAllCalculators, independentDriveRoute, independentTruckRoute, independentWalkRoute, independentRideRoute, independentMotorcycleRoute, selectIndependentRoute, startNaviWithIndependentPath, openOfficialNaviPage, clearIndependentRoute, };
9
+ export { buildAnchorWaypointsFromWebRoute };
10
+ export { followWebPlannedRoute };
11
+ export { ExpoGaodeMapNavigationModule };
12
+ export { ExpoGaodeMapNaviView, type ExpoGaodeMapNaviViewRef };
13
+ /**
14
+ * @deprecated 请使用 `ExpoGaodeMapNaviView`
15
+ */
16
+ export declare const NaviView: import("react").ForwardRefExoticComponent<import("./types").ExpoGaodeMapNaviViewProps & import("react").RefAttributes<ExpoGaodeMapNaviViewRef>>;
17
+ /**
18
+ * @deprecated 请使用 `ExpoGaodeMapNaviViewRef`
19
+ */
20
+ export type NaviViewRef = ExpoGaodeMapNaviViewRef;
21
+ export type { NaviPoint, RouteOptions, DriveRouteOptions, WalkRouteOptions, RideRouteOptions, EBikeRouteOptions, TransitRouteOptions, TruckRouteOptions, RouteResult, DriveRouteResult, IndependentRouteResult, IndependentDriveRouteOptions, IndependentTruckRouteOptions, IndependentWalkRouteOptions, IndependentRideRouteOptions, SelectIndependentRouteOptions, StartNaviWithIndependentPathOptions, OfficialNaviPageOptions, ClearIndependentRouteOptions, MotorcycleRouteOptions, IndependentMotorcycleRouteOptions, BuildAnchorWaypointsOptions, FollowWebPlannedRouteOptions, FollowWebPlannedRouteResult, FollowWebPlannedRouteCandidate, WebPlannedRoute, NaviInfoUpdateEvent, NaviLaneInfoEvent, NaviTrafficStatusesEvent, NaviVisualStateEvent, ExpoGaodeMapNaviViewProps, } from './types';
22
+ export { RouteType, DriveStrategy, WalkStrategy, RideStrategy, TruckSize, TravelStrategy, };
23
+ declare const ExpoGaodeMapNavigation: {
24
+ initNavigation: () => void;
25
+ destroyAllCalculators: () => void;
26
+ calculateRoute: typeof calculateRoute;
27
+ calculateDriveRoute: typeof calculateDriveRoute;
28
+ calculateWalkRoute: (options: import("./types").WalkRouteOptions) => Promise<import("./types").RouteResult>;
29
+ calculateRideRoute: (options: import("./types").RideRouteOptions) => Promise<import("./types").RouteResult>;
30
+ calculateEBikeRoute: (options: import("./types").EBikeRouteOptions) => Promise<import("./types").RouteResult>;
31
+ calculateTransitRoute: typeof calculateTransitRoute;
32
+ calculateTruckRoute: (options: import("./types").TruckRouteOptions) => Promise<import("./types").DriveRouteResult>;
33
+ calculateMotorcycleRoute: (options: import("./types").MotorcycleRouteOptions) => Promise<import("./types").DriveRouteResult>;
34
+ buildAnchorWaypointsFromWebRoute: typeof buildAnchorWaypointsFromWebRoute;
35
+ followWebPlannedRoute: typeof followWebPlannedRoute;
36
+ independentDriveRoute: (options: import("./types").IndependentDriveRouteOptions) => Promise<import("./types").IndependentRouteResult>;
37
+ independentTruckRoute: (options: import("./types").IndependentTruckRouteOptions) => Promise<import("./types").IndependentRouteResult>;
38
+ independentWalkRoute: (options: import("./types").IndependentWalkRouteOptions) => Promise<import("./types").IndependentRouteResult>;
39
+ independentRideRoute: (options: import("./types").IndependentRideRouteOptions) => Promise<import("./types").IndependentRouteResult>;
40
+ independentMotorcycleRoute: (options: import("./types").IndependentMotorcycleRouteOptions) => Promise<import("./types").IndependentRouteResult>;
41
+ selectIndependentRoute: (options: import("./types").SelectIndependentRouteOptions) => Promise<boolean>;
42
+ startNaviWithIndependentPath: (options: import("./types").StartNaviWithIndependentPathOptions) => Promise<boolean>;
43
+ openOfficialNaviPage: (options: import("./types").OfficialNaviPageOptions) => Promise<boolean>;
44
+ clearIndependentRoute: (options: import("./types").ClearIndependentRouteOptions) => Promise<boolean>;
45
+ };
46
+ export default ExpoGaodeMapNavigation;
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,oBAAoB,EACpB,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,GACtB,CAAC;AACF,OAAO,EAAE,gCAAgC,EAAE,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,OAAO,EAAE,4BAA4B,EAAE,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,KAAK,uBAAuB,EAAE,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,QAAQ,iJAAuB,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAGlD,YAAY,EACV,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,6BAA6B,EAC7B,mCAAmC,EACnC,uBAAuB,EACvB,4BAA4B,EAC5B,sBAAsB,EACtB,iCAAiC,EACjC,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,8BAA8B,EAC9B,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,cAAc,GACf,CAAC;AAGF,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;CA6B3B,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import ExpoGaodeMapNavigationModule from './ExpoGaodeMapNavigationModule';
2
+ import { ExpoGaodeMapNaviView, } from './ExpoGaodeMapNaviView';
3
+ export * from './map';
4
+ import { DriveStrategy, RouteType, WalkStrategy, RideStrategy, TruckSize, TravelStrategy, } from './types';
5
+ import { calculateRoute, calculateDriveRoute, calculateWalkRoute, calculateRideRoute, calculateEBikeRoute, calculateTransitRoute, calculateTruckRoute, calculateMotorcycleRoute, initNavigation, destroyAllCalculators, independentDriveRoute, independentTruckRoute, independentWalkRoute, independentRideRoute, independentMotorcycleRoute, selectIndependentRoute, startNaviWithIndependentPath, openOfficialNaviPage, clearIndependentRoute, } from './route-planning';
6
+ import { buildAnchorWaypointsFromWebRoute } from './route-geometry';
7
+ import { followWebPlannedRoute, } from './web-route-following';
8
+ export { calculateRoute, calculateDriveRoute, calculateWalkRoute, calculateRideRoute, calculateEBikeRoute, calculateTransitRoute, calculateTruckRoute, calculateMotorcycleRoute, initNavigation, destroyAllCalculators, independentDriveRoute, independentTruckRoute, independentWalkRoute, independentRideRoute, independentMotorcycleRoute, selectIndependentRoute, startNaviWithIndependentPath, openOfficialNaviPage, clearIndependentRoute, };
9
+ export { buildAnchorWaypointsFromWebRoute };
10
+ export { followWebPlannedRoute };
11
+ export { ExpoGaodeMapNavigationModule };
12
+ // 导出官方导航界面组件
13
+ export { ExpoGaodeMapNaviView };
14
+ /**
15
+ * @deprecated 请使用 `ExpoGaodeMapNaviView`
16
+ */
17
+ export const NaviView = ExpoGaodeMapNaviView;
18
+ export { RouteType, DriveStrategy, WalkStrategy, RideStrategy, TruckSize, TravelStrategy, };
19
+ // 默认导出保留为兼容层,方便老代码一次性挂载整个导航 API。
20
+ const ExpoGaodeMapNavigation = {
21
+ // 初始化
22
+ initNavigation,
23
+ destroyAllCalculators,
24
+ // 路径规划
25
+ calculateRoute,
26
+ calculateDriveRoute,
27
+ calculateWalkRoute,
28
+ calculateRideRoute,
29
+ calculateEBikeRoute,
30
+ calculateTransitRoute,
31
+ calculateTruckRoute,
32
+ calculateMotorcycleRoute,
33
+ buildAnchorWaypointsFromWebRoute,
34
+ followWebPlannedRoute,
35
+ // 独立路径规划
36
+ independentDriveRoute,
37
+ independentTruckRoute,
38
+ independentWalkRoute,
39
+ independentRideRoute,
40
+ independentMotorcycleRoute,
41
+ // 独立路径组操作
42
+ selectIndependentRoute,
43
+ startNaviWithIndependentPath,
44
+ openOfficialNaviPage,
45
+ clearIndependentRoute,
46
+ };
47
+ export default ExpoGaodeMapNavigation;
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,oBAAoB,GAErB,MAAM,wBAAwB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,OAAO,EACL,aAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,GACtB,CAAC;AACF,OAAO,EAAE,gCAAgC,EAAE,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,OAAO,EAAE,4BAA4B,EAAE,CAAC;AAExC,aAAa;AACb,OAAO,EAAE,oBAAoB,EAAgC,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,oBAAoB,CAAC;AA0C7C,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,cAAc,GACf,CAAC;AAEF,iCAAiC;AACjC,MAAM,sBAAsB,GAAG;IAC7B,MAAM;IACN,cAAc;IACd,qBAAqB;IAErB,OAAO;IACP,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,qBAAqB;IACrB,mBAAmB;IACnB,wBAAwB;IACxB,gCAAgC;IAChC,qBAAqB;IAErB,SAAS;IACT,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,0BAA0B;IAE1B,UAAU;IACV,sBAAsB;IACtB,4BAA4B;IAC5B,oBAAoB;IACpB,qBAAqB;CACtB,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["import ExpoGaodeMapNavigationModule from './ExpoGaodeMapNavigationModule';\nimport {\n ExpoGaodeMapNaviView,\n type ExpoGaodeMapNaviViewRef,\n} from './ExpoGaodeMapNaviView';\nexport * from './map';\nimport {\n DriveStrategy,\n RouteType,\n WalkStrategy,\n RideStrategy,\n TruckSize,\n TravelStrategy,\n} from './types';\nimport {\n calculateRoute,\n calculateDriveRoute,\n calculateWalkRoute,\n calculateRideRoute,\n calculateEBikeRoute,\n calculateTransitRoute,\n calculateTruckRoute,\n calculateMotorcycleRoute,\n initNavigation,\n destroyAllCalculators,\n independentDriveRoute,\n independentTruckRoute,\n independentWalkRoute,\n independentRideRoute,\n independentMotorcycleRoute,\n selectIndependentRoute,\n startNaviWithIndependentPath,\n openOfficialNaviPage,\n clearIndependentRoute,\n} from './route-planning';\nimport { buildAnchorWaypointsFromWebRoute } from './route-geometry';\nimport {\n followWebPlannedRoute,\n} from './web-route-following';\n\nexport {\n calculateRoute,\n calculateDriveRoute,\n calculateWalkRoute,\n calculateRideRoute,\n calculateEBikeRoute,\n calculateTransitRoute,\n calculateTruckRoute,\n calculateMotorcycleRoute,\n initNavigation,\n destroyAllCalculators,\n independentDriveRoute,\n independentTruckRoute,\n independentWalkRoute,\n independentRideRoute,\n independentMotorcycleRoute,\n selectIndependentRoute,\n startNaviWithIndependentPath,\n openOfficialNaviPage,\n clearIndependentRoute,\n};\nexport { buildAnchorWaypointsFromWebRoute };\nexport { followWebPlannedRoute };\n\nexport { ExpoGaodeMapNavigationModule };\n\n// 导出官方导航界面组件\nexport { ExpoGaodeMapNaviView, type ExpoGaodeMapNaviViewRef };\n\n/**\n * @deprecated 请使用 `ExpoGaodeMapNaviView`\n */\nexport const NaviView = ExpoGaodeMapNaviView;\n\n/**\n * @deprecated 请使用 `ExpoGaodeMapNaviViewRef`\n */\nexport type NaviViewRef = ExpoGaodeMapNaviViewRef;\n\n// 导出导航相关类型与枚举(Coordinates 从 map 模块导出)\nexport type {\n NaviPoint,\n RouteOptions,\n DriveRouteOptions,\n WalkRouteOptions,\n RideRouteOptions,\n EBikeRouteOptions,\n TransitRouteOptions,\n TruckRouteOptions,\n RouteResult,\n DriveRouteResult,\n IndependentRouteResult,\n IndependentDriveRouteOptions,\n IndependentTruckRouteOptions,\n IndependentWalkRouteOptions,\n IndependentRideRouteOptions,\n SelectIndependentRouteOptions,\n StartNaviWithIndependentPathOptions,\n OfficialNaviPageOptions,\n ClearIndependentRouteOptions,\n MotorcycleRouteOptions,\n IndependentMotorcycleRouteOptions,\n BuildAnchorWaypointsOptions,\n FollowWebPlannedRouteOptions,\n FollowWebPlannedRouteResult,\n FollowWebPlannedRouteCandidate,\n WebPlannedRoute,\n NaviInfoUpdateEvent,\n NaviLaneInfoEvent,\n NaviTrafficStatusesEvent,\n NaviVisualStateEvent,\n ExpoGaodeMapNaviViewProps,\n} from './types';\n\nexport {\n RouteType,\n DriveStrategy,\n WalkStrategy,\n RideStrategy,\n TruckSize,\n TravelStrategy,\n};\n\n// 默认导出保留为兼容层,方便老代码一次性挂载整个导航 API。\nconst ExpoGaodeMapNavigation = {\n // 初始化\n initNavigation,\n destroyAllCalculators,\n\n // 路径规划\n calculateRoute,\n calculateDriveRoute,\n calculateWalkRoute,\n calculateRideRoute,\n calculateEBikeRoute,\n calculateTransitRoute,\n calculateTruckRoute,\n calculateMotorcycleRoute,\n buildAnchorWaypointsFromWebRoute,\n followWebPlannedRoute,\n\n // 独立路径规划\n independentDriveRoute,\n independentTruckRoute,\n independentWalkRoute,\n independentRideRoute,\n independentMotorcycleRoute,\n\n // 独立路径组操作\n selectIndependentRoute,\n startNaviWithIndependentPath,\n openOfficialNaviPage,\n clearIndependentRoute,\n};\n\nexport default ExpoGaodeMapNavigation;\n"]}
@@ -0,0 +1,256 @@
1
+ import { LatLng, Coordinates, ReGeocode, LocationListener, LatLngPoint, CoordinateType } from './types';
2
+ import type { ExpoGaodeMapModule as NativeExpoGaodeMapModule } from './types/native-module.types';
3
+ import { PrivacyConfig, PrivacyStatus, SDKConfig, PermissionStatus } from './types/common.types';
4
+ declare const helperMethods: {
5
+ /**
6
+ * 初始化 SDK,并缓存配置(包含 webKey)
7
+ * 注意:允许不提供任何 API Key,因为原生端可能已通过 Config Plugin 配置
8
+ */
9
+ initSDK(config: SDKConfig): void;
10
+ isSDKInitialized(): boolean;
11
+ /**
12
+ * 设置当前隐私协议版本
13
+ * 当版本号变化时,之前的同意状态会失效
14
+ */
15
+ setPrivacyVersion(version: string): void;
16
+ /**
17
+ * 清空已持久化的隐私同意状态
18
+ */
19
+ resetPrivacyConsent(): void;
20
+ /**
21
+ * 一次性同步完整的隐私状态
22
+ * 推荐业务层只调用这个方法
23
+ */
24
+ setPrivacyConfig(config: PrivacyConfig): void;
25
+ getPrivacyStatus(): PrivacyStatus;
26
+ setLoadWorldVectorMap(enabled: boolean): void;
27
+ getVersion(): string;
28
+ start(): void;
29
+ stop(): void;
30
+ isStarted(): Promise<boolean>;
31
+ getCurrentLocation(): Promise<Coordinates | ReGeocode>;
32
+ coordinateConvert(coordinate: LatLngPoint, type: CoordinateType): Promise<LatLng>;
33
+ setLocatingWithReGeocode(isReGeocode: boolean): void;
34
+ readonly isBackgroundLocationEnabled: boolean;
35
+ /**
36
+ * 检查位置权限状态
37
+ */
38
+ checkLocationPermission(): Promise<PermissionStatus>;
39
+ /**
40
+ * 请求前台位置权限(增强版)
41
+ */
42
+ requestLocationPermission(): Promise<PermissionStatus>;
43
+ /**
44
+ * 请求后台位置权限
45
+ * 注意:必须在前台权限已授予后才能请求
46
+ */
47
+ requestBackgroundLocationPermission(): Promise<PermissionStatus>;
48
+ /**
49
+ * 打开应用设置页面
50
+ * 引导用户手动授予权限
51
+ */
52
+ openAppSettings(): void;
53
+ setAllowsBackgroundLocationUpdates(allows: boolean): void;
54
+ /**
55
+ * 添加定位监听器(便捷方法)
56
+ * 自动订阅 onLocationUpdate 事件,提供容错处理
57
+ * @param listener 定位回调函数
58
+ * @returns 订阅对象,调用 remove() 取消监听
59
+ * 注意:如果使用 Config Plugin 配置了 API Key,无需调用 initSDK()
60
+ */
61
+ addLocationListener(listener: LocationListener): {
62
+ remove: () => void;
63
+ };
64
+ /**
65
+ * 计算两个坐标点之间的距离
66
+ * @param coordinate1 第一个坐标点
67
+ * @param coordinate2 第二个坐标点
68
+ * @returns 两点之间的距离(单位:米)
69
+ */
70
+ distanceBetweenCoordinates(coordinate1: LatLngPoint, coordinate2: LatLngPoint): number;
71
+ /**
72
+ * 根据多个坐标点计算可同时可见的推荐缩放级别
73
+ * @param points 坐标点集合(至少 1 个)
74
+ * @param options 视口与缩放边界选项
75
+ * @returns 推荐 zoom
76
+ */
77
+ calculateFitZoom(points: LatLngPoint[], options?: {
78
+ viewportWidthPx?: number;
79
+ viewportHeightPx?: number;
80
+ paddingPx?: number;
81
+ minZoom?: number;
82
+ maxZoom?: number;
83
+ }): number;
84
+ /**
85
+ * 判断点是否在圆内
86
+ * @param point 要判断的点
87
+ * @param center 圆心坐标
88
+ * @param radius 圆半径(单位:米)
89
+ * @returns 是否在圆内
90
+ */
91
+ isPointInCircle(point: LatLngPoint, center: LatLngPoint, radius: number): boolean;
92
+ /**
93
+ * 判断点是否在多边形内
94
+ * @param point 要判断的点
95
+ * @param polygon 多边形的顶点坐标数组,支持嵌套数组(多边形空洞)
96
+ * @returns 是否在多边形内
97
+ */
98
+ isPointInPolygon(point: LatLngPoint, polygon: LatLngPoint[] | LatLngPoint[][]): boolean;
99
+ /**
100
+ * 计算多边形面积
101
+ * @param polygon 多边形的顶点坐标数组,支持嵌套数组(多边形空洞)
102
+ * @returns 面积(单位:平方米)
103
+ */
104
+ calculatePolygonArea(polygon: LatLngPoint[] | LatLngPoint[][]): number;
105
+ /**
106
+ * 计算矩形面积
107
+ * @param southWest 西南角坐标
108
+ * @param northEast 东北角坐标
109
+ * @returns 面积(单位:平方米)
110
+ */
111
+ calculateRectangleArea(southWest: LatLngPoint, northEast: LatLngPoint): number;
112
+ /**
113
+ * 获取路径上距离目标点最近的点
114
+ * @param path 路径点集合
115
+ * @param target 目标点
116
+ * @returns 最近点信息,包含坐标、索引和距离
117
+ */
118
+ getNearestPointOnPath(path: LatLngPoint[], target: LatLngPoint): {
119
+ latitude: number;
120
+ longitude: number;
121
+ index: number;
122
+ distanceMeters: number;
123
+ } | null;
124
+ /**
125
+ * 计算多边形质心
126
+ * @param polygon 多边形顶点坐标数组
127
+ * @returns 质心坐标
128
+ */
129
+ calculateCentroid(polygon: LatLngPoint[]): LatLng | null;
130
+ /**
131
+ * 计算路径边界和中心点
132
+ * @param points 路径点集合
133
+ * @returns 边界信息,包含 north, south, east, west 和 center
134
+ */
135
+ calculatePathBounds(points: LatLngPoint[]): {
136
+ north: number;
137
+ south: number;
138
+ east: number;
139
+ west: number;
140
+ center: LatLngPoint;
141
+ } | null;
142
+ /**
143
+ * GeoHash 编码
144
+ * @param coordinate 坐标点
145
+ * @param precision 精度 (1-12)
146
+ * @returns GeoHash 字符串
147
+ */
148
+ encodeGeoHash(coordinate: LatLngPoint, precision: number): string;
149
+ /**
150
+ * 轨迹抽稀 (RDP 算法)
151
+ * @param points 原始轨迹点
152
+ * @param tolerance 允许误差(米)
153
+ * @returns 简化后的轨迹点
154
+ */
155
+ simplifyPolyline(points: LatLngPoint[], tolerance: number): LatLng[];
156
+ /**
157
+ * 计算路径总长度
158
+ * @param points 路径点
159
+ * @returns 长度(米)
160
+ */
161
+ calculatePathLength(points: LatLngPoint[]): number;
162
+ /**
163
+ * 解析高德地图 API 返回的 Polyline 字符串
164
+ * 格式: "lng,lat;lng,lat;..."
165
+ * @param polylineStr 高德原始 polyline 字符串,或包含 polyline 属性的对象
166
+ * @returns 解析后的点集
167
+ */
168
+ parsePolyline(polylineStr: string | {
169
+ polyline: string;
170
+ }): LatLng[];
171
+ /**
172
+ * 获取路径上指定距离的点
173
+ * @param points 路径点
174
+ * @param distance 距离起点的米数
175
+ * @returns 点信息(坐标+角度)
176
+ */
177
+ getPointAtDistance(points: LatLngPoint[], distance: number): {
178
+ latitude: number;
179
+ longitude: number;
180
+ angle: number;
181
+ } | null;
182
+ /**
183
+ * 经纬度转换为地图瓦片坐标
184
+ * @param coordinate 经纬度点
185
+ * @param zoom 缩放级别
186
+ * @returns 瓦片坐标(x, y, z)
187
+ */
188
+ latLngToTile(coordinate: LatLngPoint, zoom: number): {
189
+ x: number;
190
+ y: number;
191
+ z: number;
192
+ } | null;
193
+ /**
194
+ * 地图瓦片坐标转换为经纬度
195
+ * @param tile 瓦片坐标(x, y, z)
196
+ * @returns 经纬度点
197
+ */
198
+ tileToLatLng(tile: {
199
+ x: number;
200
+ y: number;
201
+ z: number;
202
+ }): LatLng | null;
203
+ /**
204
+ * 经纬度转换为地图像素坐标
205
+ * @param coordinate 经纬度点
206
+ * @param zoom 缩放级别
207
+ * @returns 像素坐标(x, y)
208
+ */
209
+ latLngToPixel(coordinate: LatLngPoint, zoom: number): {
210
+ x: number;
211
+ y: number;
212
+ } | null;
213
+ /**
214
+ * 地图像素坐标转换为经纬度
215
+ * @param pixel 像素坐标(x, y)
216
+ * @param zoom 缩放级别
217
+ * @returns 经纬度点
218
+ */
219
+ pixelToLatLng(pixel: {
220
+ x: number;
221
+ y: number;
222
+ }, zoom: number): LatLng | null;
223
+ /**
224
+ * 批量地理围栏检测
225
+ * @param point 待检查的点
226
+ * @param polygons 多边形数组,格式为 LatLngPoint[][] 或 LatLngPoint[][][]
227
+ * @returns 包含点索引的数组(-1 表示不在任何多边形内)
228
+ */
229
+ findPointInPolygons(point: LatLngPoint, polygons: LatLngPoint[][] | LatLngPoint[][][]): number;
230
+ /**
231
+ * 生成网格聚合数据 (常用于展示网格聚合图或大规模点数据处理)
232
+ * @param points 包含经纬度和权重的点数组
233
+ * @param gridSizeMeters 网格大小(米)
234
+ * @returns 包含经纬度和强度的网格点数组
235
+ */
236
+ generateHeatmapGrid(points: Array<LatLngPoint & {
237
+ weight?: number;
238
+ }>, gridSizeMeters: number): Array<{
239
+ latitude: number;
240
+ longitude: number;
241
+ intensity: number;
242
+ }>;
243
+ };
244
+ /**
245
+ * 获取最近一次 initSDK 的配置
246
+ */
247
+ export declare function getSDKConfig(): SDKConfig | null;
248
+ type HiddenNativeMethodName = 'setPrivacyShow' | 'setPrivacyAgree';
249
+ export type ExpoGaodeMapModule = Omit<NativeExpoGaodeMapModule, keyof typeof helperMethods | HiddenNativeMethodName> & typeof helperMethods;
250
+ declare const ExpoGaodeMapModuleWithHelpers: ExpoGaodeMapModule;
251
+ /**
252
+ * 获取用于 Web API 的 webKey(若未初始化或未提供则返回 undefined)
253
+ */
254
+ export declare function getWebKey(): string | undefined;
255
+ export default ExpoGaodeMapModuleWithHelpers;
256
+ //# sourceMappingURL=ExpoGaodeMapModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpoGaodeMapModule.d.ts","sourceRoot":"","sources":["../../../src/map/ExpoGaodeMapModule.ts"],"names":[],"mappings":"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"}