expo-gaode-map-navigation 2.0.12-next.0 → 2.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +296 -7
- package/android/build.gradle +12 -4
- package/android/src/main/AndroidManifest.xml +10 -1
- package/android/src/main/cpp/cluster_jni.cpp +56 -0
- package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapModule.kt +49 -8
- package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapOfflineModule.kt +83 -15
- package/android/src/main/java/expo/modules/gaodemap/map/ExpoGaodeMapView.kt +13 -3
- package/android/src/main/java/expo/modules/gaodemap/map/managers/UIManager.kt +36 -39
- package/android/src/main/java/expo/modules/gaodemap/map/modules/SDKInitializer.kt +23 -17
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/ClusterView.kt +5 -2
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/HeatMapView.kt +122 -10
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/HeatMapViewModule.kt +2 -2
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/MarkerView.kt +37 -25
- package/android/src/main/java/expo/modules/gaodemap/map/overlays/MarkerViewModule.kt +6 -6
- package/android/src/main/java/expo/modules/gaodemap/map/search/ExpoGaodeMapSearchModule.kt +751 -0
- package/android/src/main/java/expo/modules/gaodemap/map/utils/GeometryUtils.kt +103 -0
- package/android/src/main/java/expo/modules/gaodemap/navigation/ExpoGaodeMapNaviView.kt +1408 -394
- package/android/src/main/java/expo/modules/gaodemap/navigation/ExpoGaodeMapNaviViewModule.kt +121 -1
- package/android/src/main/java/expo/modules/gaodemap/navigation/ExpoGaodeMapNavigationModule.kt +14 -28
- package/android/src/main/java/expo/modules/gaodemap/navigation/listeners/IndependentRouteListener.kt +28 -3
- package/android/src/main/java/expo/modules/gaodemap/navigation/listeners/RouteCalculateListener.kt +2 -2
- package/android/src/main/java/expo/modules/gaodemap/navigation/managers/IndependentRouteManager.kt +114 -15
- package/android/src/main/java/expo/modules/gaodemap/navigation/routes/drive/DriveTruckRouteCalculator.kt +24 -35
- package/android/src/main/java/expo/modules/gaodemap/navigation/services/IndependentRouteService.kt +50 -36
- package/android/src/main/java/expo/modules/gaodemap/navigation/services/NavigationForegroundService.kt +661 -0
- package/android/src/main/java/expo/modules/gaodemap/navigation/utils/Converters.kt +21 -12
- package/android/src/main/res/drawable/ic_nav_notification_small.xml +10 -0
- package/android/src/main/res/drawable/landback_0.png +0 -0
- package/android/src/main/res/drawable/landback_1.png +0 -0
- package/android/src/main/res/drawable/landback_2.png +0 -0
- package/android/src/main/res/drawable/landback_3.png +0 -0
- package/android/src/main/res/drawable/landback_4.png +0 -0
- package/android/src/main/res/drawable/landback_5.png +0 -0
- package/android/src/main/res/drawable/landback_6.png +0 -0
- package/android/src/main/res/drawable/landback_7.png +0 -0
- package/android/src/main/res/drawable/landback_8.png +0 -0
- package/android/src/main/res/drawable/landback_9.png +0 -0
- package/android/src/main/res/drawable/landback_a.png +0 -0
- package/android/src/main/res/drawable/landback_b.png +0 -0
- package/android/src/main/res/drawable/landback_c.png +0 -0
- package/android/src/main/res/drawable/landback_d.png +0 -0
- package/android/src/main/res/drawable/landback_e.png +0 -0
- package/android/src/main/res/drawable/landback_f.png +0 -0
- package/android/src/main/res/drawable/landback_g.png +0 -0
- package/android/src/main/res/drawable/landback_h.png +0 -0
- package/android/src/main/res/drawable/landback_i.png +0 -0
- package/android/src/main/res/drawable/landback_j.png +0 -0
- package/android/src/main/res/drawable/landback_k.png +0 -0
- package/android/src/main/res/drawable/landback_l.png +0 -0
- package/android/src/main/res/drawable/landfront_0.png +0 -0
- package/android/src/main/res/drawable/landfront_00.png +0 -0
- package/android/src/main/res/drawable/landfront_1.png +0 -0
- package/android/src/main/res/drawable/landfront_11.png +0 -0
- package/android/src/main/res/drawable/landfront_20.png +0 -0
- package/android/src/main/res/drawable/landfront_21.png +0 -0
- package/android/src/main/res/drawable/landfront_22.png +0 -0
- package/android/src/main/res/drawable/landfront_3.png +0 -0
- package/android/src/main/res/drawable/landfront_33.png +0 -0
- package/android/src/main/res/drawable/landfront_40.png +0 -0
- package/android/src/main/res/drawable/landfront_43.png +0 -0
- package/android/src/main/res/drawable/landfront_44.png +0 -0
- package/android/src/main/res/drawable/landfront_5.png +0 -0
- package/android/src/main/res/drawable/landfront_55.png +0 -0
- package/android/src/main/res/drawable/landfront_61.png +0 -0
- package/android/src/main/res/drawable/landfront_63.png +0 -0
- package/android/src/main/res/drawable/landfront_66.png +0 -0
- package/android/src/main/res/drawable/landfront_70.png +0 -0
- package/android/src/main/res/drawable/landfront_71.png +0 -0
- package/android/src/main/res/drawable/landfront_73.png +0 -0
- package/android/src/main/res/drawable/landfront_77.png +0 -0
- package/android/src/main/res/drawable/landfront_8.png +0 -0
- package/android/src/main/res/drawable/landfront_88.png +0 -0
- package/android/src/main/res/drawable/landfront_90.png +0 -0
- package/android/src/main/res/drawable/landfront_95.png +0 -0
- package/android/src/main/res/drawable/landfront_99.png +0 -0
- package/android/src/main/res/drawable/landfront_a0.png +0 -0
- package/android/src/main/res/drawable/landfront_a8.png +0 -0
- package/android/src/main/res/drawable/landfront_aa.png +0 -0
- package/android/src/main/res/drawable/landfront_b1.png +0 -0
- package/android/src/main/res/drawable/landfront_b5.png +0 -0
- package/android/src/main/res/drawable/landfront_bb.png +0 -0
- package/android/src/main/res/drawable/landfront_c3.png +0 -0
- package/android/src/main/res/drawable/landfront_c8.png +0 -0
- package/android/src/main/res/drawable/landfront_cc.png +0 -0
- package/android/src/main/res/drawable/landfront_d.png +0 -0
- package/android/src/main/res/drawable/landfront_dd.png +0 -0
- package/android/src/main/res/drawable/landfront_e1.png +0 -0
- package/android/src/main/res/drawable/landfront_e5.png +0 -0
- package/android/src/main/res/drawable/landfront_ee.png +0 -0
- package/android/src/main/res/drawable/landfront_f0.png +0 -0
- package/android/src/main/res/drawable/landfront_f1.png +0 -0
- package/android/src/main/res/drawable/landfront_f5.png +0 -0
- package/android/src/main/res/drawable/landfront_ff.png +0 -0
- package/android/src/main/res/drawable/landfront_g3.png +0 -0
- package/android/src/main/res/drawable/landfront_g5.png +0 -0
- package/android/src/main/res/drawable/landfront_gg.png +0 -0
- package/android/src/main/res/drawable/landfront_h1.png +0 -0
- package/android/src/main/res/drawable/landfront_h3.png +0 -0
- package/android/src/main/res/drawable/landfront_h5.png +0 -0
- package/android/src/main/res/drawable/landfront_hh.png +0 -0
- package/android/src/main/res/drawable/landfront_i0.png +0 -0
- package/android/src/main/res/drawable/landfront_i3.png +0 -0
- package/android/src/main/res/drawable/landfront_i5.png +0 -0
- package/android/src/main/res/drawable/landfront_ii.png +0 -0
- package/android/src/main/res/drawable/landfront_j1.png +0 -0
- package/android/src/main/res/drawable/landfront_j8.png +0 -0
- package/android/src/main/res/drawable/landfront_jj.png +0 -0
- package/android/src/main/res/drawable/landfront_kk.png +0 -0
- package/android/src/main/res/drawable/landfront_ll.png +0 -0
- package/android/src/main/res/drawable/nav_notification_brand_icon.xml +16 -0
- package/android/src/main/res/drawable/navi_arrow_leftline.png +0 -0
- package/android/src/main/res/drawable/navi_lane_shape_bg_center.xml +5 -0
- package/android/src/main/res/drawable/navi_lane_shape_bg_left.xml +8 -0
- package/android/src/main/res/drawable/navi_lane_shape_bg_over.xml +6 -0
- package/android/src/main/res/drawable/navi_lane_shape_bg_right.xml +8 -0
- package/android/src/main/res/drawable-nodpi/nav_tracker_car.png +0 -0
- package/build/ExpoGaodeMapNaviView.d.ts +16 -0
- package/build/ExpoGaodeMapNaviView.d.ts.map +1 -1
- package/build/ExpoGaodeMapNaviView.js +74 -1
- package/build/ExpoGaodeMapNaviView.js.map +1 -1
- package/build/index.d.ts +56 -8
- package/build/index.d.ts.map +1 -1
- package/build/index.js +452 -10
- package/build/index.js.map +1 -1
- package/build/map/ExpoGaodeMapModule.d.ts +15 -13
- package/build/map/ExpoGaodeMapModule.d.ts.map +1 -1
- package/build/map/ExpoGaodeMapModule.js +31 -39
- package/build/map/ExpoGaodeMapModule.js.map +1 -1
- package/build/map/ExpoGaodeMapOfflineModule.d.ts +5 -0
- package/build/map/ExpoGaodeMapOfflineModule.d.ts.map +1 -1
- package/build/map/ExpoGaodeMapOfflineModule.js.map +1 -1
- package/build/map/ExpoGaodeMapView.d.ts +3 -4
- package/build/map/ExpoGaodeMapView.d.ts.map +1 -1
- package/build/map/ExpoGaodeMapView.js +28 -25
- package/build/map/ExpoGaodeMapView.js.map +1 -1
- package/build/map/components/overlays/Circle.d.ts.map +1 -1
- package/build/map/components/overlays/Circle.js +1 -30
- package/build/map/components/overlays/Circle.js.map +1 -1
- package/build/map/components/overlays/Cluster.d.ts.map +1 -1
- package/build/map/components/overlays/Cluster.js +1 -42
- package/build/map/components/overlays/Cluster.js.map +1 -1
- package/build/map/components/overlays/HeatMap.d.ts.map +1 -1
- package/build/map/components/overlays/HeatMap.js +21 -21
- package/build/map/components/overlays/HeatMap.js.map +1 -1
- package/build/map/components/overlays/Marker.d.ts.map +1 -1
- package/build/map/components/overlays/Marker.js +76 -80
- package/build/map/components/overlays/Marker.js.map +1 -1
- package/build/map/components/overlays/Polygon.d.ts.map +1 -1
- package/build/map/components/overlays/Polygon.js +1 -25
- package/build/map/components/overlays/Polygon.js.map +1 -1
- package/build/map/components/overlays/Polyline.d.ts.map +1 -1
- package/build/map/components/overlays/Polyline.js +1 -31
- package/build/map/components/overlays/Polyline.js.map +1 -1
- package/build/map/index.d.ts +9 -2
- package/build/map/index.d.ts.map +1 -1
- package/build/map/index.js +9 -2
- package/build/map/index.js.map +1 -1
- package/build/map/search/ExpoGaodeMapSearch.types.d.ts +340 -0
- package/build/map/search/ExpoGaodeMapSearch.types.d.ts.map +1 -0
- package/build/map/search/ExpoGaodeMapSearch.types.js +19 -0
- package/build/map/search/ExpoGaodeMapSearch.types.js.map +1 -0
- package/build/map/search/ExpoGaodeMapSearchModule.d.ts +74 -0
- package/build/map/search/ExpoGaodeMapSearchModule.d.ts.map +1 -0
- package/build/map/search/ExpoGaodeMapSearchModule.js +47 -0
- package/build/map/search/ExpoGaodeMapSearchModule.js.map +1 -0
- package/build/map/search/index.d.ts +156 -0
- package/build/map/search/index.d.ts.map +1 -0
- package/build/map/search/index.js +171 -0
- package/build/map/search/index.js.map +1 -0
- package/build/map/types/index.d.ts +2 -2
- package/build/map/types/index.d.ts.map +1 -1
- package/build/map/types/index.js.map +1 -1
- package/build/map/types/map-view.types.d.ts +4 -2
- package/build/map/types/map-view.types.d.ts.map +1 -1
- package/build/map/types/map-view.types.js.map +1 -1
- package/build/map/types/native-module.types.d.ts +11 -12
- package/build/map/types/native-module.types.d.ts.map +1 -1
- package/build/map/types/native-module.types.js.map +1 -1
- package/build/map/types/overlays.types.d.ts +9 -14
- package/build/map/types/overlays.types.d.ts.map +1 -1
- package/build/map/types/overlays.types.js.map +1 -1
- package/build/map/types/route-playback.types.d.ts +16 -0
- package/build/map/types/route-playback.types.d.ts.map +1 -1
- package/build/map/types/route-playback.types.js.map +1 -1
- package/build/map/utils/ErrorHandler.js +11 -11
- package/build/map/utils/ErrorHandler.js.map +1 -1
- package/build/map/utils/OfflineMapManager.d.ts +4 -0
- package/build/map/utils/OfflineMapManager.d.ts.map +1 -1
- package/build/map/utils/OfflineMapManager.js +6 -0
- package/build/map/utils/OfflineMapManager.js.map +1 -1
- package/build/types/coordinates.types.d.ts +3 -0
- package/build/types/coordinates.types.d.ts.map +1 -1
- package/build/types/coordinates.types.js.map +1 -1
- package/build/types/independent.types.d.ts +111 -12
- package/build/types/independent.types.d.ts.map +1 -1
- package/build/types/independent.types.js.map +1 -1
- package/build/types/native-module.types.d.ts +1 -1
- package/build/types/native-module.types.js.map +1 -1
- package/build/types/naviview.types.d.ts +304 -14
- package/build/types/naviview.types.d.ts.map +1 -1
- package/build/types/naviview.types.js.map +1 -1
- package/build/types/route.types.d.ts +12 -2
- package/build/types/route.types.d.ts.map +1 -1
- package/build/types/route.types.js.map +1 -1
- package/expo-module.config.json +4 -2
- package/ios/ExpoGaodeMapNaviView.swift +2331 -201
- package/ios/ExpoGaodeMapNaviViewModule.swift +109 -1
- package/ios/ExpoGaodeMapNavigation.podspec +2 -1
- package/ios/ExpoGaodeMapNavigationModule.swift +7 -5
- package/ios/managers/IndependentRouteManager.swift +90 -26
- package/ios/map/ExpoGaodeMapModule.swift +72 -21
- package/ios/map/ExpoGaodeMapOfflineModule.swift +61 -0
- package/ios/map/ExpoGaodeMapSearchModule.swift +773 -0
- package/ios/map/ExpoGaodeMapView.swift +23 -5
- package/ios/map/GaodeMapPrivacyManager.swift +26 -18
- package/ios/map/cpp/GeometryEngine.cpp +112 -0
- package/ios/map/cpp/GeometryEngine.hpp +21 -0
- package/ios/map/modules/LocationManager.swift +37 -5
- package/ios/map/overlays/MarkerView.swift +11 -11
- package/ios/map/overlays/MarkerViewModule.swift +4 -4
- package/ios/map/overlays/PolylineView.swift +6 -12
- package/ios/map/utils/ClusterNative.h +8 -0
- package/ios/map/utils/ClusterNative.mm +27 -0
- package/ios/map/utils/PermissionManager.swift +115 -6
- package/ios/routes/drive/DriveTruckRouteCalculator.swift +165 -77
- package/ios/routes/walkride/WalkRideRouteCalculator.swift +127 -1
- package/ios/services/IndependentRouteService.swift +198 -39
- package/ios/services/NavigationLiveActivityAttributes.swift +48 -0
- package/ios/services/NavigationLiveActivityManager.swift +359 -0
- package/package.json +22 -7
- package/plugin/build/withGaodeMap.d.ts +8 -0
- package/plugin/build/withGaodeMap.js +60 -4
- package/scripts/check-expo-modules.js +68 -0
- package/shared/cpp/GeometryEngine.cpp +112 -0
- package/shared/cpp/GeometryEngine.hpp +21 -0
- package/widget-template/README.md +46 -0
- package/widget-template/ios/NavigationLiveActivityWidget.swift +367 -0
- package/android/src/main/java/expo/modules/gaodemap/navigation/managers/RouteCalculator.kt +0 -173
package/build/index.js.map
CHANGED
|
@@ -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 type TransitRouteOptions,\n} from './types';\nimport type {\n NaviPoint,\n RouteOptions,\n DriveRouteOptions,\n WalkRouteOptions,\n RideRouteOptions,\n EBikeRouteOptions,\n TransitRouteOptions as TransitRouteOptionsType,\n TruckRouteOptions,\n OfficialNaviPageOptions,\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 parsePolyline(polyline?: string): NaviPoint[] {\n if (!polyline?.trim()) {\n return [];\n }\n\n return polyline\n .split(';')\n .map((segment) => segment.trim())\n .filter(Boolean)\n .map((segment) => {\n const [longitude, latitude] = segment.split(',').map((value) => Number(value.trim()));\n if (!Number.isFinite(longitude) || !Number.isFinite(latitude)) {\n return null;\n }\n\n return {\n latitude,\n longitude,\n };\n })\n .filter((point): point is NaviPoint => point !== null);\n}\n\nasync function loadWebApiTransitFallback() {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const webApi = require('expo-gaode-map-web-api');\n if (typeof webApi?.GaodeWebAPI !== 'function') {\n throw new Error('expo-gaode-map-web-api 未导出 GaodeWebAPI');\n }\n return webApi;\n } catch {\n throw new Error(\n '公交路径规划依赖 expo-gaode-map-web-api。请安装该包,并在 ExpoGaodeMapModule.initSDK 中提供 webKey。'\n );\n }\n}\n\nfunction normalizeTransitRouteResult(\n options: TransitRouteOptions,\n result: any\n): DriveRouteResult {\n // 导航包内部仍保持独立实现;\n // 这里只是在“公交无法由导航 SDK 直算”时,把 Web API 结果映射成现有 RouteResult 形状。\n const routes = (result?.route?.transits ?? []).map((transit: any, index: number) => {\n const polyline = (transit?.segments ?? []).flatMap((segment: any) => [\n ...(segment.walking?.steps?.flatMap((step: any) => parsePolyline(step.polyline)) ?? []),\n ...(segment.bus?.buslines?.flatMap((line: any) => parsePolyline(line.polyline)) ?? []),\n ...(segment.railway?.buslines?.flatMap((line: any) => parsePolyline(line.polyline)) ?? []),\n ]);\n\n return {\n id: index,\n start: options.from,\n end: options.to,\n distance: Number(transit?.distance ?? 0),\n duration: Number(transit?.cost?.duration ?? 0),\n segments: [],\n polyline,\n tollDistance: 0,\n tollCost: Number(transit?.cost?.transit_fee ?? 0),\n strategy: options.strategy,\n };\n });\n\n return {\n count: routes.length,\n mainPathIndex: 0,\n routes,\n };\n}\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 */\nexport async function calculateRoute(\n options: RouteOptions\n): Promise<RouteResult | DriveRouteResult> {\n if ('type' in options && options.type === RouteType.TRANSIT) {\n return calculateTransitRoute(options as TransitRouteOptions);\n }\n\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 * 公交换乘路径规划(运行时 fallback 到 Web API)\n */\nexport async function calculateTransitRoute(options: TransitRouteOptions): Promise<DriveRouteResult> {\n // 运行时按需加载,避免把 navigation 包和 web-api 包在构建期强绑定。\n const { GaodeWebAPI, TransitStrategy } = await loadWebApiTransitFallback();\n const api = new GaodeWebAPI();\n const result = await api.route.transit(\n `${options.from.longitude},${options.from.latitude}`,\n `${options.to.longitude},${options.to.latitude}`,\n options.city1,\n options.city2,\n {\n strategy: options.strategy ?? TransitStrategy.RECOMMENDED,\n AlternativeRoute: options.alternativeRoute,\n show_fields: 'cost,polyline',\n }\n );\n\n return normalizeTransitRouteResult(options, result);\n}\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 * 打开高德官方导航页(Android 原生 AmapNaviPage)\n */\nexport const openOfficialNaviPage = (options: OfficialNaviPageOptions) =>\n ExpoGaodeMapNavigationModule.openOfficialNaviPage(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 TransitRouteOptionsType as 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};\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 calculateTransitRoute,\n calculateTruckRoute,\n calculateMotorcycleRoute,\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 {\n ExpoGaodeMapNavigationModule,\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import ExpoGaodeMapNavigationModule from './ExpoGaodeMapNavigationModule';\nimport { ExpoGaodeMapModule } from './map';\nimport {\n ExpoGaodeMapNaviView,\n type ExpoGaodeMapNaviViewRef,\n} from './ExpoGaodeMapNaviView';\n\n// 重新导出地图模块的所有内容\nexport * from './map';\nimport {\n RouteType,\n DriveStrategy,\n WalkStrategy,\n RideStrategy,\n TruckSize,\n TravelStrategy,\n type TransitRouteOptions,\n} from './types';\nimport type {\n NaviPoint,\n RouteOptions,\n DriveRouteOptions,\n WalkRouteOptions,\n RideRouteOptions,\n EBikeRouteOptions,\n TransitRouteOptions as TransitRouteOptionsType,\n TruckRouteOptions,\n OfficialNaviPageOptions,\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 BuildAnchorWaypointsOptions,\n FollowWebPlannedRouteOptions,\n FollowWebPlannedRouteResult,\n FollowWebPlannedRouteCandidate,\n WebPlannedRoute,\n NaviInfoUpdateEvent,\n NaviLaneInfoEvent,\n NaviTrafficStatusesEvent,\n NaviVisualStateEvent,\n ExpoGaodeMapNaviViewProps,\n } from './types';\n\nfunction parsePolyline(polyline?: string): NaviPoint[] {\n if (!polyline?.trim()) {\n return [];\n }\n\n return polyline\n .split(';')\n .map((segment) => segment.trim())\n .filter(Boolean)\n .map((segment) => {\n const [longitude, latitude] = segment.split(',').map((value) => Number(value.trim()));\n if (!Number.isFinite(longitude) || !Number.isFinite(latitude)) {\n return null;\n }\n\n return {\n latitude,\n longitude,\n };\n })\n .filter((point): point is NaviPoint => point !== null);\n}\n\nfunction dedupeAdjacentPoints(points: NaviPoint[]): NaviPoint[] {\n return points.filter((point, index) => {\n if (index === 0) {\n return true;\n }\n\n const previous = points[index - 1];\n return (\n previous.latitude !== point.latitude ||\n previous.longitude !== point.longitude\n );\n });\n}\n\nfunction haversineDistance(pointA: NaviPoint, pointB: NaviPoint): number {\n const toRadians = (degrees: number) => (degrees * Math.PI) / 180;\n const earthRadiusMeters = 6371000;\n const latitudeDelta = toRadians(pointB.latitude - pointA.latitude);\n const longitudeDelta = toRadians(pointB.longitude - pointA.longitude);\n const latitudeA = toRadians(pointA.latitude);\n const latitudeB = toRadians(pointB.latitude);\n\n const a =\n Math.sin(latitudeDelta / 2) ** 2 +\n Math.cos(latitudeA) * Math.cos(latitudeB) * Math.sin(longitudeDelta / 2) ** 2;\n\n return 2 * earthRadiusMeters * Math.asin(Math.sqrt(a));\n}\n\nfunction distanceBetweenCoordinatesSafe(pointA: NaviPoint, pointB: NaviPoint): number {\n try {\n return ExpoGaodeMapModule.distanceBetweenCoordinates(pointA, pointB);\n } catch {\n return haversineDistance(pointA, pointB);\n }\n}\n\nfunction calculatePathLengthSafe(points: NaviPoint[]): number {\n try {\n return ExpoGaodeMapModule.calculatePathLength(points);\n } catch {\n let total = 0;\n for (let index = 1; index < points.length; index += 1) {\n total += distanceBetweenCoordinatesSafe(points[index - 1], points[index]);\n }\n return total;\n }\n}\n\nfunction simplifyPolylineSafe(points: NaviPoint[], tolerance: number): NaviPoint[] {\n if (points.length <= 2) {\n return points;\n }\n\n try {\n const simplified = ExpoGaodeMapModule.simplifyPolyline(points, tolerance);\n return simplified.length >= 2 ? simplified : points;\n } catch {\n return points;\n }\n}\n\nfunction getDistanceToPathSafe(path: NaviPoint[], target: NaviPoint): number {\n if (path.length === 0) {\n return Number.POSITIVE_INFINITY;\n }\n\n try {\n const nearest = ExpoGaodeMapModule.getNearestPointOnPath(path, target);\n if (nearest) {\n return nearest.distanceMeters;\n }\n } catch {\n // ignore and fallback to point-to-point scan\n }\n\n return path.reduce((minimum, point) => {\n const distance = distanceBetweenCoordinatesSafe(point, target);\n return distance < minimum ? distance : minimum;\n }, Number.POSITIVE_INFINITY);\n}\n\nfunction samplePolyline(points: NaviPoint[], targetSamples = 36): NaviPoint[] {\n if (points.length <= targetSamples) {\n return points;\n }\n\n const step = Math.max(1, Math.floor(points.length / targetSamples));\n const samples = points.filter((_, index) => index % step === 0);\n const lastPoint = points[points.length - 1];\n const lastSample = samples[samples.length - 1];\n if (\n !lastSample ||\n lastSample.latitude !== lastPoint.latitude ||\n lastSample.longitude !== lastPoint.longitude\n ) {\n samples.push(lastPoint);\n }\n return samples;\n}\n\nfunction selectEvenlySpacedPoints(points: NaviPoint[], count: number): NaviPoint[] {\n if (count <= 0 || points.length <= count) {\n return points;\n }\n\n return Array.from({ length: count }, (_, index) => {\n const rawIndex = Math.round(((index + 1) * (points.length + 1)) / (count + 1)) - 1;\n const boundedIndex = Math.min(points.length - 1, Math.max(0, rawIndex));\n return points[boundedIndex];\n });\n}\n\nfunction normalizeWebRoutePolyline(webRoute: WebPlannedRoute): NaviPoint[] {\n const directPolyline = dedupeAdjacentPoints(webRoute.polyline ?? []);\n if (directPolyline.length > 1) {\n return directPolyline;\n }\n\n const stepPolyline = dedupeAdjacentPoints(\n (webRoute.steps ?? []).flatMap((step) => step.polyline ?? [])\n );\n return stepPolyline;\n}\n\nexport function buildAnchorWaypointsFromWebRoute(\n options: BuildAnchorWaypointsOptions\n): NaviPoint[] {\n const {\n webRoute,\n maxViaPoints = 8,\n simplifyTolerance = 80,\n minSpacingMeters = 800,\n } = options;\n\n const polyline = normalizeWebRoutePolyline(webRoute);\n if (polyline.length <= 2) {\n return [];\n }\n\n const simplified = dedupeAdjacentPoints(\n simplifyPolylineSafe(polyline, simplifyTolerance)\n );\n const candidatePoints = simplified.length > 2 ? simplified : polyline;\n const interiorPoints = candidatePoints.slice(1, -1);\n\n const spacedPoints: NaviPoint[] = [];\n let previousPoint = polyline[0];\n\n for (const point of interiorPoints) {\n if (distanceBetweenCoordinatesSafe(previousPoint, point) < minSpacingMeters) {\n continue;\n }\n spacedPoints.push(point);\n previousPoint = point;\n }\n\n const waypoints = spacedPoints.length > 0\n ? spacedPoints\n : candidatePoints.length > 2\n ? [candidatePoints[Math.floor(candidatePoints.length / 2)]]\n : [];\n\n return dedupeAdjacentPoints(selectEvenlySpacedPoints(waypoints, maxViaPoints));\n}\n\nasync function loadWebApiFallback(feature: '公交路径规划' | '规避路线预览') {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const webApi = require('expo-gaode-map-web-api');\n if (typeof webApi?.GaodeWebAPI !== 'function') {\n throw new Error('expo-gaode-map-web-api 未导出 GaodeWebAPI');\n }\n return webApi;\n } catch {\n throw new Error(\n `${feature}依赖 expo-gaode-map-web-api。请安装该包,并在 ExpoGaodeMapModule.initSDK 中提供 webKey。`\n );\n }\n}\n\nfunction normalizeAvoidPolygons(polygons?: DriveRouteOptions['avoidPolygons']): string | undefined {\n if (!polygons?.length) {\n return undefined;\n }\n\n const normalized = polygons\n .map((polygon) =>\n polygon\n .map((point) => `${point.longitude},${point.latitude}`)\n .join(';')\n )\n .filter(Boolean)\n .join('|');\n\n return normalized || undefined;\n}\n\nfunction normalizeDrivingStrategy(\n strategy?: DriveStrategy\n): number | undefined {\n // 导航 SDK 与 Web API 的策略枚举不完全一致。\n // 这里做“尽量等价”的映射,主要用于带规避参数时的路线预览。\n switch (strategy) {\n case DriveStrategy.FASTEST:\n return 38;\n case DriveStrategy.FEE_FIRST:\n return 1;\n case DriveStrategy.SHORTEST:\n return 2;\n case DriveStrategy.NO_EXPRESSWAYS:\n return 37;\n case DriveStrategy.AVOID_CONGESTION:\n return 33;\n case DriveStrategy.NO_HIGHWAY:\n return 35;\n case DriveStrategy.NO_HIGHWAY_AVOID_CONGESTION:\n return 40;\n case DriveStrategy.AVOID_COST_CONGESTION:\n case DriveStrategy.AVOID_CONGESTION_COST:\n return 41;\n case DriveStrategy.NO_HIGHWAY_AVOID_COST_CONGESTION:\n return 43;\n default:\n return undefined;\n }\n}\n\nfunction normalizeDrivingRouteResult(\n options: DriveRouteOptions,\n result: any\n): DriveRouteResult {\n const paths = result?.route?.paths ?? [];\n const routes = paths.map((path: any, index: number) => {\n const segments = (path?.steps ?? []).map((step: any) => ({\n instruction: step?.instruction ?? '',\n orientation: step?.orientation,\n road: step?.road_name,\n distance: Number(step?.step_distance ?? 0),\n duration: Number(step?.cost?.duration ?? 0),\n polyline: parsePolyline(step?.polyline),\n assistantAction: step?.assistant_action,\n tollDistance: step?.cost?.toll_distance ? Number(step.cost.toll_distance) : undefined,\n tollCost: step?.cost?.tolls ? Number(step.cost.tolls) : undefined,\n }));\n\n const restrictionCode = path?.restriction != null ? Number(path.restriction) : undefined;\n\n return {\n id: index,\n start: options.from,\n end: options.to,\n distance: Number(path?.distance ?? 0),\n duration: Number(path?.cost?.duration ?? path?.duration ?? 0),\n segments,\n polyline: segments.flatMap((segment: { polyline: NaviPoint[] }) => segment.polyline),\n tollDistance: path?.cost?.toll_distance ? Number(path.cost.toll_distance) : undefined,\n tollCost: path?.cost?.tolls ? Number(path.cost.tolls) : undefined,\n trafficLightCount: path?.cost?.traffic_lights ? Number(path.cost.traffic_lights) : undefined,\n restrictionCode,\n restrictionInfo:\n restrictionCode === 0\n ? '限行已规避或未限行'\n : restrictionCode === 1\n ? '限行无法规避'\n : undefined,\n strategy: options.strategy,\n };\n });\n\n return {\n count: Number(result?.count ?? routes.length),\n mainPathIndex: 0,\n routeIds: routes.map((route: RouteResult) => route.id),\n routes,\n taxiCost: result?.route?.taxi_cost ? Number(result.route.taxi_cost) : undefined,\n };\n}\n\nfunction shouldUseAvoidPreviewFallback(options: DriveRouteOptions): boolean {\n return Boolean(options.avoidRoad?.trim() || options.avoidPolygons?.length);\n}\n\ntype RouteLike = RouteResult & {\n routeId?: number;\n steps?: Array<{ polyline?: NaviPoint[] }>;\n};\n\nfunction extractRoutePolyline(route: RouteLike): NaviPoint[] {\n if (Array.isArray(route.polyline) && route.polyline.length > 0) {\n return route.polyline;\n }\n\n const segments = Array.isArray(route.segments) ? route.segments : [];\n if (segments.length > 0) {\n return dedupeAdjacentPoints(\n segments.flatMap((segment) => segment.polyline ?? [])\n );\n }\n\n const steps = Array.isArray(route.steps) ? route.steps : [];\n if (steps.length > 0) {\n return dedupeAdjacentPoints(\n steps.flatMap((step) => step.polyline ?? [])\n );\n }\n\n return [];\n}\n\nfunction resolveIndependentRouteId(\n result: IndependentRouteResult,\n route: RouteLike,\n routeIndex: number\n): number | undefined {\n if (typeof route.id === 'number') {\n return route.id;\n }\n if (typeof route.routeId === 'number') {\n return route.routeId;\n }\n return result.routeIds?.[routeIndex];\n}\n\nfunction scoreIndependentRouteAgainstWebPolyline(\n result: IndependentRouteResult,\n route: RouteLike,\n routeIndex: number,\n webPolyline: NaviPoint[],\n anchorWaypoints: NaviPoint[],\n thresholdMeters: number\n): FollowWebPlannedRouteCandidate | null {\n const nativePolyline = extractRoutePolyline(route);\n if (nativePolyline.length === 0 || webPolyline.length === 0) {\n return null;\n }\n\n const sampledNativePoints = samplePolyline(nativePolyline);\n const pointDistances = sampledNativePoints.map((point) =>\n getDistanceToPathSafe(webPolyline, point)\n );\n const averageDeviationMeters =\n pointDistances.reduce((total, distance) => total + distance, 0) / pointDistances.length;\n const maxDeviationMeters = Math.max(...pointDistances);\n\n const missedAnchorCount = anchorWaypoints.reduce((count, point) => (\n getDistanceToPathSafe(nativePolyline, point) > thresholdMeters ? count + 1 : count\n ), 0);\n\n return {\n routeId: resolveIndependentRouteId(result, route, routeIndex),\n routeIndex,\n averageDeviationMeters,\n maxDeviationMeters,\n missedAnchorCount,\n score:\n averageDeviationMeters +\n maxDeviationMeters * 0.35 +\n missedAnchorCount * thresholdMeters * 0.5,\n };\n}\n\nfunction evaluateIndependentResultAgainstWebRoute(\n independentResult: IndependentRouteResult,\n webPolyline: NaviPoint[],\n anchorWaypoints: NaviPoint[],\n maxDeviationMeters: number\n) {\n const candidateMatches = independentResult.routes\n .map((route, routeIndex) =>\n scoreIndependentRouteAgainstWebPolyline(\n independentResult,\n route as RouteLike,\n routeIndex,\n webPolyline,\n anchorWaypoints,\n maxDeviationMeters\n )\n )\n .filter((candidate): candidate is FollowWebPlannedRouteCandidate => candidate !== null)\n .sort((routeA, routeB) => routeA.score - routeB.score);\n\n const bestMatch = candidateMatches[0];\n const selectedRoute = bestMatch\n ? independentResult.routes[bestMatch.routeIndex] as RouteLike\n : undefined;\n const nativePolyline = selectedRoute ? extractRoutePolyline(selectedRoute) : [];\n\n let mode: FollowWebPlannedRouteResult['mode'] = 'preview_only';\n let reason = '未找到足够接近 Web 规划线的原生路线';\n\n if (bestMatch) {\n if (\n bestMatch.averageDeviationMeters <= maxDeviationMeters / 2 &&\n bestMatch.maxDeviationMeters <= maxDeviationMeters &&\n bestMatch.missedAnchorCount === 0\n ) {\n mode = 'matched';\n reason = '原生路线与 Web 规划线高度接近,可直接按近似结果导航';\n } else if (\n bestMatch.averageDeviationMeters <= maxDeviationMeters &&\n bestMatch.maxDeviationMeters <= maxDeviationMeters * 2\n ) {\n mode = 'approximate';\n reason = '原生路线与 Web 规划线接近,但仍存在可见偏差';\n }\n }\n\n return {\n candidateMatches,\n bestMatch,\n selectedRoute,\n nativePolyline,\n mode,\n reason,\n };\n}\n\nexport async function followWebPlannedRoute(\n options: FollowWebPlannedRouteOptions\n): Promise<FollowWebPlannedRouteResult> {\n const {\n from,\n to,\n webRoute,\n strategy,\n carNumber,\n restriction,\n maxDeviationMeters = 120,\n startNavigation = false,\n naviType = 0,\n } = options;\n\n const webPolyline = normalizeWebRoutePolyline(webRoute);\n if (webPolyline.length < 2) {\n throw new Error('webRoute.polyline 至少需要 2 个点');\n }\n\n const anchorWaypoints = buildAnchorWaypointsFromWebRoute(options);\n const anchoredIndependentResult = await independentDriveRoute({\n from,\n to,\n strategy,\n carNumber,\n restriction,\n waypoints: anchorWaypoints,\n });\n\n let independentResult = anchoredIndependentResult;\n let evaluation = evaluateIndependentResultAgainstWebRoute(\n anchoredIndependentResult,\n webPolyline,\n anchorWaypoints,\n maxDeviationMeters\n );\n let navigationUsesAnchorWaypoints = anchorWaypoints.length > 0;\n\n if (evaluation.bestMatch && evaluation.mode !== 'preview_only' && anchorWaypoints.length > 0) {\n try {\n const directIndependentResult = await independentDriveRoute({\n from,\n to,\n strategy,\n carNumber,\n restriction,\n });\n\n const directEvaluation = evaluateIndependentResultAgainstWebRoute(\n directIndependentResult,\n webPolyline,\n [],\n maxDeviationMeters\n );\n const anchoredBest = evaluation.bestMatch;\n const directBest = directEvaluation.bestMatch;\n\n const canSwitchToDirectNavigation =\n Boolean(directBest) &&\n directEvaluation.mode !== 'preview_only' &&\n directBest!.averageDeviationMeters <= Math.max(\n anchoredBest.averageDeviationMeters + 45,\n anchoredBest.averageDeviationMeters * 1.45\n ) &&\n directBest!.maxDeviationMeters <= Math.max(\n anchoredBest.maxDeviationMeters + 90,\n anchoredBest.maxDeviationMeters * 1.45\n );\n\n if (canSwitchToDirectNavigation) {\n ExpoGaodeMapNavigationModule.clearIndependentRoute({\n token: anchoredIndependentResult.token,\n }).catch(() => {});\n independentResult = directIndependentResult;\n evaluation = directEvaluation;\n navigationUsesAnchorWaypoints = false;\n evaluation.reason =\n directEvaluation.mode === 'matched'\n ? '已切换为无途经点导航结果,且与 Web 规划线高度接近'\n : '已切换为无途经点导航结果,但与 Web 规划线仍存在轻微偏差';\n } else {\n ExpoGaodeMapNavigationModule.clearIndependentRoute({\n token: directIndependentResult.token,\n }).catch(() => {});\n evaluation.reason = `${evaluation.reason};最终导航仍需依赖锚点途经点逼近 Web 线路`;\n }\n } catch {\n evaluation.reason = `${evaluation.reason};无途经点重算失败,最终导航仍需依赖锚点途经点`;\n }\n }\n\n let navigationStarted = false;\n if (startNavigation && evaluation.bestMatch && evaluation.mode !== 'preview_only') {\n navigationStarted = await startNaviWithIndependentPath({\n token: independentResult.token,\n naviType,\n routeId: evaluation.bestMatch.routeId,\n routeIndex:\n evaluation.bestMatch.routeId == null ? evaluation.bestMatch.routeIndex : undefined,\n });\n }\n\n return {\n mode: evaluation.mode,\n token: independentResult.token,\n anchorWaypoints,\n webDistance: calculatePathLengthSafe(webPolyline),\n nativeDistance:\n evaluation.nativePolyline.length > 1\n ? calculatePathLengthSafe(evaluation.nativePolyline)\n : undefined,\n selectedRouteId: evaluation.bestMatch?.routeId,\n selectedRouteIndex: evaluation.bestMatch?.routeIndex,\n averageDeviationMeters: evaluation.bestMatch?.averageDeviationMeters,\n maxDeviationMeters: evaluation.bestMatch?.maxDeviationMeters,\n navigationStarted,\n navigationUsesAnchorWaypoints,\n independentResult,\n candidateMatches: evaluation.candidateMatches,\n reason: evaluation.reason,\n };\n}\n\nasync function calculateDriveRouteWithAvoidPreview(\n options: DriveRouteOptions\n): Promise<DriveRouteResult> {\n const { GaodeWebAPI } = await loadWebApiFallback('规避路线预览');\n const api = new GaodeWebAPI();\n const result = await api.route.driving(\n `${options.from.longitude},${options.from.latitude}`,\n `${options.to.longitude},${options.to.latitude}`,\n {\n strategy: normalizeDrivingStrategy(options.strategy),\n waypoints: options.waypoints?.map(\n (point) => `${point.longitude},${point.latitude}`\n ),\n avoidpolygons: normalizeAvoidPolygons(options.avoidPolygons),\n avoidroad: options.avoidRoad?.trim() || undefined,\n plate: options.carNumber,\n show_fields: 'cost,navi,polyline',\n }\n );\n\n return normalizeDrivingRouteResult(options, result);\n}\n\nfunction normalizeTransitRouteResult(\n options: TransitRouteOptions,\n result: any\n): DriveRouteResult {\n // 导航包内部仍保持独立实现;\n // 这里只是在“公交无法由导航 SDK 直算”时,把 Web API 结果映射成现有 RouteResult 形状。\n const routes = (result?.route?.transits ?? []).map((transit: any, index: number) => {\n const polyline = (transit?.segments ?? []).flatMap((segment: any) => [\n ...(segment.walking?.steps?.flatMap((step: any) => parsePolyline(step.polyline)) ?? []),\n ...(segment.bus?.buslines?.flatMap((line: any) => parsePolyline(line.polyline)) ?? []),\n ...(segment.railway?.buslines?.flatMap((line: any) => parsePolyline(line.polyline)) ?? []),\n ]);\n\n return {\n id: index,\n start: options.from,\n end: options.to,\n distance: Number(transit?.distance ?? 0),\n duration: Number(transit?.cost?.duration ?? 0),\n segments: [],\n polyline,\n tollDistance: 0,\n tollCost: Number(transit?.cost?.transit_fee ?? 0),\n strategy: options.strategy,\n };\n });\n\n return {\n count: routes.length,\n mainPathIndex: 0,\n routes,\n };\n}\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 { 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/**\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 */\nexport async function calculateRoute(\n options: RouteOptions\n): Promise<RouteResult | DriveRouteResult> {\n if ('type' in options && options.type === RouteType.TRANSIT) {\n return calculateTransitRoute(options as TransitRouteOptions);\n }\n\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 async function calculateDriveRoute(\n options: DriveRouteOptions\n): Promise<DriveRouteResult> {\n if (shouldUseAvoidPreviewFallback(options)) {\n try {\n return await calculateDriveRouteWithAvoidPreview(options);\n } catch {\n // 若未安装 Web API 包,则保持现有原生逻辑不变。\n // 这样不会破坏当前依赖 Android 反射重载的项目。\n }\n }\n\n return ExpoGaodeMapNavigationModule.calculateDriveRoute(options);\n}\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 * 公交换乘路径规划(运行时 fallback 到 Web API)\n */\nexport async function calculateTransitRoute(options: TransitRouteOptions): Promise<DriveRouteResult> {\n // 运行时按需加载,避免把 navigation 包和 web-api 包在构建期强绑定。\n const { GaodeWebAPI, TransitStrategy } = await loadWebApiFallback('公交路径规划');\n const api = new GaodeWebAPI();\n const result = await api.route.transit(\n `${options.from.longitude},${options.from.latitude}`,\n `${options.to.longitude},${options.to.latitude}`,\n options.city1,\n options.city2,\n {\n strategy: options.strategy ?? TransitStrategy.RECOMMENDED,\n AlternativeRoute: options.alternativeRoute,\n show_fields: 'cost,polyline',\n }\n );\n\n return normalizeTransitRouteResult(options, result);\n}\n\n/**\n * 独立驾车路径规划\n *\n * - 只负责生成独立路径组,不会自动开始导航\n * - 适合路线预览、行前选路、自定义路线选择页\n * - 后续可配合 selectIndependentRoute / startNaviWithIndependentPath 使用\n */\nexport const independentDriveRoute = (options: IndependentDriveRouteOptions) => \n ExpoGaodeMapNavigationModule.independentDriveRoute(options);\n/**\n * 独立货车路径规划\n *\n * - 只负责生成独立路径组,不会自动开始导航\n * - 适合路线预览、行前选路\n */\nexport const independentTruckRoute = (options: IndependentTruckRouteOptions) => \n ExpoGaodeMapNavigationModule.independentTruckRoute(options);\n/**\n * 独立步行路径规划\n *\n * - 只负责生成独立路径组,不会自动开始导航\n * - 适合路线预览、行前选路\n */\nexport const independentWalkRoute = (options: IndependentWalkRouteOptions) => \n ExpoGaodeMapNavigationModule.independentWalkRoute(options);\n\n/**\n * 独立骑行路径规划\n *\n * - 只负责生成独立路径组,不会自动开始导航\n * - 适合路线预览、行前选路\n */\nexport const independentRideRoute = (options: IndependentRideRouteOptions) => \n ExpoGaodeMapNavigationModule.independentRideRoute(options);\n\n/**\n * 独立摩托车路径规划\n *\n * - 只负责生成独立路径组,不会自动开始导航\n * - 适合路线预览、行前选路\n */\nexport const independentMotorcycleRoute = (options: IndependentMotorcycleRouteOptions) => \n ExpoGaodeMapNavigationModule.independentMotorcycleRoute(options);\n\n/**\n * 独立路径组:选主路线\n *\n * - 仅切换 token 对应路径组里的当前主路线\n * - 本身不会开始导航\n */\nexport const selectIndependentRoute = (options: SelectIndependentRouteOptions) => \n ExpoGaodeMapNavigationModule.selectIndependentRoute(options);\n\n/**\n * 独立路径组:使用指定路线启动导航\n *\n * - 这是模块级启动入口,不依赖 ExpoGaodeMapNaviView ref\n * - 适合工具函数、流程封装、非嵌入式页面场景\n * - 若你已经持有嵌入式导航视图 ref,更适合调用 ref.startNavigationWithIndependentPath(...)\n */\nexport const startNaviWithIndependentPath = (options: StartNaviWithIndependentPathOptions) => \n ExpoGaodeMapNavigationModule.startNaviWithIndependentPath(options);\n\n/**\n * 打开高德官方导航页(Android 原生 AmapNaviPage)\n */\nexport const openOfficialNaviPage = (options: OfficialNaviPageOptions) =>\n ExpoGaodeMapNavigationModule.openOfficialNaviPage(options);\n\n/**\n * 独立路径组:清理\n *\n * - 释放 independentXXXRoute 生成的 token 对应缓存\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 TransitRouteOptionsType as 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};\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 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 {\n ExpoGaodeMapNavigationModule,\n}\n"]}
|
|
@@ -8,16 +8,6 @@ declare const helperMethods: {
|
|
|
8
8
|
*/
|
|
9
9
|
initSDK(config: SDKConfig): void;
|
|
10
10
|
isSDKInitialized(): boolean;
|
|
11
|
-
/**
|
|
12
|
-
* 设置是否显示隐私政策弹窗
|
|
13
|
-
* @deprecated 请优先使用 `setPrivacyConfig`
|
|
14
|
-
*/
|
|
15
|
-
setPrivacyShow(hasShow: boolean, hasContainsPrivacy?: boolean): void;
|
|
16
|
-
/**
|
|
17
|
-
* 设置用户是否同意隐私政策
|
|
18
|
-
* @deprecated 请优先使用 `setPrivacyConfig`
|
|
19
|
-
*/
|
|
20
|
-
setPrivacyAgree(hasAgree: boolean): void;
|
|
21
11
|
/**
|
|
22
12
|
* 设置当前隐私协议版本
|
|
23
13
|
* 当版本号变化时,之前的同意状态会失效
|
|
@@ -33,8 +23,6 @@ declare const helperMethods: {
|
|
|
33
23
|
*/
|
|
34
24
|
setPrivacyConfig(config: PrivacyConfig): void;
|
|
35
25
|
getPrivacyStatus(): PrivacyStatus;
|
|
36
|
-
calculateDistanceBetweenPoints(p1: LatLngPoint, p2: LatLngPoint): number;
|
|
37
|
-
calculateDistance(lat1: number, lon1: number, lat2: number, lon2: number): number;
|
|
38
26
|
setLoadWorldVectorMap(enabled: boolean): void;
|
|
39
27
|
getVersion(): string;
|
|
40
28
|
start(): void;
|
|
@@ -80,6 +68,19 @@ declare const helperMethods: {
|
|
|
80
68
|
* @returns 两点之间的距离(单位:米)
|
|
81
69
|
*/
|
|
82
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;
|
|
83
84
|
/**
|
|
84
85
|
* 判断点是否在圆内
|
|
85
86
|
* @param point 要判断的点
|
|
@@ -244,7 +245,8 @@ declare const helperMethods: {
|
|
|
244
245
|
* 获取最近一次 initSDK 的配置
|
|
245
246
|
*/
|
|
246
247
|
export declare function getSDKConfig(): SDKConfig | null;
|
|
247
|
-
|
|
248
|
+
type HiddenNativeMethodName = 'setPrivacyShow' | 'setPrivacyAgree';
|
|
249
|
+
export type ExpoGaodeMapModule = Omit<NativeExpoGaodeMapModule, keyof typeof helperMethods | HiddenNativeMethodName> & typeof helperMethods;
|
|
248
250
|
declare const ExpoGaodeMapModuleWithHelpers: ExpoGaodeMapModule;
|
|
249
251
|
/**
|
|
250
252
|
* 获取用于 Web API 的 webKey(若未初始化或未提供则返回 undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoGaodeMapModule.d.ts","sourceRoot":"","sources":["../../src/map/ExpoGaodeMapModule.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAElG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA0FjG,QAAA,MAAM,aAAa;IAEjB;;;OAGG;oBACa,SAAS,GAAG,IAAI;wBAgCZ,OAAO;IAI3B;;;OAGG
|
|
1
|
+
{"version":3,"file":"ExpoGaodeMapModule.d.ts","sourceRoot":"","sources":["../../src/map/ExpoGaodeMapModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,26 +115,6 @@ const helperMethods = {
|
|
|
115
115
|
isSDKInitialized() {
|
|
116
116
|
return _isSDKInitialized;
|
|
117
117
|
},
|
|
118
|
-
/**
|
|
119
|
-
* 设置是否显示隐私政策弹窗
|
|
120
|
-
* @deprecated 请优先使用 `setPrivacyConfig`
|
|
121
|
-
*/
|
|
122
|
-
setPrivacyShow(hasShow, hasContainsPrivacy) {
|
|
123
|
-
const nativeModule = getNativeModule();
|
|
124
|
-
if (!nativeModule)
|
|
125
|
-
throw ErrorHandler.nativeModuleUnavailable();
|
|
126
|
-
nativeModule.setPrivacyShow(hasShow, hasContainsPrivacy ?? hasShow);
|
|
127
|
-
},
|
|
128
|
-
/**
|
|
129
|
-
* 设置用户是否同意隐私政策
|
|
130
|
-
* @deprecated 请优先使用 `setPrivacyConfig`
|
|
131
|
-
*/
|
|
132
|
-
setPrivacyAgree(hasAgree) {
|
|
133
|
-
const nativeModule = getNativeModule();
|
|
134
|
-
if (!nativeModule)
|
|
135
|
-
throw ErrorHandler.nativeModuleUnavailable();
|
|
136
|
-
nativeModule.setPrivacyAgree(hasAgree);
|
|
137
|
-
},
|
|
138
118
|
/**
|
|
139
119
|
* 设置当前隐私协议版本
|
|
140
120
|
* 当版本号变化时,之前的同意状态会失效
|
|
@@ -162,11 +142,7 @@ const helperMethods = {
|
|
|
162
142
|
const nativeModule = getNativeModule();
|
|
163
143
|
if (!nativeModule)
|
|
164
144
|
throw ErrorHandler.nativeModuleUnavailable();
|
|
165
|
-
|
|
166
|
-
nativeModule.setPrivacyVersion(config.privacyVersion);
|
|
167
|
-
}
|
|
168
|
-
nativeModule.setPrivacyShow(config.hasShow, config.hasContainsPrivacy ?? config.hasShow);
|
|
169
|
-
nativeModule.setPrivacyAgree(config.hasAgree);
|
|
145
|
+
nativeModule.setPrivacyConfig(config);
|
|
170
146
|
},
|
|
171
147
|
getPrivacyStatus() {
|
|
172
148
|
const nativeModule = getNativeModule();
|
|
@@ -183,20 +159,6 @@ const helperMethods = {
|
|
|
183
159
|
}
|
|
184
160
|
return nativeModule.getPrivacyStatus();
|
|
185
161
|
},
|
|
186
|
-
calculateDistanceBetweenPoints(p1, p2) {
|
|
187
|
-
const nativeModule = getNativeModule();
|
|
188
|
-
if (!nativeModule) {
|
|
189
|
-
throw ErrorHandler.nativeModuleUnavailable();
|
|
190
|
-
}
|
|
191
|
-
return nativeModule.distanceBetweenCoordinates(normalizeLatLng(p1), normalizeLatLng(p2));
|
|
192
|
-
},
|
|
193
|
-
calculateDistance(lat1, lon1, lat2, lon2) {
|
|
194
|
-
const nativeModule = getNativeModule();
|
|
195
|
-
if (!nativeModule) {
|
|
196
|
-
throw ErrorHandler.nativeModuleUnavailable();
|
|
197
|
-
}
|
|
198
|
-
return nativeModule.distanceBetweenCoordinates({ latitude: lat1, longitude: lon1 }, { latitude: lat2, longitude: lon2 });
|
|
199
|
-
},
|
|
200
162
|
setLoadWorldVectorMap(enabled) {
|
|
201
163
|
const nativeModule = getNativeModule(true);
|
|
202
164
|
if (!nativeModule)
|
|
@@ -444,6 +406,29 @@ const helperMethods = {
|
|
|
444
406
|
throw ErrorHandler.wrapNativeError(error, '计算距离');
|
|
445
407
|
}
|
|
446
408
|
},
|
|
409
|
+
/**
|
|
410
|
+
* 根据多个坐标点计算可同时可见的推荐缩放级别
|
|
411
|
+
* @param points 坐标点集合(至少 1 个)
|
|
412
|
+
* @param options 视口与缩放边界选项
|
|
413
|
+
* @returns 推荐 zoom
|
|
414
|
+
*/
|
|
415
|
+
calculateFitZoom(points, options = {}) {
|
|
416
|
+
if (!nativeModule) {
|
|
417
|
+
throw ErrorHandler.nativeModuleUnavailable();
|
|
418
|
+
}
|
|
419
|
+
const normalized = normalizeLatLngList(points);
|
|
420
|
+
const minZoom = options.minZoom ?? 3;
|
|
421
|
+
const maxZoom = options.maxZoom ?? 20;
|
|
422
|
+
if (normalized.length === 0) {
|
|
423
|
+
return minZoom;
|
|
424
|
+
}
|
|
425
|
+
try {
|
|
426
|
+
return nativeModule.calculateFitZoom(normalized, options.viewportWidthPx ?? 390, options.viewportHeightPx ?? 844, options.paddingPx ?? 48, minZoom, maxZoom);
|
|
427
|
+
}
|
|
428
|
+
catch (error) {
|
|
429
|
+
throw ErrorHandler.wrapNativeError(error, '计算拟合缩放级别');
|
|
430
|
+
}
|
|
431
|
+
},
|
|
447
432
|
/**
|
|
448
433
|
* 判断点是否在圆内
|
|
449
434
|
* @param point 要判断的点
|
|
@@ -780,11 +765,18 @@ export function getSDKConfig() {
|
|
|
780
765
|
return _sdkConfig;
|
|
781
766
|
}
|
|
782
767
|
;
|
|
768
|
+
const hiddenNativeMethodNames = new Set([
|
|
769
|
+
'setPrivacyShow',
|
|
770
|
+
'setPrivacyAgree',
|
|
771
|
+
]);
|
|
783
772
|
const ExpoGaodeMapModuleWithHelpers = new Proxy(helperMethods, {
|
|
784
773
|
get(target, prop, receiver) {
|
|
785
774
|
if (Reflect.has(target, prop)) {
|
|
786
775
|
return Reflect.get(target, prop, receiver);
|
|
787
776
|
}
|
|
777
|
+
if (hiddenNativeMethodNames.has(prop)) {
|
|
778
|
+
return undefined;
|
|
779
|
+
}
|
|
788
780
|
const nativeModule = getNativeModule(true);
|
|
789
781
|
if (!nativeModule) {
|
|
790
782
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoGaodeMapModule.js","sourceRoot":"","sources":["../../src/map/ExpoGaodeMapModule.ts"],"names":[],"mappings":"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","sourcesContent":["import { requireNativeModule } from 'expo';\nimport { Platform } from 'react-native';\n\nimport {\n LatLng,\n Coordinates,\n ReGeocode,\n LocationListener,\n LatLngPoint,\n CoordinateType,\n} from './types';\nimport type { ExpoGaodeMapModule as NativeExpoGaodeMapModule } from './types/native-module.types';\nimport { ErrorHandler, ErrorLogger } from './utils/ErrorHandler';\nimport { PrivacyConfig, PrivacyStatus, SDKConfig, PermissionStatus } from './types/common.types';\nimport { normalizeLatLng, normalizeLatLngList } from './utils/GeoUtils';\n\nlet nativeModuleCache: NativeExpoGaodeMapModule | null = null;\n\nfunction getNativeModule(optional = false): NativeExpoGaodeMapModule | null {\n if (nativeModuleCache) {\n return nativeModuleCache;\n }\n\n try {\n nativeModuleCache = requireNativeModule<NativeExpoGaodeMapModule>('ExpoGaodeMap');\n return nativeModuleCache;\n } catch (error) {\n if (optional) {\n return null;\n }\n const moduleError = ErrorHandler.nativeModuleUnavailable();\n ErrorLogger.log(moduleError);\n throw moduleError;\n }\n}\n\nfunction getBoundNativeValue(\n module: NativeExpoGaodeMapModule,\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\nconst nativeModule = new Proxy({} as NativeExpoGaodeMapModule, {\n get(_target, prop) {\n const module = getNativeModule(true);\n return module ? getBoundNativeValue(module, prop) : undefined;\n },\n});\n\n// 记录最近一次 initSDK 的配置(含 webKey)\nlet _sdkConfig: SDKConfig | null = null;\nlet _isSDKInitialized = false;\n\nconst privacySensitiveMethodNames = new Set<string>([\n 'start',\n 'stop',\n 'isStarted',\n 'getCurrentLocation',\n 'coordinateConvert',\n 'setLocatingWithReGeocode',\n 'setLocationMode',\n 'setInterval',\n 'setOnceLocation',\n 'setSensorEnable',\n 'setWifiScan',\n 'setGpsFirst',\n 'setOnceLocationLatest',\n 'setGeoLanguage',\n 'setLocationCacheEnable',\n 'setHttpTimeOut',\n 'setDesiredAccuracy',\n 'setLocationTimeout',\n 'setReGeocodeTimeout',\n 'setDistanceFilter',\n 'setPausesLocationUpdatesAutomatically',\n 'setAllowsBackgroundLocationUpdates',\n 'setLocationProtocol',\n 'startUpdatingHeading',\n 'stopUpdatingHeading',\n 'checkLocationPermission',\n 'requestLocationPermission',\n 'requestBackgroundLocationPermission',\n 'addLocationListener',\n]);\n\nfunction assertPrivacyReady(scene: 'map' | 'sdk' = 'sdk'): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n const status = nativeModule.getPrivacyStatus();\n if (!status.isReady) {\n throw ErrorHandler.privacyNotAgreed(scene);\n }\n}\n\n// 扩展原生模块,添加便捷方法\nconst helperMethods = {\n\n /**\n * 初始化 SDK,并缓存配置(包含 webKey)\n * 注意:允许不提供任何 API Key,因为原生端可能已通过 Config Plugin 配置\n */\n initSDK(config: SDKConfig): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n try {\n\n // 检查是否有任何 key 被提供\n const hasJSKeys = !!(config.androidKey || config.iosKey);\n const hasWebKey = !!config.webKey;\n // 如果 JS 端没有提供 androidKey/iosKey,检查原生端是否已配置\n if (!hasJSKeys) {\n const isNativeConfigured = nativeModule.isNativeSDKConfigured();\n if (!isNativeConfigured && !hasWebKey){\n throw ErrorHandler.invalidApiKey('both');\n }\n // 如果原生已配置,或者只提供了 webKey,继续初始化\n ErrorLogger.warn(\n isNativeConfigured \n ? 'SDK 使用原生端配置的 API Key' \n : 'SDK 初始化仅使用 webKey',\n { config }\n );\n }\n _sdkConfig = config ?? null;\n nativeModule.initSDK(config);\n _isSDKInitialized = true;\n ErrorLogger.warn('SDK 初始化成功', { config });\n } catch (error) {\n _isSDKInitialized = false;\n throw ErrorHandler.wrapNativeError(error, 'SDK 初始化');\n }\n },\n\n isSDKInitialized(): boolean {\n return _isSDKInitialized;\n },\n\n /**\n * 设置是否显示隐私政策弹窗\n * @deprecated 请优先使用 `setPrivacyConfig`\n */\n setPrivacyShow(hasShow: boolean, hasContainsPrivacy?: boolean): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n nativeModule.setPrivacyShow(hasShow, hasContainsPrivacy ?? hasShow);\n },\n\n /**\n * 设置用户是否同意隐私政策\n * @deprecated 请优先使用 `setPrivacyConfig`\n */\n setPrivacyAgree(hasAgree: boolean): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n nativeModule.setPrivacyAgree(hasAgree);\n },\n\n /**\n * 设置当前隐私协议版本\n * 当版本号变化时,之前的同意状态会失效\n */\n setPrivacyVersion(version: string): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n nativeModule.setPrivacyVersion(version);\n },\n\n /**\n * 清空已持久化的隐私同意状态\n */\n resetPrivacyConsent(): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n nativeModule.resetPrivacyConsent();\n },\n\n /**\n * 一次性同步完整的隐私状态\n * 推荐业务层只调用这个方法\n */\n setPrivacyConfig(config: PrivacyConfig): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n if (typeof config.privacyVersion === 'string') {\n nativeModule.setPrivacyVersion(config.privacyVersion);\n }\n nativeModule.setPrivacyShow(\n config.hasShow,\n config.hasContainsPrivacy ?? config.hasShow\n );\n nativeModule.setPrivacyAgree(config.hasAgree);\n },\n\n getPrivacyStatus(): PrivacyStatus {\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n return {\n hasShow: false,\n hasContainsPrivacy: false,\n hasAgree: false,\n isReady: false,\n privacyVersion: null,\n agreedPrivacyVersion: null,\n restoredFromStorage: false,\n };\n }\n return nativeModule.getPrivacyStatus();\n },\n\n calculateDistanceBetweenPoints(p1: LatLngPoint, p2: LatLngPoint): number {\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n return nativeModule.distanceBetweenCoordinates(\n normalizeLatLng(p1),\n normalizeLatLng(p2)\n );\n },\n\n calculateDistance(lat1: number, lon1: number, lat2: number, lon2: number): number {\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n return nativeModule.distanceBetweenCoordinates(\n { latitude: lat1, longitude: lon1 },\n { latitude: lat2, longitude: lon2 }\n );\n },\n\n setLoadWorldVectorMap(enabled: boolean): void {\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return;\n try {\n nativeModule.setLoadWorldVectorMap(enabled);\n } catch (error) {\n ErrorLogger.warn('setLoadWorldVectorMap 失败', { enabled, error });\n }\n },\n\n getVersion(): string {\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return '0.0.0';\n try {\n return nativeModule.getVersion();\n } catch (error) {\n ErrorLogger.warn('getVersion 失败', { error });\n return '0.0.0';\n }\n },\n\n start(): void {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return;\n try {\n nativeModule.start();\n } catch (error) {\n ErrorLogger.warn('start 失败', { error });\n }\n },\n\n stop(): void {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return;\n try {\n nativeModule.stop();\n } catch (error) {\n ErrorLogger.warn('stop 失败', { error });\n }\n },\n\n isStarted(): Promise<boolean> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return Promise.resolve(false);\n try {\n return nativeModule.isStarted();\n } catch (error) {\n ErrorLogger.warn('isStarted 失败', { error });\n return Promise.resolve(false);\n }\n },\n\n async getCurrentLocation(): Promise<Coordinates | ReGeocode> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return await nativeModule.getCurrentLocation();\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '获取当前位置');\n }\n },\n\n async coordinateConvert(coordinate: LatLngPoint, type: CoordinateType): Promise<LatLng> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return await nativeModule.coordinateConvert(normalizeLatLng(coordinate), type);\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '坐标转换');\n }\n },\n\n setLocatingWithReGeocode(isReGeocode: boolean): void {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return;\n try {\n nativeModule.setLocatingWithReGeocode(isReGeocode);\n } catch (error) {\n ErrorLogger.warn('setLocatingWithReGeocode 失败', { isReGeocode, error });\n }\n },\n\n get isBackgroundLocationEnabled(): boolean {\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return false;\n return nativeModule.isBackgroundLocationEnabled === true;\n },\n\n /**\n * 检查位置权限状态\n */\n async checkLocationPermission(): Promise<PermissionStatus> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return await nativeModule.checkLocationPermission();\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '检查权限');\n }\n },\n\n /**\n * 请求前台位置权限(增强版)\n */\n async requestLocationPermission(): Promise<PermissionStatus> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n const result = await nativeModule.requestLocationPermission();\n if (!result.granted) {\n ErrorLogger.warn('前台位置权限未授予', result);\n }\n return result;\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '请求前台权限');\n }\n },\n\n /**\n * 请求后台位置权限\n * 注意:必须在前台权限已授予后才能请求\n */\n async requestBackgroundLocationPermission(): Promise<PermissionStatus> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n const result = await nativeModule.requestBackgroundLocationPermission();\n if (!result.granted) {\n ErrorLogger.warn('后台位置权限未授予', result);\n }\n return result;\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '请求后台权限');\n }\n },\n\n /**\n * 打开应用设置页面\n * 引导用户手动授予权限\n */\n openAppSettings(): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n nativeModule.openAppSettings();\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '打开设置');\n }\n },\n\n setAllowsBackgroundLocationUpdates(allows: boolean): void {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n\n if (\n Platform.OS === 'ios' &&\n allows &&\n nativeModule &&\n nativeModule.isBackgroundLocationEnabled === false\n ) {\n ErrorLogger.warn(\n '⚠️ [ExpoGaodeMap] iOS 后台定位未正确配置,setAllowsBackgroundLocationUpdates(true) 可能不会生效,请检查 Info.plist 是否包含 UIBackgroundModes: location,或者在 app.json 中配置 enableBackgroundLocation: true,然后重新执行 npx expo prebuild',\n );\n }\n\n if (\n Platform.OS === 'android' &&\n allows &&\n nativeModule &&\n nativeModule.checkLocationPermission\n ) {\n nativeModule\n .checkLocationPermission()\n .then((status: PermissionStatus) => {\n if (!status.backgroundLocation) {\n ErrorLogger.warn(\n '⚠️ [ExpoGaodeMap] Android 后台位置权限未授予,setAllowsBackgroundLocationUpdates(true) 可能不会生效,请先通过 requestBackgroundLocationPermission 或系统设置授予后台定位权限,或者检查是否在 app.json 中配置了 enableBackgroundLocation: true,然后重新执行 npx expo prebuild',\n );\n }\n })\n .catch(() => {\n // 忽略检查失败,只影响日志,不影响功能\n });\n }\n\n nativeModule.setAllowsBackgroundLocationUpdates(allows);\n },\n\n /**\n * 添加定位监听器(便捷方法)\n * 自动订阅 onLocationUpdate 事件,提供容错处理\n * @param listener 定位回调函数\n * @returns 订阅对象,调用 remove() 取消监听\n * 注意:如果使用 Config Plugin 配置了 API Key,无需调用 initSDK()\n */\n addLocationListener(listener: LocationListener): { remove: () => void } {\n assertPrivacyReady('sdk');\n const module = getNativeModule();\n if (!module) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n if (!module.addListener) {\n ErrorLogger.warn('Native module does not support events');\n return {\n remove: () => { },\n };\n }\n\n return module.addListener('onLocationUpdate', listener) || {\n remove: () => { },\n };\n },\n\n // ==================== 几何计算方法 ====================\n\n /**\n * 计算两个坐标点之间的距离\n * @param coordinate1 第一个坐标点\n * @param coordinate2 第二个坐标点\n * @returns 两点之间的距离(单位:米)\n */\n distanceBetweenCoordinates(coordinate1: LatLngPoint, coordinate2: LatLngPoint): number {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.distanceBetweenCoordinates(\n normalizeLatLng(coordinate1),\n normalizeLatLng(coordinate2)\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '计算距离');\n }\n },\n\n /**\n * 判断点是否在圆内\n * @param point 要判断的点\n * @param center 圆心坐标\n * @param radius 圆半径(单位:米)\n * @returns 是否在圆内\n */\n isPointInCircle(point: LatLngPoint, center: LatLngPoint, radius: number): boolean {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.isPointInCircle(\n normalizeLatLng(point),\n normalizeLatLng(center),\n radius\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '判断点是否在圆内');\n }\n },\n\n /**\n * 判断点是否在多边形内\n * @param point 要判断的点\n * @param polygon 多边形的顶点坐标数组,支持嵌套数组(多边形空洞)\n * @returns 是否在多边形内\n */\n isPointInPolygon(point: LatLngPoint, polygon: LatLngPoint[] | LatLngPoint[][]): boolean {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.isPointInPolygon(\n normalizeLatLng(point),\n normalizeLatLngList(polygon)\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '判断点是否在多边形内');\n }\n },\n\n /**\n * 计算多边形面积\n * @param polygon 多边形的顶点坐标数组,支持嵌套数组(多边形空洞)\n * @returns 面积(单位:平方米)\n */\n calculatePolygonArea(polygon: LatLngPoint[] | LatLngPoint[][]): number {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.calculatePolygonArea(normalizeLatLngList(polygon));\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '计算多边形面积');\n }\n },\n\n /**\n * 计算矩形面积\n * @param southWest 西南角坐标\n * @param northEast 东北角坐标\n * @returns 面积(单位:平方米)\n */\n calculateRectangleArea(southWest: LatLngPoint, northEast: LatLngPoint): number {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.calculateRectangleArea(\n normalizeLatLng(southWest),\n normalizeLatLng(northEast)\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '计算矩形面积');\n }\n },\n\n /**\n * 获取路径上距离目标点最近的点\n * @param path 路径点集合\n * @param target 目标点\n * @returns 最近点信息,包含坐标、索引和距离\n */\n getNearestPointOnPath(path: LatLngPoint[], target: LatLngPoint): {\n latitude: number;\n longitude: number;\n index: number;\n distanceMeters: number;\n } | null {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.getNearestPointOnPath(\n normalizeLatLngList(path),\n normalizeLatLng(target)\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '获取最近点');\n }\n },\n\n /**\n * 计算多边形质心\n * @param polygon 多边形顶点坐标数组\n * @returns 质心坐标\n */\n calculateCentroid(polygon: LatLngPoint[]): LatLng | null {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.calculateCentroid(normalizeLatLngList(polygon));\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '计算质心');\n }\n },\n\n /**\n * 计算路径边界和中心点\n * @param points 路径点集合\n * @returns 边界信息,包含 north, south, east, west 和 center\n */\n calculatePathBounds(points: LatLngPoint[]): {\n north: number;\n south: number;\n east: number;\n west: number;\n center: LatLngPoint;\n } | null {\n if (!nativeModule) return null;\n try {\n const normalized = normalizeLatLngList(points);\n if (normalized.length === 0) return null;\n return nativeModule.calculatePathBounds(normalized);\n } catch (error) {\n ErrorLogger.warn('calculatePathBounds 失败', { pointsCount: points.length, error });\n return null;\n }\n },\n\n /**\n * GeoHash 编码\n * @param coordinate 坐标点\n * @param precision 精度 (1-12)\n * @returns GeoHash 字符串\n */\n encodeGeoHash(coordinate: LatLngPoint, precision: number): string {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.encodeGeoHash(normalizeLatLng(coordinate), precision);\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, 'GeoHash 编码');\n }\n },\n\n /**\n * 轨迹抽稀 (RDP 算法)\n * @param points 原始轨迹点\n * @param tolerance 允许误差(米)\n * @returns 简化后的轨迹点\n */\n simplifyPolyline(points: LatLngPoint[], tolerance: number): LatLng[] {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.simplifyPolyline(normalizeLatLngList(points), tolerance);\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '轨迹抽稀');\n }\n },\n\n /**\n * 计算路径总长度\n * @param points 路径点\n * @returns 长度(米)\n */\n calculatePathLength(points: LatLngPoint[]): number {\n if (!nativeModule) return 0;\n try {\n return nativeModule.calculatePathLength(normalizeLatLngList(points));\n } catch (error) {\n ErrorLogger.warn('calculatePathLength 失败', { pointsCount: points.length, error });\n return 0;\n }\n },\n\n /**\n * 解析高德地图 API 返回的 Polyline 字符串\n * 格式: \"lng,lat;lng,lat;...\"\n * @param polylineStr 高德原始 polyline 字符串,或包含 polyline 属性的对象\n * @returns 解析后的点集\n */\n parsePolyline(polylineStr: string | { polyline: string }): LatLng[] {\n if (!nativeModule || !polylineStr) return [];\n try {\n // 兼容性处理:如果传入的是对象 { polyline: '...' },自动提取字符串\n let finalStr: string = '';\n if (typeof polylineStr === 'object' && polylineStr !== null && 'polyline' in polylineStr) {\n finalStr = polylineStr.polyline || '';\n } else if (typeof polylineStr === 'string') {\n finalStr = polylineStr;\n }\n\n if (!finalStr) return [];\n return nativeModule.parsePolyline(finalStr);\n } catch (error) {\n ErrorLogger.warn('解析 Polyline 失败', { polylineStr, error });\n return [];\n }\n },\n\n /**\n * 获取路径上指定距离的点\n * @param points 路径点\n * @param distance 距离起点的米数\n * @returns 点信息(坐标+角度)\n */\n getPointAtDistance(points: LatLngPoint[], distance: number): {\n latitude: number;\n longitude: number;\n angle: number;\n } | null {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.getPointAtDistance(normalizeLatLngList(points), distance);\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '获取路径上的点');\n }\n },\n\n /**\n * 经纬度转换为地图瓦片坐标\n * @param coordinate 经纬度点\n * @param zoom 缩放级别\n * @returns 瓦片坐标(x, y, z)\n */\n latLngToTile(coordinate: LatLngPoint, zoom: number): { x: number; y: number; z: number } | null {\n if (!nativeModule) return null;\n try {\n return nativeModule.latLngToTile(normalizeLatLng(coordinate), zoom);\n } catch (error) {\n ErrorLogger.warn('latLngToTile 失败', { coordinate, zoom, error });\n return null;\n }\n },\n\n /**\n * 地图瓦片坐标转换为经纬度\n * @param tile 瓦片坐标(x, y, z)\n * @returns 经纬度点\n */\n tileToLatLng(tile: { x: number; y: number; z: number }): LatLng | null {\n if (!nativeModule) return null;\n try {\n return nativeModule.tileToLatLng(tile);\n } catch (error) {\n ErrorLogger.warn('tileToLatLng 失败', { tile, error });\n return null;\n }\n },\n\n /**\n * 经纬度转换为地图像素坐标\n * @param coordinate 经纬度点\n * @param zoom 缩放级别\n * @returns 像素坐标(x, y)\n */\n latLngToPixel(coordinate: LatLngPoint, zoom: number): { x: number; y: number } | null {\n if (!nativeModule) return null;\n try {\n return nativeModule.latLngToPixel(normalizeLatLng(coordinate), zoom);\n } catch (error) {\n ErrorLogger.warn('latLngToPixel 失败', { coordinate, zoom, error });\n return null;\n }\n },\n\n /**\n * 地图像素坐标转换为经纬度\n * @param pixel 像素坐标(x, y)\n * @param zoom 缩放级别\n * @returns 经纬度点\n */\n pixelToLatLng(pixel: { x: number; y: number }, zoom: number): LatLng | null {\n if (!nativeModule) return null;\n try {\n return nativeModule.pixelToLatLng(pixel, zoom);\n } catch (error) {\n ErrorLogger.warn('pixelToLatLng 失败', { pixel, zoom, error });\n return null;\n }\n },\n\n /**\n * 批量地理围栏检测\n * @param point 待检查的点\n * @param polygons 多边形数组,格式为 LatLngPoint[][] 或 LatLngPoint[][][]\n * @returns 包含点索引的数组(-1 表示不在任何多边形内)\n */\n findPointInPolygons(point: LatLngPoint, polygons: LatLngPoint[][] | LatLngPoint[][][]): number {\n if (!nativeModule) return -1;\n try {\n const normalizedPoint = normalizeLatLng(point);\n\n // 处理三维数组 (LatLngPoint[][][]) 和二维数组 (LatLngPoint[][])\n if (Array.isArray(polygons[0]) && Array.isArray(polygons[0][0])) {\n const normalizedMultiPolygons = (polygons as LatLngPoint[][][]).map((polygonRings) =>\n normalizeLatLngList(polygonRings)\n );\n\n for (let index = 0; index < normalizedMultiPolygons.length; index += 1) {\n if (nativeModule.isPointInPolygon(normalizedPoint, normalizedMultiPolygons[index])) {\n return index;\n }\n }\n\n return -1;\n }\n\n const normalizedPolygons = polygons as LatLngPoint[][];\n const processedPolygons = normalizedPolygons.map(p => normalizeLatLngList(p));\n return nativeModule.findPointInPolygons(normalizedPoint, processedPolygons);\n } catch (error) {\n ErrorLogger.warn('findPointInPolygons 失败', { point, error });\n return -1;\n }\n },\n\n /**\n * 生成网格聚合数据 (常用于展示网格聚合图或大规模点数据处理)\n * @param points 包含经纬度和权重的点数组\n * @param gridSizeMeters 网格大小(米)\n * @returns 包含经纬度和强度的网格点数组\n */\n generateHeatmapGrid(\n points: Array<LatLngPoint & { weight?: number }>,\n gridSizeMeters: number\n ): Array<{ latitude: number; longitude: number; intensity: number }> {\n if (!nativeModule || points.length === 0) return [];\n try {\n return nativeModule.generateHeatmapGrid(points, gridSizeMeters);\n } catch (error) {\n ErrorLogger.warn('generateHeatmapGrid 失败', { pointsCount: points.length, gridSizeMeters, error });\n return [];\n }\n },\n};\n\n/**\n* 获取最近一次 initSDK 的配置\n*/\nexport function getSDKConfig(): SDKConfig | null {\n return _sdkConfig;\n};\n\nexport type ExpoGaodeMapModule =\n Omit<NativeExpoGaodeMapModule, keyof typeof helperMethods> & typeof helperMethods;\n\nconst ExpoGaodeMapModuleWithHelpers = new Proxy(helperMethods, {\n get(target, prop, receiver) {\n if (Reflect.has(target, prop)) {\n return Reflect.get(target, prop, receiver);\n }\n const nativeModule = getNativeModule(true);\n if (!nativeModule) {\n return undefined;\n }\n\n const value = Reflect.get(nativeModule as object, prop, nativeModule as object);\n if (\n typeof prop === 'string' &&\n privacySensitiveMethodNames.has(prop) &&\n typeof value === 'function'\n ) {\n return (...args: unknown[]) => {\n assertPrivacyReady('sdk');\n return (value as (...fnArgs: unknown[]) => unknown).apply(nativeModule, args);\n };\n }\n\n return getBoundNativeValue(nativeModule, prop);\n },\n}) as ExpoGaodeMapModule;\n\n/**\n* 获取用于 Web API 的 webKey(若未初始化或未提供则返回 undefined)\n*/\nexport function getWebKey(): string | undefined {\n return _sdkConfig?.webKey;\n}\n\nexport default ExpoGaodeMapModuleWithHelpers;\n"]}
|
|
1
|
+
{"version":3,"file":"ExpoGaodeMapModule.js","sourceRoot":"","sources":["../../src/map/ExpoGaodeMapModule.ts"],"names":[],"mappings":"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","sourcesContent":["import { requireNativeModule } from 'expo';\nimport { Platform } from 'react-native';\n\nimport {\n LatLng,\n Coordinates,\n ReGeocode,\n LocationListener,\n LatLngPoint,\n CoordinateType,\n} from './types';\nimport type { ExpoGaodeMapModule as NativeExpoGaodeMapModule } from './types/native-module.types';\nimport { ErrorHandler, ErrorLogger } from './utils/ErrorHandler';\nimport { PrivacyConfig, PrivacyStatus, SDKConfig, PermissionStatus } from './types/common.types';\nimport { normalizeLatLng, normalizeLatLngList } from './utils/GeoUtils';\n\nlet nativeModuleCache: NativeExpoGaodeMapModule | null = null;\n\nfunction getNativeModule(optional = false): NativeExpoGaodeMapModule | null {\n if (nativeModuleCache) {\n return nativeModuleCache;\n }\n\n try {\n nativeModuleCache = requireNativeModule<NativeExpoGaodeMapModule>('ExpoGaodeMap');\n return nativeModuleCache;\n } catch (error) {\n if (optional) {\n return null;\n }\n const moduleError = ErrorHandler.nativeModuleUnavailable();\n ErrorLogger.log(moduleError);\n throw moduleError;\n }\n}\n\nfunction getBoundNativeValue(\n module: NativeExpoGaodeMapModule,\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\nconst nativeModule = new Proxy({} as NativeExpoGaodeMapModule, {\n get(_target, prop) {\n const module = getNativeModule(true);\n return module ? getBoundNativeValue(module, prop) : undefined;\n },\n});\n\n// 记录最近一次 initSDK 的配置(含 webKey)\nlet _sdkConfig: SDKConfig | null = null;\nlet _isSDKInitialized = false;\n\nconst privacySensitiveMethodNames = new Set<string>([\n 'start',\n 'stop',\n 'isStarted',\n 'getCurrentLocation',\n 'coordinateConvert',\n 'setLocatingWithReGeocode',\n 'setLocationMode',\n 'setInterval',\n 'setOnceLocation',\n 'setSensorEnable',\n 'setWifiScan',\n 'setGpsFirst',\n 'setOnceLocationLatest',\n 'setGeoLanguage',\n 'setLocationCacheEnable',\n 'setHttpTimeOut',\n 'setDesiredAccuracy',\n 'setLocationTimeout',\n 'setReGeocodeTimeout',\n 'setDistanceFilter',\n 'setPausesLocationUpdatesAutomatically',\n 'setAllowsBackgroundLocationUpdates',\n 'setLocationProtocol',\n 'startUpdatingHeading',\n 'stopUpdatingHeading',\n 'checkLocationPermission',\n 'requestLocationPermission',\n 'requestBackgroundLocationPermission',\n 'addLocationListener',\n]);\n\nfunction assertPrivacyReady(scene: 'map' | 'sdk' = 'sdk'): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n const status = nativeModule.getPrivacyStatus();\n if (!status.isReady) {\n throw ErrorHandler.privacyNotAgreed(scene);\n }\n}\n\n// 扩展原生模块,添加便捷方法\nconst helperMethods = {\n\n /**\n * 初始化 SDK,并缓存配置(包含 webKey)\n * 注意:允许不提供任何 API Key,因为原生端可能已通过 Config Plugin 配置\n */\n initSDK(config: SDKConfig): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n try {\n\n // 检查是否有任何 key 被提供\n const hasJSKeys = !!(config.androidKey || config.iosKey);\n const hasWebKey = !!config.webKey;\n // 如果 JS 端没有提供 androidKey/iosKey,检查原生端是否已配置\n if (!hasJSKeys) {\n const isNativeConfigured = nativeModule.isNativeSDKConfigured();\n if (!isNativeConfigured && !hasWebKey){\n throw ErrorHandler.invalidApiKey('both');\n }\n // 如果原生已配置,或者只提供了 webKey,继续初始化\n ErrorLogger.warn(\n isNativeConfigured \n ? 'SDK 使用原生端配置的 API Key' \n : 'SDK 初始化仅使用 webKey',\n { config }\n );\n }\n _sdkConfig = config ?? null;\n nativeModule.initSDK(config);\n _isSDKInitialized = true;\n ErrorLogger.warn('SDK 初始化成功', { config });\n } catch (error) {\n _isSDKInitialized = false;\n throw ErrorHandler.wrapNativeError(error, 'SDK 初始化');\n }\n },\n\n isSDKInitialized(): boolean {\n return _isSDKInitialized;\n },\n\n /**\n * 设置当前隐私协议版本\n * 当版本号变化时,之前的同意状态会失效\n */\n setPrivacyVersion(version: string): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n nativeModule.setPrivacyVersion(version);\n },\n\n /**\n * 清空已持久化的隐私同意状态\n */\n resetPrivacyConsent(): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n nativeModule.resetPrivacyConsent();\n },\n\n /**\n * 一次性同步完整的隐私状态\n * 推荐业务层只调用这个方法\n */\n setPrivacyConfig(config: PrivacyConfig): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) throw ErrorHandler.nativeModuleUnavailable();\n nativeModule.setPrivacyConfig(config);\n },\n\n getPrivacyStatus(): PrivacyStatus {\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n return {\n hasShow: false,\n hasContainsPrivacy: false,\n hasAgree: false,\n isReady: false,\n privacyVersion: null,\n agreedPrivacyVersion: null,\n restoredFromStorage: false,\n };\n }\n return nativeModule.getPrivacyStatus();\n },\n\n setLoadWorldVectorMap(enabled: boolean): void {\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return;\n try {\n nativeModule.setLoadWorldVectorMap(enabled);\n } catch (error) {\n ErrorLogger.warn('setLoadWorldVectorMap 失败', { enabled, error });\n }\n },\n\n getVersion(): string {\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return '0.0.0';\n try {\n return nativeModule.getVersion();\n } catch (error) {\n ErrorLogger.warn('getVersion 失败', { error });\n return '0.0.0';\n }\n },\n\n start(): void {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return;\n try {\n nativeModule.start();\n } catch (error) {\n ErrorLogger.warn('start 失败', { error });\n }\n },\n\n stop(): void {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return;\n try {\n nativeModule.stop();\n } catch (error) {\n ErrorLogger.warn('stop 失败', { error });\n }\n },\n\n isStarted(): Promise<boolean> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return Promise.resolve(false);\n try {\n return nativeModule.isStarted();\n } catch (error) {\n ErrorLogger.warn('isStarted 失败', { error });\n return Promise.resolve(false);\n }\n },\n\n async getCurrentLocation(): Promise<Coordinates | ReGeocode> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return await nativeModule.getCurrentLocation();\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '获取当前位置');\n }\n },\n\n async coordinateConvert(coordinate: LatLngPoint, type: CoordinateType): Promise<LatLng> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return await nativeModule.coordinateConvert(normalizeLatLng(coordinate), type);\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '坐标转换');\n }\n },\n\n setLocatingWithReGeocode(isReGeocode: boolean): void {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return;\n try {\n nativeModule.setLocatingWithReGeocode(isReGeocode);\n } catch (error) {\n ErrorLogger.warn('setLocatingWithReGeocode 失败', { isReGeocode, error });\n }\n },\n\n get isBackgroundLocationEnabled(): boolean {\n const nativeModule = getNativeModule(true);\n if (!nativeModule) return false;\n return nativeModule.isBackgroundLocationEnabled === true;\n },\n\n /**\n * 检查位置权限状态\n */\n async checkLocationPermission(): Promise<PermissionStatus> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return await nativeModule.checkLocationPermission();\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '检查权限');\n }\n },\n\n /**\n * 请求前台位置权限(增强版)\n */\n async requestLocationPermission(): Promise<PermissionStatus> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n const result = await nativeModule.requestLocationPermission();\n if (!result.granted) {\n ErrorLogger.warn('前台位置权限未授予', result);\n }\n return result;\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '请求前台权限');\n }\n },\n\n /**\n * 请求后台位置权限\n * 注意:必须在前台权限已授予后才能请求\n */\n async requestBackgroundLocationPermission(): Promise<PermissionStatus> {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n const result = await nativeModule.requestBackgroundLocationPermission();\n if (!result.granted) {\n ErrorLogger.warn('后台位置权限未授予', result);\n }\n return result;\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '请求后台权限');\n }\n },\n\n /**\n * 打开应用设置页面\n * 引导用户手动授予权限\n */\n openAppSettings(): void {\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n nativeModule.openAppSettings();\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '打开设置');\n }\n },\n\n setAllowsBackgroundLocationUpdates(allows: boolean): void {\n assertPrivacyReady('sdk');\n const nativeModule = getNativeModule();\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n\n if (\n Platform.OS === 'ios' &&\n allows &&\n nativeModule &&\n nativeModule.isBackgroundLocationEnabled === false\n ) {\n ErrorLogger.warn(\n '⚠️ [ExpoGaodeMap] iOS 后台定位未正确配置,setAllowsBackgroundLocationUpdates(true) 可能不会生效,请检查 Info.plist 是否包含 UIBackgroundModes: location,或者在 app.json 中配置 enableBackgroundLocation: true,然后重新执行 npx expo prebuild',\n );\n }\n\n if (\n Platform.OS === 'android' &&\n allows &&\n nativeModule &&\n nativeModule.checkLocationPermission\n ) {\n nativeModule\n .checkLocationPermission()\n .then((status: PermissionStatus) => {\n if (!status.backgroundLocation) {\n ErrorLogger.warn(\n '⚠️ [ExpoGaodeMap] Android 后台位置权限未授予,setAllowsBackgroundLocationUpdates(true) 可能不会生效,请先通过 requestBackgroundLocationPermission 或系统设置授予后台定位权限,或者检查是否在 app.json 中配置了 enableBackgroundLocation: true,然后重新执行 npx expo prebuild',\n );\n }\n })\n .catch(() => {\n // 忽略检查失败,只影响日志,不影响功能\n });\n }\n\n nativeModule.setAllowsBackgroundLocationUpdates(allows);\n },\n\n /**\n * 添加定位监听器(便捷方法)\n * 自动订阅 onLocationUpdate 事件,提供容错处理\n * @param listener 定位回调函数\n * @returns 订阅对象,调用 remove() 取消监听\n * 注意:如果使用 Config Plugin 配置了 API Key,无需调用 initSDK()\n */\n addLocationListener(listener: LocationListener): { remove: () => void } {\n assertPrivacyReady('sdk');\n const module = getNativeModule();\n if (!module) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n if (!module.addListener) {\n ErrorLogger.warn('Native module does not support events');\n return {\n remove: () => { },\n };\n }\n\n return module.addListener('onLocationUpdate', listener) || {\n remove: () => { },\n };\n },\n\n // ==================== 几何计算方法 ====================\n\n /**\n * 计算两个坐标点之间的距离\n * @param coordinate1 第一个坐标点\n * @param coordinate2 第二个坐标点\n * @returns 两点之间的距离(单位:米)\n */\n distanceBetweenCoordinates(coordinate1: LatLngPoint, coordinate2: LatLngPoint): number {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.distanceBetweenCoordinates(\n normalizeLatLng(coordinate1),\n normalizeLatLng(coordinate2)\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '计算距离');\n }\n },\n\n /**\n * 根据多个坐标点计算可同时可见的推荐缩放级别\n * @param points 坐标点集合(至少 1 个)\n * @param options 视口与缩放边界选项\n * @returns 推荐 zoom\n */\n calculateFitZoom(\n points: LatLngPoint[],\n options: {\n viewportWidthPx?: number;\n viewportHeightPx?: number;\n paddingPx?: number;\n minZoom?: number;\n maxZoom?: number;\n } = {}\n ): number {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n\n const normalized = normalizeLatLngList(points);\n const minZoom = options.minZoom ?? 3;\n const maxZoom = options.maxZoom ?? 20;\n if (normalized.length === 0) {\n return minZoom;\n }\n\n try {\n return nativeModule.calculateFitZoom(\n normalized,\n options.viewportWidthPx ?? 390,\n options.viewportHeightPx ?? 844,\n options.paddingPx ?? 48,\n minZoom,\n maxZoom\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '计算拟合缩放级别');\n }\n },\n\n /**\n * 判断点是否在圆内\n * @param point 要判断的点\n * @param center 圆心坐标\n * @param radius 圆半径(单位:米)\n * @returns 是否在圆内\n */\n isPointInCircle(point: LatLngPoint, center: LatLngPoint, radius: number): boolean {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.isPointInCircle(\n normalizeLatLng(point),\n normalizeLatLng(center),\n radius\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '判断点是否在圆内');\n }\n },\n\n /**\n * 判断点是否在多边形内\n * @param point 要判断的点\n * @param polygon 多边形的顶点坐标数组,支持嵌套数组(多边形空洞)\n * @returns 是否在多边形内\n */\n isPointInPolygon(point: LatLngPoint, polygon: LatLngPoint[] | LatLngPoint[][]): boolean {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.isPointInPolygon(\n normalizeLatLng(point),\n normalizeLatLngList(polygon)\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '判断点是否在多边形内');\n }\n },\n\n /**\n * 计算多边形面积\n * @param polygon 多边形的顶点坐标数组,支持嵌套数组(多边形空洞)\n * @returns 面积(单位:平方米)\n */\n calculatePolygonArea(polygon: LatLngPoint[] | LatLngPoint[][]): number {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.calculatePolygonArea(normalizeLatLngList(polygon));\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '计算多边形面积');\n }\n },\n\n /**\n * 计算矩形面积\n * @param southWest 西南角坐标\n * @param northEast 东北角坐标\n * @returns 面积(单位:平方米)\n */\n calculateRectangleArea(southWest: LatLngPoint, northEast: LatLngPoint): number {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.calculateRectangleArea(\n normalizeLatLng(southWest),\n normalizeLatLng(northEast)\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '计算矩形面积');\n }\n },\n\n /**\n * 获取路径上距离目标点最近的点\n * @param path 路径点集合\n * @param target 目标点\n * @returns 最近点信息,包含坐标、索引和距离\n */\n getNearestPointOnPath(path: LatLngPoint[], target: LatLngPoint): {\n latitude: number;\n longitude: number;\n index: number;\n distanceMeters: number;\n } | null {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.getNearestPointOnPath(\n normalizeLatLngList(path),\n normalizeLatLng(target)\n );\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '获取最近点');\n }\n },\n\n /**\n * 计算多边形质心\n * @param polygon 多边形顶点坐标数组\n * @returns 质心坐标\n */\n calculateCentroid(polygon: LatLngPoint[]): LatLng | null {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.calculateCentroid(normalizeLatLngList(polygon));\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '计算质心');\n }\n },\n\n /**\n * 计算路径边界和中心点\n * @param points 路径点集合\n * @returns 边界信息,包含 north, south, east, west 和 center\n */\n calculatePathBounds(points: LatLngPoint[]): {\n north: number;\n south: number;\n east: number;\n west: number;\n center: LatLngPoint;\n } | null {\n if (!nativeModule) return null;\n try {\n const normalized = normalizeLatLngList(points);\n if (normalized.length === 0) return null;\n return nativeModule.calculatePathBounds(normalized);\n } catch (error) {\n ErrorLogger.warn('calculatePathBounds 失败', { pointsCount: points.length, error });\n return null;\n }\n },\n\n /**\n * GeoHash 编码\n * @param coordinate 坐标点\n * @param precision 精度 (1-12)\n * @returns GeoHash 字符串\n */\n encodeGeoHash(coordinate: LatLngPoint, precision: number): string {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.encodeGeoHash(normalizeLatLng(coordinate), precision);\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, 'GeoHash 编码');\n }\n },\n\n /**\n * 轨迹抽稀 (RDP 算法)\n * @param points 原始轨迹点\n * @param tolerance 允许误差(米)\n * @returns 简化后的轨迹点\n */\n simplifyPolyline(points: LatLngPoint[], tolerance: number): LatLng[] {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.simplifyPolyline(normalizeLatLngList(points), tolerance);\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '轨迹抽稀');\n }\n },\n\n /**\n * 计算路径总长度\n * @param points 路径点\n * @returns 长度(米)\n */\n calculatePathLength(points: LatLngPoint[]): number {\n if (!nativeModule) return 0;\n try {\n return nativeModule.calculatePathLength(normalizeLatLngList(points));\n } catch (error) {\n ErrorLogger.warn('calculatePathLength 失败', { pointsCount: points.length, error });\n return 0;\n }\n },\n\n /**\n * 解析高德地图 API 返回的 Polyline 字符串\n * 格式: \"lng,lat;lng,lat;...\"\n * @param polylineStr 高德原始 polyline 字符串,或包含 polyline 属性的对象\n * @returns 解析后的点集\n */\n parsePolyline(polylineStr: string | { polyline: string }): LatLng[] {\n if (!nativeModule || !polylineStr) return [];\n try {\n // 兼容性处理:如果传入的是对象 { polyline: '...' },自动提取字符串\n let finalStr: string = '';\n if (typeof polylineStr === 'object' && polylineStr !== null && 'polyline' in polylineStr) {\n finalStr = polylineStr.polyline || '';\n } else if (typeof polylineStr === 'string') {\n finalStr = polylineStr;\n }\n\n if (!finalStr) return [];\n return nativeModule.parsePolyline(finalStr);\n } catch (error) {\n ErrorLogger.warn('解析 Polyline 失败', { polylineStr, error });\n return [];\n }\n },\n\n /**\n * 获取路径上指定距离的点\n * @param points 路径点\n * @param distance 距离起点的米数\n * @returns 点信息(坐标+角度)\n */\n getPointAtDistance(points: LatLngPoint[], distance: number): {\n latitude: number;\n longitude: number;\n angle: number;\n } | null {\n if (!nativeModule) {\n throw ErrorHandler.nativeModuleUnavailable();\n }\n try {\n return nativeModule.getPointAtDistance(normalizeLatLngList(points), distance);\n } catch (error) {\n throw ErrorHandler.wrapNativeError(error, '获取路径上的点');\n }\n },\n\n /**\n * 经纬度转换为地图瓦片坐标\n * @param coordinate 经纬度点\n * @param zoom 缩放级别\n * @returns 瓦片坐标(x, y, z)\n */\n latLngToTile(coordinate: LatLngPoint, zoom: number): { x: number; y: number; z: number } | null {\n if (!nativeModule) return null;\n try {\n return nativeModule.latLngToTile(normalizeLatLng(coordinate), zoom);\n } catch (error) {\n ErrorLogger.warn('latLngToTile 失败', { coordinate, zoom, error });\n return null;\n }\n },\n\n /**\n * 地图瓦片坐标转换为经纬度\n * @param tile 瓦片坐标(x, y, z)\n * @returns 经纬度点\n */\n tileToLatLng(tile: { x: number; y: number; z: number }): LatLng | null {\n if (!nativeModule) return null;\n try {\n return nativeModule.tileToLatLng(tile);\n } catch (error) {\n ErrorLogger.warn('tileToLatLng 失败', { tile, error });\n return null;\n }\n },\n\n /**\n * 经纬度转换为地图像素坐标\n * @param coordinate 经纬度点\n * @param zoom 缩放级别\n * @returns 像素坐标(x, y)\n */\n latLngToPixel(coordinate: LatLngPoint, zoom: number): { x: number; y: number } | null {\n if (!nativeModule) return null;\n try {\n return nativeModule.latLngToPixel(normalizeLatLng(coordinate), zoom);\n } catch (error) {\n ErrorLogger.warn('latLngToPixel 失败', { coordinate, zoom, error });\n return null;\n }\n },\n\n /**\n * 地图像素坐标转换为经纬度\n * @param pixel 像素坐标(x, y)\n * @param zoom 缩放级别\n * @returns 经纬度点\n */\n pixelToLatLng(pixel: { x: number; y: number }, zoom: number): LatLng | null {\n if (!nativeModule) return null;\n try {\n return nativeModule.pixelToLatLng(pixel, zoom);\n } catch (error) {\n ErrorLogger.warn('pixelToLatLng 失败', { pixel, zoom, error });\n return null;\n }\n },\n\n /**\n * 批量地理围栏检测\n * @param point 待检查的点\n * @param polygons 多边形数组,格式为 LatLngPoint[][] 或 LatLngPoint[][][]\n * @returns 包含点索引的数组(-1 表示不在任何多边形内)\n */\n findPointInPolygons(point: LatLngPoint, polygons: LatLngPoint[][] | LatLngPoint[][][]): number {\n if (!nativeModule) return -1;\n try {\n const normalizedPoint = normalizeLatLng(point);\n\n // 处理三维数组 (LatLngPoint[][][]) 和二维数组 (LatLngPoint[][])\n if (Array.isArray(polygons[0]) && Array.isArray(polygons[0][0])) {\n const normalizedMultiPolygons = (polygons as LatLngPoint[][][]).map((polygonRings) =>\n normalizeLatLngList(polygonRings)\n );\n\n for (let index = 0; index < normalizedMultiPolygons.length; index += 1) {\n if (nativeModule.isPointInPolygon(normalizedPoint, normalizedMultiPolygons[index])) {\n return index;\n }\n }\n\n return -1;\n }\n\n const normalizedPolygons = polygons as LatLngPoint[][];\n const processedPolygons = normalizedPolygons.map(p => normalizeLatLngList(p));\n return nativeModule.findPointInPolygons(normalizedPoint, processedPolygons);\n } catch (error) {\n ErrorLogger.warn('findPointInPolygons 失败', { point, error });\n return -1;\n }\n },\n\n /**\n * 生成网格聚合数据 (常用于展示网格聚合图或大规模点数据处理)\n * @param points 包含经纬度和权重的点数组\n * @param gridSizeMeters 网格大小(米)\n * @returns 包含经纬度和强度的网格点数组\n */\n generateHeatmapGrid(\n points: Array<LatLngPoint & { weight?: number }>,\n gridSizeMeters: number\n ): Array<{ latitude: number; longitude: number; intensity: number }> {\n if (!nativeModule || points.length === 0) return [];\n try {\n return nativeModule.generateHeatmapGrid(points, gridSizeMeters);\n } catch (error) {\n ErrorLogger.warn('generateHeatmapGrid 失败', { pointsCount: points.length, gridSizeMeters, error });\n return [];\n }\n },\n};\n\n/**\n* 获取最近一次 initSDK 的配置\n*/\nexport function getSDKConfig(): SDKConfig | null {\n return _sdkConfig;\n};\n\ntype HiddenNativeMethodName = 'setPrivacyShow' | 'setPrivacyAgree';\n\nconst hiddenNativeMethodNames = new Set<PropertyKey>([\n 'setPrivacyShow',\n 'setPrivacyAgree',\n]);\n\nexport type ExpoGaodeMapModule =\n Omit<\n NativeExpoGaodeMapModule,\n keyof typeof helperMethods | HiddenNativeMethodName\n > &\n typeof helperMethods;\n\nconst ExpoGaodeMapModuleWithHelpers = new Proxy(helperMethods, {\n get(target, prop, receiver) {\n if (Reflect.has(target, prop)) {\n return Reflect.get(target, prop, receiver);\n }\n if (hiddenNativeMethodNames.has(prop)) {\n return undefined;\n }\n const nativeModule = getNativeModule(true);\n if (!nativeModule) {\n return undefined;\n }\n\n const value = Reflect.get(nativeModule as object, prop, nativeModule as object);\n if (\n typeof prop === 'string' &&\n privacySensitiveMethodNames.has(prop) &&\n typeof value === 'function'\n ) {\n return (...args: unknown[]) => {\n assertPrivacyReady('sdk');\n return (value as (...fnArgs: unknown[]) => unknown).apply(nativeModule, args);\n };\n }\n\n return getBoundNativeValue(nativeModule, prop);\n },\n}) as ExpoGaodeMapModule;\n\n/**\n* 获取用于 Web API 的 webKey(若未初始化或未提供则返回 undefined)\n*/\nexport function getWebKey(): string | undefined {\n return _sdkConfig?.webKey;\n}\n\nexport default ExpoGaodeMapModuleWithHelpers;\n"]}
|
|
@@ -7,6 +7,11 @@ import type { OfflineMapInfo, OfflineMapDownloadConfig, OfflineMapStorageInfo, O
|
|
|
7
7
|
* 离线地图原生模块接口
|
|
8
8
|
*/
|
|
9
9
|
declare class NaviMapOfflineModule extends NativeModule<OfflineMapEvents> {
|
|
10
|
+
/**
|
|
11
|
+
* 打开高德 3D 地图 SDK 官方离线地图 UI 组件(Android)。
|
|
12
|
+
* 官方组件内置城市下载、暂停、更新、删除和城市搜索。
|
|
13
|
+
*/
|
|
14
|
+
openOfflineMapUI(): Promise<void>;
|
|
10
15
|
/**
|
|
11
16
|
* 获取所有可下载的城市列表
|
|
12
17
|
* @returns Promise<OfflineMapInfo[]> 城市列表
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpoGaodeMapOfflineModule.d.ts","sourceRoot":"","sources":["../../src/map/ExpoGaodeMapOfflineModule.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAuB,MAAM,MAAM,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,OAAO,OAAO,oBAAqB,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAGvE;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAE/C;;;OAGG;IACH,qBAAqB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAElD;;;;OAIG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAEpE;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAI9C;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9D;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9C;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1C;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1C;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAEnD;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAEvD;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAEnC;;;OAGG;IACH,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAEjC;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAEhD;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7B;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAElC;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC;;OAEG;IACH,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAEpC;;AAuBD,wBAIG"}
|
|
1
|
+
{"version":3,"file":"ExpoGaodeMapOfflineModule.d.ts","sourceRoot":"","sources":["../../src/map/ExpoGaodeMapOfflineModule.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAuB,MAAM,MAAM,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,OAAO,OAAO,oBAAqB,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAGvE;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAEjC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAE/C;;;OAGG;IACH,qBAAqB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAElD;;;;OAIG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAEpE;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAI9C;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9D;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE9C;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1C;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1C;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAEnD;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAEvD;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAEnC;;;OAGG;IACH,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAEjC;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAEhD;;OAEG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7B;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAElC;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC;;OAEG;IACH,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CAEpC;;AAuBD,wBAIG"}
|