expo-gaode-map-navigation 2.0.10-next.0 → 2.0.11-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -219,6 +219,30 @@ await startNaviWithIndependentPath({
219
219
  });
220
220
  ```
221
221
 
222
+ ### 官方导航页(openOfficialNaviPage)
223
+
224
+ 新增支持直接调起高德官方导航组件(Android: `AmapNaviPage`,iOS: `AMapNaviCompositeManager`)。
225
+
226
+ ```typescript
227
+ import { openOfficialNaviPage } from 'expo-gaode-map-navigation';
228
+
229
+ await openOfficialNaviPage({
230
+ to: { latitude: 39.908823, longitude: 116.39747, name: '终点' }, // 必填
231
+ pageType: 'NAVI', // ROUTE | NAVI
232
+ startNaviDirectly: true,
233
+ naviMode: 2, // 1=实时导航, 2=模拟导航(官方组件)
234
+ theme: 'BLUE', // BLUE | WHITE | BLACK
235
+ trafficEnabled: true,
236
+ showCrossImage: true,
237
+ });
238
+ ```
239
+
240
+ 说明:
241
+
242
+ - 支持 Android / iOS 平台差异参数(如 `dayAndNightMode`、`broadcastMode`、`mapViewModeType`、`trackingMode` 等)。
243
+ - iOS 直接进导航页时需开启后台定位 `UIBackgroundModes: location`。
244
+ - Android 依赖 `AmapRouteActivity`,Config Plugin 会自动注入 Manifest。
245
+
222
246
  ### 地图组件 (Map)
223
247
 
224
248
  模块导出了完整的地图组件,与 `expo-gaode-map` API 保持一致。
@@ -191,8 +191,10 @@ export interface OfficialNaviPageOptions {
191
191
  routeStrategy?: number;
192
192
  /** 是否直接进入导航页(iOS 对应 `setStartNaviDirectly`) */
193
193
  startNaviDirectly?: boolean;
194
- /** 直接导航模式(仅直接进导航页时生效) */
194
+ /** 直接导航模式(仅直接进导航页时生效):1 实时 / 2 模拟 */
195
195
  naviMode?: number;
196
+ /** iOS 直接导航模式(可选,优先级高于 naviMode) */
197
+ iosNaviMode?: number;
196
198
  needCalculateRouteWhenPresent?: boolean;
197
199
  /** 退出导航页时是否销毁 DriveManager 实例,默认 false */
198
200
  needDestroyDriveManagerInstanceWhenNaviExit?: boolean;
@@ -216,6 +218,10 @@ export interface OfficialNaviPageOptions {
216
218
  truckMultipleRouteNaviMode?: boolean;
217
219
  /** 是否显示鹰眼小地图 */
218
220
  showEagleMap?: boolean;
221
+ /** iOS 是否显示电子眼距离(7.7.0+,具体以 SDK 版本为准) */
222
+ showCameraDistanceEnable?: boolean;
223
+ /** iOS 地图缩放比例(7.7.0+,具体以 SDK 版本为准) */
224
+ scaleFactor?: number;
219
225
  /** 比例尺智能缩放是否开启 */
220
226
  scaleAutoChangeEnable?: boolean;
221
227
  /** 昼夜模式:0 自动 / 1 白天 / 2 夜间 */
@@ -1 +1 @@
1
- {"version":3,"file":"route.types.d.ts","sourceRoot":"","sources":["../../src/types/route.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route.types.d.ts","sourceRoot":"","sources":["../../src/types/route.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"route.types.js","sourceRoot":"","sources":["../../src/types/route.types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,aAAa;IACb,4BAAe,CAAA;IACf,aAAa;IACb,0BAAa,CAAA;IACb,aAAa;IACb,0BAAa,CAAA;IACb,WAAW;IACX,gCAAmB,CAAA;IACnB,aAAa;IACb,4BAAe,CAAA;AACjB,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,aAqBX;AArBD,WAAY,aAAa;IACvB,iBAAiB;IACjB,uDAAW,CAAA;IACX,wBAAwB;IACxB,2DAAa,CAAA;IACb,iBAAiB;IACjB,yDAAY,CAAA;IACZ,wBAAwB;IACxB,qEAAkB,CAAA;IAClB,mBAAmB;IACnB,yEAAoB,CAAA;IACpB,WAAW;IACX,6DAAc,CAAA;IACd,gBAAgB;IAChB,+FAA+B,CAAA;IAC/B,cAAc;IACd,mFAAyB,CAAA;IACzB,mBAAmB;IACnB,yGAAoC,CAAA;IACpC,cAAc;IACd,mFAAyB,CAAA;AAC3B,CAAC,EArBW,aAAa,KAAb,aAAa,QAqBxB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,WAAW;IACX,qDAAW,CAAA;AACb,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,WAAW;IACX,qDAAW,CAAA;IACX,WAAW;IACX,qDAAW,CAAA;IACX,WAAW;IACX,uDAAY,CAAA;AACd,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,WAAW;IACX,yCAAQ,CAAA;IACR,WAAW;IACX,2CAAS,CAAA;IACT,WAAW;IACX,6CAAU,CAAA;IACV,WAAW;IACX,2CAAS,CAAA;AACX,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,0DAAa,CAAA;IACb,8DAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AA6MD;;GAEG;AACH,MAAM,CAAN,IAAY,UAuBX;AAvBD,WAAY,UAAU;IACpB,SAAS;IACT,mDAAY,CAAA;IACZ,SAAS;IACT,2CAAQ,CAAA;IACR,SAAS;IACT,6CAAS,CAAA;IACT,YAAY;IACZ,uDAAc,CAAA;IACd,YAAY;IACZ,yDAAe,CAAA;IACf,YAAY;IACZ,qDAAa,CAAA;IACb,YAAY;IACZ,uDAAc,CAAA;IACd,WAAW;IACX,yDAAe,CAAA;IACf,YAAY;IACZ,+CAAU,CAAA;IACV,WAAW;IACX,mEAAoB,CAAA;IACpB,WAAW;IACX,kEAAoB,CAAA;AACtB,CAAC,EAvBW,UAAU,KAAV,UAAU,QAuBrB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,QAmBX;AAnBD,WAAY,QAAQ;IAClB,WAAW;IACX,6CAAW,CAAA;IACX,SAAS;IACT,yDAAiB,CAAA;IACjB,SAAS;IACT,6DAAmB,CAAA;IACnB,SAAS;IACT,qDAAe,CAAA;IACf,WAAW;IACX,yDAAiB,CAAA;IACjB,YAAY;IACZ,iDAAa,CAAA;IACb,YAAY;IACZ,2DAAkB,CAAA;IAClB,aAAa;IACb,qDAAe,CAAA;IACf,WAAW;IACX,yCAAS,CAAA;AACX,CAAC,EAnBW,QAAQ,KAAR,QAAQ,QAmBnB","sourcesContent":["import type { Coordinates } from './coordinates.types';\n\n/**\n * 路径规划类型\n */\nexport enum RouteType {\n /** 驾车路径规划 */\n DRIVE = 'drive',\n /** 步行路径规划 */\n WALK = 'walk',\n /** 骑行路径规划 */\n RIDE = 'ride',\n /** 公交换乘 */\n TRANSIT = 'transit',\n /** 货车路径规划 */\n TRUCK = 'truck',\n}\n\n/**\n * 驾车路径规划策略\n */\nexport enum DriveStrategy {\n /** 速度优先(时间最短) */\n FASTEST = 0,\n /** 费用优先(不走收费路段的最快路线) */\n FEE_FIRST = 1,\n /** 距离优先(距离最短) */\n SHORTEST = 2,\n /** 不走快速路(不走快速路的最快路线) */\n NO_EXPRESSWAYS = 3,\n /** 结合实时交通(躲避拥堵) */\n AVOID_CONGESTION = 4,\n /** 不走高速 */\n NO_HIGHWAY = 5,\n /** 不走高速且避免收费 */\n NO_HIGHWAY_AVOID_CONGESTION = 6,\n /** 躲避收费和拥堵 */\n AVOID_COST_CONGESTION = 7,\n /** 不走高速且躲避收费和拥堵 */\n NO_HIGHWAY_AVOID_COST_CONGESTION = 8,\n /** 躲避拥堵和收费 */\n AVOID_CONGESTION_COST = 9,\n}\n\n/**\n * 步行路径规划策略\n */\nexport enum WalkStrategy {\n /** 推荐路线 */\n DEFAULT = 0,\n}\n\n/**\n * 骑行路径规划策略\n */\nexport enum RideStrategy {\n /** 推荐路线 */\n DEFAULT = 0,\n /** 速度优先 */\n FASTEST = 1,\n /** 距离优先 */\n SHORTEST = 2,\n}\n\n/**\n * 货车路径规划大小\n */\nexport enum TruckSize {\n /** 微型货车 */\n MINI = 1,\n /** 轻型货车 */\n LIGHT = 2,\n /** 中型货车 */\n MEDIUM = 3,\n /** 重型货车 */\n HEAVY = 4,\n}\n\n/**\n * 步行/骑行 Travel 策略(对齐原生:1000 单路线 / 1001 多路线)\n */\nexport enum TravelStrategy {\n SINGLE = 1000,\n MULTIPLE = 1001,\n}\n\n/**\n * 基础路径规划选项\n */\nexport interface BaseRouteOptions {\n /** 起点坐标 */\n from: Coordinates;\n /** 终点坐标 */\n to: Coordinates;\n /** 途经点列表(可选) */\n waypoints?: Coordinates[];\n}\n\n/**\n * 驾车路径规划选项\n */\nexport interface DriveRouteOptions extends BaseRouteOptions {\n type: RouteType.DRIVE;\n /** 驾车策略,默认速度优先 */\n strategy?: DriveStrategy;\n /** 车牌号(用于限行策略,可选) */\n carNumber?: string;\n /** 避让区域(可选) */\n avoidPolygons?: Coordinates[][];\n /** 避让道路(道路名称,可选) */\n avoidRoad?: string;\n}\n\n/**\n * 步行路径规划选项\n */\nexport interface WalkRouteOptions extends BaseRouteOptions {\n type: RouteType.WALK;\n /** 步行策略 */\n strategy?: WalkStrategy;\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: TravelStrategy;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n}\n\n/**\n * 骑行路径规划选项\n */\nexport interface RideRouteOptions extends BaseRouteOptions {\n type: RouteType.RIDE;\n /** 骑行策略 */\n strategy?: RideStrategy;\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: TravelStrategy;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n}\n\n/**\n * 骑行电动车路径规划选项\n */\nexport interface EBikeRouteOptions extends BaseRouteOptions {\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: TravelStrategy;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n /** 强制使用 POI 算路(若提供 name 或 poiId 时会自动使用) */\n usePoi?: boolean;\n}\n\nexport interface TransitRouteOptions extends BaseRouteOptions {\n type: RouteType.TRANSIT;\n city1: string;\n city2: string;\n strategy?: number;\n alternativeRoute?: 1 | 2 | 3;\n}\n\n/**\n * 货车路径规划选项\n */\nexport interface TruckRouteOptions extends BaseRouteOptions {\n type: RouteType.TRUCK;\n /** 货车大小 */\n size: TruckSize;\n /** 货车高度(米) */\n height?: number;\n /** 货车宽度(米) */\n width?: number;\n /** 货车载重(吨) */\n load?: number;\n /** 货车重量(吨) */\n weight?: number;\n /** 货车轴数 */\n axis?: number;\n}\n\n/**\n * 官方导航页参数(Android: AmapNaviPage.showRouteActivity)\n */\nexport interface OfficialNaviPageOptions {\n /** 起点(可选,不传则由 SDK 使用当前位置) */\n from?: Coordinates & {\n name?: string;\n poiId?: string;\n };\n /** 终点(必填) */\n to: Coordinates & {\n name?: string;\n poiId?: string;\n };\n /** 途经点(可选) */\n waypoints?: Array<\n Coordinates & {\n name?: string;\n poiId?: string;\n }\n >;\n /** 页面类型:`ROUTE` 路线页 / `NAVI` 导航页 */\n pageType?: 'ROUTE' | 'NAVI' | string;\n /** 算路类型:`DRIVER` / `WALK` / `RIDE` / `MOTORCYCLE`(当前主要用于驾车) */\n officialNaviType?: 'DRIVER' | 'WALK' | 'RIDE' | 'MOTORCYCLE' | string;\n /** 组件主题:`BLUE`(默认)/ `WHITE` / `BLACK` */\n theme?: 'BLUE' | 'WHITE' | 'BLACK' | string;\n /** 组件算路策略(参考 PathPlanningStrategy 常量) */\n routeStrategy?: number;\n /** 是否直接进入导航页(iOS 对应 `setStartNaviDirectly`) */\n startNaviDirectly?: boolean;\n /** 直接导航模式(仅直接进导航页时生效) */\n naviMode?: number;\n needCalculateRouteWhenPresent?: boolean;\n /** 退出导航页时是否销毁 DriveManager 实例,默认 false */\n needDestroyDriveManagerInstanceWhenNaviExit?: boolean;\n /** 是否显示退出导航弹窗,默认 true */\n showExitNaviDialog?: boolean;\n /** 是否使用内置语音,默认 true(6.1.0+ 默认 true) */\n useInnerVoice?: boolean;\n /** 路况开关是否打开(默认 false) */\n trafficEnabled?: boolean;\n /** 是否显示路口放大图 */\n showCrossImage?: boolean;\n /** 是否显示“路径偏好策略”页面 */\n showRouteStrategyPreferenceView?: boolean;\n /** 是否显示“下下个路口”引导 */\n secondActionVisible?: boolean;\n /** 是否展示语音设置项(文档原方法名 `setShowVoiceSetings`) */\n showVoiceSettings?: boolean;\n /** 驾车多路线模式(true 多路线 / false 单路线) */\n multipleRouteNaviMode?: boolean;\n /** 货车多路线模式(付费能力) */\n truckMultipleRouteNaviMode?: boolean;\n /** 是否显示鹰眼小地图 */\n showEagleMap?: boolean;\n /** 比例尺智能缩放是否开启 */\n scaleAutoChangeEnable?: boolean;\n /** 昼夜模式:0 自动 / 1 白天 / 2 夜间 */\n dayAndNightMode?: 0 | 1 | 2 | number;\n /** iOS 地图样式类型(覆盖 dayAndNightMode) */\n mapViewModeType?: number;\n /** 播报模式:1 简洁 / 2 详细 / 3 静音 */\n broadcastMode?: 1 | 2 | 3 | number;\n /** iOS 播报类型(覆盖 broadcastMode) */\n broadcastType?: number;\n /** 导航视角:1 正北向上 / 2 车头向上 */\n carDirectionMode?: 1 | 2 | number;\n /** iOS 跟随模式(覆盖 carDirectionMode) */\n trackingMode?: number;\n /** 是否显示“随后转向”图标(iOS) */\n showNextRoadInfo?: boolean;\n /** 多路线模式下是否显示备选路线(iOS) */\n showBackupRoute?: boolean;\n /** 网约车模式(iOS) */\n onlineCarHailingType?: number;\n /** 是否显示限行图层(iOS,付费能力) */\n showRestrictareaEnable?: boolean;\n /** 到达目的地后是否移除路线和牵引线(iOS) */\n removePolylineAndVectorlineWhenArrivedDestination?: boolean;\n /** 车辆信息(用于尾号限行/货车导航) */\n carInfo?: {\n /** 车辆类型:如 `0` 小客车 / `1` 货车 / `11` 摩托车 */\n carType?: string;\n /** 车牌号 */\n carNumber?: string;\n /** 是否考虑限行 */\n restriction?: boolean;\n /** 摩托车排量 */\n motorcycleCC?: number;\n /** 货车轴数 */\n vehicleAxis?: string;\n /** 货车高度(米) */\n vehicleHeight?: string;\n /** 货车长度(米) */\n vehicleLength?: string;\n /** 货车宽度(米) */\n vehicleWidth?: string;\n /** 货车尺寸等级 */\n vehicleSize?: string;\n /** 货车载重(吨) */\n vehicleLoad?: string;\n /** 货车总重(吨) */\n vehicleWeight?: string;\n /** 是否开启载重参数 */\n vehicleLoadSwitch?: boolean;\n /** 算路时是否忽略货车重量(iOS) */\n isLoadIgnore?: boolean;\n };\n}\n\n/**\n * 路径步骤动作类型\n */\nexport enum StepAction {\n /** 直行 */\n STRAIGHT = 0,\n /** 左转 */\n LEFT = 1,\n /** 右转 */\n RIGHT = 2,\n /** 左前方转弯 */\n LEFT_FRONT = 3,\n /** 右前方转弯 */\n RIGHT_FRONT = 4,\n /** 左后方转弯 */\n LEFT_BACK = 5,\n /** 右后方转弯 */\n RIGHT_BACK = 6,\n /** 左转掉头 */\n LEFT_U_TURN = 7,\n /** 到达目的地 */\n ARRIVE = 8,\n /** 进入环岛 */\n ENTER_ROUNDABOUT = 9,\n /** 驶出环岛 */\n EXIT_ROUNDABOUT = 10,\n}\n\n/**\n * 道路类型\n */\nexport enum RoadType {\n /** 高速公路 */\n HIGHWAY = 0,\n /** 国道 */\n NATIONAL_ROAD = 1,\n /** 省道 */\n PROVINCIAL_ROAD = 2,\n /** 县道 */\n COUNTY_ROAD = 3,\n /** 乡镇道路 */\n TOWNSHIP_ROAD = 4,\n /** 城市主干道 */\n MAIN_ROAD = 5,\n /** 城市次干道 */\n SECONDARY_ROAD = 6,\n /** 城市普通道路 */\n NORMAL_ROAD = 7,\n /** 其他道路 */\n OTHER = 8,\n}\n\n/**\n * 路径步骤信息\n */\nexport interface RouteStep {\n /** 步骤说明 */\n instruction: string;\n /** 方向说明 */\n orientation?: string;\n /** 道路名称 */\n road?: string;\n /** 距离(米) */\n distance: number;\n /** 预计时间(秒) */\n duration: number;\n /** 路径坐标点 */\n polyline: Coordinates[];\n /** 动作类型 */\n action?: StepAction;\n /** 辅助动作(可选) */\n assistantAction?: string;\n /** 收费距离(米) */\n tollDistance?: number;\n /** 收费金额(元) */\n tollCost?: number;\n /** 道路类型 */\n roadType?: RoadType;\n}\n\n/**\n * 路径规划结果\n */\nexport interface RouteResult {\n /** 路线ID */\n id: number;\n /** 起点坐标 */\n start: Coordinates;\n /** 终点坐标 */\n end: Coordinates;\n /** 总距离(米) */\n distance: number;\n /** 预计时间(秒) */\n duration: number;\n /** 路径步骤 */\n segments?: RouteStep[];\n /** 路径坐标点(所有步骤的完整路径) */\n polyline?: Coordinates[];\n /** 收费距离(米),驾车时有效 */\n tollDistance?: number;\n /** 收费金额(元),驾车时有效 */\n tollCost?: number;\n /** 红绿灯数量,驾车时有效 */\n trafficLightCount?: number;\n /** 限行状态码,驾车时有效 */\n restrictionCode?: number;\n /** 限行状态说明,驾车时有效 */\n restrictionInfo?: string;\n /** 策略值 */\n strategy?: number;\n}\n\n/**\n * 驾车路径规划结果(包含多条路线)\n */\nexport interface DriveRouteResult {\n /** 路径数量 */\n count: number;\n /** 主路线索引 */\n mainPathIndex: number;\n /** 路线ID列表 */\n routeIds?: number[];\n /** 路径列表,按策略返回1-3条路线 */\n routes: RouteResult[];\n /** 出租车费用(元) */\n taxiCost?: number;\n}\n\n/**\n * 路径规划选项联合类型\n */\nexport type RouteOptions =\n | DriveRouteOptions\n | WalkRouteOptions\n | RideRouteOptions\n | EBikeRouteOptions\n | TransitRouteOptions\n | TruckRouteOptions;\n"]}
1
+ {"version":3,"file":"route.types.js","sourceRoot":"","sources":["../../src/types/route.types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,aAAa;IACb,4BAAe,CAAA;IACf,aAAa;IACb,0BAAa,CAAA;IACb,aAAa;IACb,0BAAa,CAAA;IACb,WAAW;IACX,gCAAmB,CAAA;IACnB,aAAa;IACb,4BAAe,CAAA;AACjB,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,aAqBX;AArBD,WAAY,aAAa;IACvB,iBAAiB;IACjB,uDAAW,CAAA;IACX,wBAAwB;IACxB,2DAAa,CAAA;IACb,iBAAiB;IACjB,yDAAY,CAAA;IACZ,wBAAwB;IACxB,qEAAkB,CAAA;IAClB,mBAAmB;IACnB,yEAAoB,CAAA;IACpB,WAAW;IACX,6DAAc,CAAA;IACd,gBAAgB;IAChB,+FAA+B,CAAA;IAC/B,cAAc;IACd,mFAAyB,CAAA;IACzB,mBAAmB;IACnB,yGAAoC,CAAA;IACpC,cAAc;IACd,mFAAyB,CAAA;AAC3B,CAAC,EArBW,aAAa,KAAb,aAAa,QAqBxB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,WAAW;IACX,qDAAW,CAAA;AACb,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,WAAW;IACX,qDAAW,CAAA;IACX,WAAW;IACX,qDAAW,CAAA;IACX,WAAW;IACX,uDAAY,CAAA;AACd,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,WAAW;IACX,yCAAQ,CAAA;IACR,WAAW;IACX,2CAAS,CAAA;IACT,WAAW;IACX,6CAAU,CAAA;IACV,WAAW;IACX,2CAAS,CAAA;AACX,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,0DAAa,CAAA;IACb,8DAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAmND;;GAEG;AACH,MAAM,CAAN,IAAY,UAuBX;AAvBD,WAAY,UAAU;IACpB,SAAS;IACT,mDAAY,CAAA;IACZ,SAAS;IACT,2CAAQ,CAAA;IACR,SAAS;IACT,6CAAS,CAAA;IACT,YAAY;IACZ,uDAAc,CAAA;IACd,YAAY;IACZ,yDAAe,CAAA;IACf,YAAY;IACZ,qDAAa,CAAA;IACb,YAAY;IACZ,uDAAc,CAAA;IACd,WAAW;IACX,yDAAe,CAAA;IACf,YAAY;IACZ,+CAAU,CAAA;IACV,WAAW;IACX,mEAAoB,CAAA;IACpB,WAAW;IACX,kEAAoB,CAAA;AACtB,CAAC,EAvBW,UAAU,KAAV,UAAU,QAuBrB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,QAmBX;AAnBD,WAAY,QAAQ;IAClB,WAAW;IACX,6CAAW,CAAA;IACX,SAAS;IACT,yDAAiB,CAAA;IACjB,SAAS;IACT,6DAAmB,CAAA;IACnB,SAAS;IACT,qDAAe,CAAA;IACf,WAAW;IACX,yDAAiB,CAAA;IACjB,YAAY;IACZ,iDAAa,CAAA;IACb,YAAY;IACZ,2DAAkB,CAAA;IAClB,aAAa;IACb,qDAAe,CAAA;IACf,WAAW;IACX,yCAAS,CAAA;AACX,CAAC,EAnBW,QAAQ,KAAR,QAAQ,QAmBnB","sourcesContent":["import type { Coordinates } from './coordinates.types';\n\n/**\n * 路径规划类型\n */\nexport enum RouteType {\n /** 驾车路径规划 */\n DRIVE = 'drive',\n /** 步行路径规划 */\n WALK = 'walk',\n /** 骑行路径规划 */\n RIDE = 'ride',\n /** 公交换乘 */\n TRANSIT = 'transit',\n /** 货车路径规划 */\n TRUCK = 'truck',\n}\n\n/**\n * 驾车路径规划策略\n */\nexport enum DriveStrategy {\n /** 速度优先(时间最短) */\n FASTEST = 0,\n /** 费用优先(不走收费路段的最快路线) */\n FEE_FIRST = 1,\n /** 距离优先(距离最短) */\n SHORTEST = 2,\n /** 不走快速路(不走快速路的最快路线) */\n NO_EXPRESSWAYS = 3,\n /** 结合实时交通(躲避拥堵) */\n AVOID_CONGESTION = 4,\n /** 不走高速 */\n NO_HIGHWAY = 5,\n /** 不走高速且避免收费 */\n NO_HIGHWAY_AVOID_CONGESTION = 6,\n /** 躲避收费和拥堵 */\n AVOID_COST_CONGESTION = 7,\n /** 不走高速且躲避收费和拥堵 */\n NO_HIGHWAY_AVOID_COST_CONGESTION = 8,\n /** 躲避拥堵和收费 */\n AVOID_CONGESTION_COST = 9,\n}\n\n/**\n * 步行路径规划策略\n */\nexport enum WalkStrategy {\n /** 推荐路线 */\n DEFAULT = 0,\n}\n\n/**\n * 骑行路径规划策略\n */\nexport enum RideStrategy {\n /** 推荐路线 */\n DEFAULT = 0,\n /** 速度优先 */\n FASTEST = 1,\n /** 距离优先 */\n SHORTEST = 2,\n}\n\n/**\n * 货车路径规划大小\n */\nexport enum TruckSize {\n /** 微型货车 */\n MINI = 1,\n /** 轻型货车 */\n LIGHT = 2,\n /** 中型货车 */\n MEDIUM = 3,\n /** 重型货车 */\n HEAVY = 4,\n}\n\n/**\n * 步行/骑行 Travel 策略(对齐原生:1000 单路线 / 1001 多路线)\n */\nexport enum TravelStrategy {\n SINGLE = 1000,\n MULTIPLE = 1001,\n}\n\n/**\n * 基础路径规划选项\n */\nexport interface BaseRouteOptions {\n /** 起点坐标 */\n from: Coordinates;\n /** 终点坐标 */\n to: Coordinates;\n /** 途经点列表(可选) */\n waypoints?: Coordinates[];\n}\n\n/**\n * 驾车路径规划选项\n */\nexport interface DriveRouteOptions extends BaseRouteOptions {\n type: RouteType.DRIVE;\n /** 驾车策略,默认速度优先 */\n strategy?: DriveStrategy;\n /** 车牌号(用于限行策略,可选) */\n carNumber?: string;\n /** 避让区域(可选) */\n avoidPolygons?: Coordinates[][];\n /** 避让道路(道路名称,可选) */\n avoidRoad?: string;\n}\n\n/**\n * 步行路径规划选项\n */\nexport interface WalkRouteOptions extends BaseRouteOptions {\n type: RouteType.WALK;\n /** 步行策略 */\n strategy?: WalkStrategy;\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: TravelStrategy;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n}\n\n/**\n * 骑行路径规划选项\n */\nexport interface RideRouteOptions extends BaseRouteOptions {\n type: RouteType.RIDE;\n /** 骑行策略 */\n strategy?: RideStrategy;\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: TravelStrategy;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n}\n\n/**\n * 骑行电动车路径规划选项\n */\nexport interface EBikeRouteOptions extends BaseRouteOptions {\n /** 出行策略(单路线/多路线),对齐原生 TravelStrategy:1000/1001 */\n travelStrategy?: TravelStrategy;\n /** 是否返回多路线(等价于 travelStrategy=TravelStrategy.MULTIPLE) */\n multiple?: boolean;\n /** 强制使用 POI 算路(若提供 name 或 poiId 时会自动使用) */\n usePoi?: boolean;\n}\n\nexport interface TransitRouteOptions extends BaseRouteOptions {\n type: RouteType.TRANSIT;\n city1: string;\n city2: string;\n strategy?: number;\n alternativeRoute?: 1 | 2 | 3;\n}\n\n/**\n * 货车路径规划选项\n */\nexport interface TruckRouteOptions extends BaseRouteOptions {\n type: RouteType.TRUCK;\n /** 货车大小 */\n size: TruckSize;\n /** 货车高度(米) */\n height?: number;\n /** 货车宽度(米) */\n width?: number;\n /** 货车载重(吨) */\n load?: number;\n /** 货车重量(吨) */\n weight?: number;\n /** 货车轴数 */\n axis?: number;\n}\n\n/**\n * 官方导航页参数(Android: AmapNaviPage.showRouteActivity)\n */\nexport interface OfficialNaviPageOptions {\n /** 起点(可选,不传则由 SDK 使用当前位置) */\n from?: Coordinates & {\n name?: string;\n poiId?: string;\n };\n /** 终点(必填) */\n to: Coordinates & {\n name?: string;\n poiId?: string;\n };\n /** 途经点(可选) */\n waypoints?: Array<\n Coordinates & {\n name?: string;\n poiId?: string;\n }\n >;\n /** 页面类型:`ROUTE` 路线页 / `NAVI` 导航页 */\n pageType?: 'ROUTE' | 'NAVI' | string;\n /** 算路类型:`DRIVER` / `WALK` / `RIDE` / `MOTORCYCLE`(当前主要用于驾车) */\n officialNaviType?: 'DRIVER' | 'WALK' | 'RIDE' | 'MOTORCYCLE' | string;\n /** 组件主题:`BLUE`(默认)/ `WHITE` / `BLACK` */\n theme?: 'BLUE' | 'WHITE' | 'BLACK' | string;\n /** 组件算路策略(参考 PathPlanningStrategy 常量) */\n routeStrategy?: number;\n /** 是否直接进入导航页(iOS 对应 `setStartNaviDirectly`) */\n startNaviDirectly?: boolean;\n /** 直接导航模式(仅直接进导航页时生效):1 实时 / 2 模拟 */\n naviMode?: number;\n /** iOS 直接导航模式(可选,优先级高于 naviMode) */\n iosNaviMode?: number;\n needCalculateRouteWhenPresent?: boolean;\n /** 退出导航页时是否销毁 DriveManager 实例,默认 false */\n needDestroyDriveManagerInstanceWhenNaviExit?: boolean;\n /** 是否显示退出导航弹窗,默认 true */\n showExitNaviDialog?: boolean;\n /** 是否使用内置语音,默认 true(6.1.0+ 默认 true) */\n useInnerVoice?: boolean;\n /** 路况开关是否打开(默认 false) */\n trafficEnabled?: boolean;\n /** 是否显示路口放大图 */\n showCrossImage?: boolean;\n /** 是否显示“路径偏好策略”页面 */\n showRouteStrategyPreferenceView?: boolean;\n /** 是否显示“下下个路口”引导 */\n secondActionVisible?: boolean;\n /** 是否展示语音设置项(文档原方法名 `setShowVoiceSetings`) */\n showVoiceSettings?: boolean;\n /** 驾车多路线模式(true 多路线 / false 单路线) */\n multipleRouteNaviMode?: boolean;\n /** 货车多路线模式(付费能力) */\n truckMultipleRouteNaviMode?: boolean;\n /** 是否显示鹰眼小地图 */\n showEagleMap?: boolean;\n /** iOS 是否显示电子眼距离(7.7.0+,具体以 SDK 版本为准) */\n showCameraDistanceEnable?: boolean;\n /** iOS 地图缩放比例(7.7.0+,具体以 SDK 版本为准) */\n scaleFactor?: number;\n /** 比例尺智能缩放是否开启 */\n scaleAutoChangeEnable?: boolean;\n /** 昼夜模式:0 自动 / 1 白天 / 2 夜间 */\n dayAndNightMode?: 0 | 1 | 2 | number;\n /** iOS 地图样式类型(覆盖 dayAndNightMode) */\n mapViewModeType?: number;\n /** 播报模式:1 简洁 / 2 详细 / 3 静音 */\n broadcastMode?: 1 | 2 | 3 | number;\n /** iOS 播报类型(覆盖 broadcastMode) */\n broadcastType?: number;\n /** 导航视角:1 正北向上 / 2 车头向上 */\n carDirectionMode?: 1 | 2 | number;\n /** iOS 跟随模式(覆盖 carDirectionMode) */\n trackingMode?: number;\n /** 是否显示“随后转向”图标(iOS) */\n showNextRoadInfo?: boolean;\n /** 多路线模式下是否显示备选路线(iOS) */\n showBackupRoute?: boolean;\n /** 网约车模式(iOS) */\n onlineCarHailingType?: number;\n /** 是否显示限行图层(iOS,付费能力) */\n showRestrictareaEnable?: boolean;\n /** 到达目的地后是否移除路线和牵引线(iOS) */\n removePolylineAndVectorlineWhenArrivedDestination?: boolean;\n /** 车辆信息(用于尾号限行/货车导航) */\n carInfo?: {\n /** 车辆类型:如 `0` 小客车 / `1` 货车 / `11` 摩托车 */\n carType?: string;\n /** 车牌号 */\n carNumber?: string;\n /** 是否考虑限行 */\n restriction?: boolean;\n /** 摩托车排量 */\n motorcycleCC?: number;\n /** 货车轴数 */\n vehicleAxis?: string;\n /** 货车高度(米) */\n vehicleHeight?: string;\n /** 货车长度(米) */\n vehicleLength?: string;\n /** 货车宽度(米) */\n vehicleWidth?: string;\n /** 货车尺寸等级 */\n vehicleSize?: string;\n /** 货车载重(吨) */\n vehicleLoad?: string;\n /** 货车总重(吨) */\n vehicleWeight?: string;\n /** 是否开启载重参数 */\n vehicleLoadSwitch?: boolean;\n /** 算路时是否忽略货车重量(iOS) */\n isLoadIgnore?: boolean;\n };\n}\n\n/**\n * 路径步骤动作类型\n */\nexport enum StepAction {\n /** 直行 */\n STRAIGHT = 0,\n /** 左转 */\n LEFT = 1,\n /** 右转 */\n RIGHT = 2,\n /** 左前方转弯 */\n LEFT_FRONT = 3,\n /** 右前方转弯 */\n RIGHT_FRONT = 4,\n /** 左后方转弯 */\n LEFT_BACK = 5,\n /** 右后方转弯 */\n RIGHT_BACK = 6,\n /** 左转掉头 */\n LEFT_U_TURN = 7,\n /** 到达目的地 */\n ARRIVE = 8,\n /** 进入环岛 */\n ENTER_ROUNDABOUT = 9,\n /** 驶出环岛 */\n EXIT_ROUNDABOUT = 10,\n}\n\n/**\n * 道路类型\n */\nexport enum RoadType {\n /** 高速公路 */\n HIGHWAY = 0,\n /** 国道 */\n NATIONAL_ROAD = 1,\n /** 省道 */\n PROVINCIAL_ROAD = 2,\n /** 县道 */\n COUNTY_ROAD = 3,\n /** 乡镇道路 */\n TOWNSHIP_ROAD = 4,\n /** 城市主干道 */\n MAIN_ROAD = 5,\n /** 城市次干道 */\n SECONDARY_ROAD = 6,\n /** 城市普通道路 */\n NORMAL_ROAD = 7,\n /** 其他道路 */\n OTHER = 8,\n}\n\n/**\n * 路径步骤信息\n */\nexport interface RouteStep {\n /** 步骤说明 */\n instruction: string;\n /** 方向说明 */\n orientation?: string;\n /** 道路名称 */\n road?: string;\n /** 距离(米) */\n distance: number;\n /** 预计时间(秒) */\n duration: number;\n /** 路径坐标点 */\n polyline: Coordinates[];\n /** 动作类型 */\n action?: StepAction;\n /** 辅助动作(可选) */\n assistantAction?: string;\n /** 收费距离(米) */\n tollDistance?: number;\n /** 收费金额(元) */\n tollCost?: number;\n /** 道路类型 */\n roadType?: RoadType;\n}\n\n/**\n * 路径规划结果\n */\nexport interface RouteResult {\n /** 路线ID */\n id: number;\n /** 起点坐标 */\n start: Coordinates;\n /** 终点坐标 */\n end: Coordinates;\n /** 总距离(米) */\n distance: number;\n /** 预计时间(秒) */\n duration: number;\n /** 路径步骤 */\n segments?: RouteStep[];\n /** 路径坐标点(所有步骤的完整路径) */\n polyline?: Coordinates[];\n /** 收费距离(米),驾车时有效 */\n tollDistance?: number;\n /** 收费金额(元),驾车时有效 */\n tollCost?: number;\n /** 红绿灯数量,驾车时有效 */\n trafficLightCount?: number;\n /** 限行状态码,驾车时有效 */\n restrictionCode?: number;\n /** 限行状态说明,驾车时有效 */\n restrictionInfo?: string;\n /** 策略值 */\n strategy?: number;\n}\n\n/**\n * 驾车路径规划结果(包含多条路线)\n */\nexport interface DriveRouteResult {\n /** 路径数量 */\n count: number;\n /** 主路线索引 */\n mainPathIndex: number;\n /** 路线ID列表 */\n routeIds?: number[];\n /** 路径列表,按策略返回1-3条路线 */\n routes: RouteResult[];\n /** 出租车费用(元) */\n taxiCost?: number;\n}\n\n/**\n * 路径规划选项联合类型\n */\nexport type RouteOptions =\n | DriveRouteOptions\n | WalkRouteOptions\n | RideRouteOptions\n | EBikeRouteOptions\n | TransitRouteOptions\n | TruckRouteOptions;\n"]}
@@ -68,6 +68,28 @@ public class ExpoGaodeMapNaviView: ExpoView {
68
68
  )
69
69
  }
70
70
  }
71
+
72
+ /// 检查 iOS 是否配置了后台定位模式(避免导航启动时触发系统异常)
73
+ private func ensureBackgroundLocationModeForNavigation() throws {
74
+ let backgroundModes = Bundle.main.object(forInfoDictionaryKey: "UIBackgroundModes") as? [String]
75
+ guard backgroundModes?.contains("location") == true else {
76
+ throw NSError(
77
+ domain: "ExpoGaodeMapNaviView",
78
+ code: -1003,
79
+ userInfo: [
80
+ NSLocalizedDescriptionKey: "iOS 后台定位模式未开启,无法安全启动导航",
81
+ NSLocalizedFailureReasonErrorKey: "Info.plist 缺少 UIBackgroundModes: location",
82
+ NSLocalizedRecoverySuggestionErrorKey: """
83
+ 请在 app.json 插件配置中开启后台定位后重新 prebuild:
84
+ ["expo-gaode-map-navigation", {
85
+ "enableBackgroundLocation": true
86
+ }]
87
+ 然后执行:npx expo prebuild --clean
88
+ """
89
+ ]
90
+ )
91
+ }
92
+ }
71
93
 
72
94
  /// 格式化错误信息
73
95
  private func formatError(_ error: Error) -> String {
@@ -383,8 +405,17 @@ public class ExpoGaodeMapNaviView: ExpoView {
383
405
  do {
384
406
  try checkPrivacyReady()
385
407
  try checkAMapInitialization()
408
+ try ensureBackgroundLocationModeForNavigation()
386
409
  } catch {
387
- let code = (error as NSError).domain == "ExpoGaodeMapPrivacy" ? "PRIVACY_NOT_AGREED" : "AMAP_NOT_INITIALIZED"
410
+ let nsError = error as NSError
411
+ let code: String
412
+ if nsError.domain == "ExpoGaodeMapPrivacy" {
413
+ code = "PRIVACY_NOT_AGREED"
414
+ } else if nsError.code == -1003 {
415
+ code = "BACKGROUND_LOCATION_NOT_ENABLED"
416
+ } else {
417
+ code = "AMAP_NOT_INITIALIZED"
418
+ }
388
419
  promise.reject(code, formatError(error))
389
420
  return
390
421
  }
@@ -74,6 +74,28 @@ public class ExpoGaodeMapNavigationModule: Module {
74
74
  try checkAMapInitialization()
75
75
  }
76
76
 
77
+ /// 检查 iOS 是否开启后台定位模式(避免导航启动时出现系统异常)
78
+ private func ensureBackgroundLocationModeForNavigation() throws {
79
+ let backgroundModes = Bundle.main.object(forInfoDictionaryKey: "UIBackgroundModes") as? [String]
80
+ guard backgroundModes?.contains("location") == true else {
81
+ throw NSError(
82
+ domain: "ExpoGaodeMapNavigation",
83
+ code: -1003,
84
+ userInfo: [
85
+ NSLocalizedDescriptionKey: "iOS 后台定位模式未开启,无法安全启动导航",
86
+ NSLocalizedFailureReasonErrorKey: "Info.plist 缺少 UIBackgroundModes: location",
87
+ NSLocalizedRecoverySuggestionErrorKey: """
88
+ 请在 app.json 插件配置中开启后台定位后重新 prebuild:
89
+ ["expo-gaode-map-navigation", {
90
+ "enableBackgroundLocation": true
91
+ }]
92
+ 然后执行:npx expo prebuild --clean
93
+ """
94
+ ]
95
+ )
96
+ }
97
+ }
98
+
77
99
  /// 检查并同步隐私状态(导航 SDK 同样要求在调用任何接口前完成)
78
100
  private func ensurePrivacyReady() throws {
79
101
  GaodeMapPrivacyManager.restorePersistedState()
@@ -239,6 +261,7 @@ public class ExpoGaodeMapNavigationModule: Module {
239
261
  AsyncFunction("startNaviWithIndependentPath") { (options: [String: Any], promise: Promise) in
240
262
  do {
241
263
  try self.ensureInitialized()
264
+ try self.ensureBackgroundLocationModeForNavigation()
242
265
  } catch {
243
266
  self.rejectInitializationError(promise, error: error)
244
267
  return
@@ -258,6 +281,12 @@ public class ExpoGaodeMapNavigationModule: Module {
258
281
  AsyncFunction("openOfficialNaviPage") { (options: [String: Any], promise: Promise) in
259
282
  do {
260
283
  try self.ensureInitialized()
284
+ let pageType = (options["pageType"] as? String)?.uppercased()
285
+ let startNaviDirectly = (options["startNaviDirectly"] as? Bool) ?? false
286
+ // 只有直接进导航页时才强制要求后台定位模式;纯路线规划页不拦截
287
+ if pageType == "NAVI" || startNaviDirectly {
288
+ try self.ensureBackgroundLocationModeForNavigation()
289
+ }
261
290
  } catch {
262
291
  self.rejectInitializationError(promise, error: error)
263
292
  return
@@ -343,9 +372,14 @@ public class ExpoGaodeMapNavigationModule: Module {
343
372
 
344
373
  private func rejectInitializationError(_ promise: Promise, error: Error) {
345
374
  let nsError = error as NSError
346
- let code = (nsError.domain == "ExpoGaodeMapNavigation" && nsError.code == -1002)
347
- ? "PRIVACY_NOT_AGREED"
348
- : "AMAP_NOT_INITIALIZED"
375
+ let code: String
376
+ if nsError.domain == "ExpoGaodeMapNavigation" && nsError.code == -1002 {
377
+ code = "PRIVACY_NOT_AGREED"
378
+ } else if nsError.domain == "ExpoGaodeMapNavigation" && nsError.code == -1003 {
379
+ code = "BACKGROUND_LOCATION_NOT_ENABLED"
380
+ } else {
381
+ code = "AMAP_NOT_INITIALIZED"
382
+ }
349
383
  promise.reject(code, formatError(error))
350
384
  }
351
385
 
@@ -424,6 +458,11 @@ public class ExpoGaodeMapNavigationModule: Module {
424
458
  selectorName: "setStartNaviDirectly:",
425
459
  value: startNaviDirectly
426
460
  )
461
+ if let naviMode = parseCompositeNaviMode(options: options) {
462
+ // iOS 官方组件头文件未公开该方法,但在实际 SDK 中存在;通过反射安全调用。
463
+ // 仅在 startNaviDirectly = true 时该参数才有意义。
464
+ invokeIntSetter(target: config, selectorName: "setNaviMode:", value: naviMode)
465
+ }
427
466
 
428
467
  if let needCalculateRoute = boolValue(options["needCalculateRouteWhenPresent"]) {
429
468
  invokeBoolSetter(target: config, selectorName: "setNeedCalculateRouteWhenPresent:", value: needCalculateRoute)
@@ -461,6 +500,16 @@ public class ExpoGaodeMapNavigationModule: Module {
461
500
  if let showEagleMap = boolValue(options["showEagleMap"]) {
462
501
  invokeBoolSetter(target: config, selectorName: "setShowEagleMap:", value: showEagleMap)
463
502
  }
503
+ if let showCameraDistanceEnable = boolValue(options["showCameraDistanceEnable"]) {
504
+ invokeBoolSetter(
505
+ target: config,
506
+ selectorName: "setShowCameraDistanceEnable:",
507
+ value: showCameraDistanceEnable
508
+ )
509
+ }
510
+ if let scaleFactor = doubleValue(options["scaleFactor"]) {
511
+ invokeDoubleSetter(target: config, selectorName: "setScaleFactor:", value: scaleFactor)
512
+ }
464
513
  if let showRestrict = boolValue(options["showRestrictareaEnable"]) {
465
514
  invokeBoolSetter(target: config, selectorName: "setShowRestrictareaEnable:", value: showRestrict)
466
515
  }
@@ -656,6 +705,25 @@ public class ExpoGaodeMapNavigationModule: Module {
656
705
  }
657
706
  }
658
707
 
708
+ private func parseCompositeNaviMode(options: [String: Any]) -> Int? {
709
+ if let iosRaw = intValue(options["iosNaviMode"]) {
710
+ return iosRaw
711
+ }
712
+ guard let raw = intValue(options["naviMode"]) else {
713
+ return nil
714
+ }
715
+ switch raw {
716
+ case 0:
717
+ return 1 // 兼容旧参数:0(旧GPS) -> AMapNaviModeGPS(1)
718
+ case 1:
719
+ return 1 // GPS
720
+ case 2:
721
+ return 2 // Emulator
722
+ default:
723
+ return raw
724
+ }
725
+ }
726
+
659
727
  private func parseBroadcastType(options: [String: Any]) -> Int? {
660
728
  if let raw = intValue(options["broadcastType"]) {
661
729
  return raw
@@ -743,6 +811,15 @@ public class ExpoGaodeMapNavigationModule: Module {
743
811
  function(target, selector, value)
744
812
  }
745
813
 
814
+ private func invokeDoubleSetter(target: NSObject, selectorName: String, value: Double) {
815
+ let selector = NSSelectorFromString(selectorName)
816
+ guard target.responds(to: selector) else { return }
817
+ typealias Function = @convention(c) (AnyObject, Selector, Double) -> Void
818
+ let implementation = target.method(for: selector)
819
+ let function = unsafeBitCast(implementation, to: Function.self)
820
+ function(target, selector, value)
821
+ }
822
+
746
823
  private func invokeIntReturnBoolSetter(target: NSObject, selectorName: String, value: Int) -> Bool? {
747
824
  let selector = NSSelectorFromString(selectorName)
748
825
  guard target.responds(to: selector) else { return nil }
@@ -2,8 +2,9 @@
2
2
  // IndependentRouteService.swift
3
3
  // expo-gaode-map-navigation
4
4
  //
5
- // 独立路径规划服务 - 简化实现,使用标准路径规划 API
6
- // 注意:iOS SDK 的独立算路 API 可能不支持 callback 方式,使用标准代理方式
5
+ // 独立路径规划服务
6
+ // 驾车/货车/摩托车:优先使用官方独立算路回调(返回 AMapNaviRouteGroup)
7
+ // 步行/骑行:沿用对应 Manager 的标准算路回调
7
8
  //
8
9
 
9
10
  import Foundation
@@ -47,59 +48,61 @@ class IndependentRouteService: NSObject {
47
48
  promise.reject("INVALID_PARAMS", "from and to are required")
48
49
  return
49
50
  }
50
-
51
- guard let startPoint = Converters.parseNaviPoint(from),
52
- let endPoint = Converters.parseNaviPoint(to) else {
53
- promise.reject("INVALID_COORDS", "Invalid coordinates")
51
+
52
+ guard let startPOIInfo = Converters.parseNaviPOIInfo(from),
53
+ let endPOIInfo = Converters.parseNaviPOIInfo(to) else {
54
+ promise.reject("INVALID_COORDS", "Invalid coordinates or POI info")
54
55
  return
55
56
  }
56
-
57
- // 解析途经点
58
- var wayPoints: [AMapNaviPoint]? = nil
59
- if let waypoints = options["waypoints"] as? [[String: Any]] {
60
- wayPoints = waypoints.compactMap { Converters.parseNaviPoint($0) }
57
+
58
+ let wayPOIInfos: [AMapNaviPOIInfo]? = {
59
+ guard let waypoints = options["waypoints"] as? [[String: Any]] else { return nil }
60
+ return Converters.parseNaviPOIInfos(waypoints)
61
+ }()
62
+
63
+ if let vehicleInfo = buildVehicleInfo(options: options) {
64
+ driveManager?.setVehicleInfo(vehicleInfo)
61
65
  }
62
-
63
- // 解析策略
64
- let strategyValue = options["strategy"] as? Int ?? 10
65
- let strategy: AMapNaviDrivingStrategy = AMapNaviDrivingStrategy(rawValue: strategyValue) ?? AMapNaviDrivingStrategy.drivingStrategySingleDefault
66
-
67
- currentScene = "drive"
68
- currentPromise = promise
69
- currentToken = independentRouteManager.generateToken()
70
-
71
- let success = driveManager?.calculateDriveRoute(
72
- withStart: [startPoint],
73
- end: [endPoint],
74
- wayPoints: wayPoints,
75
- drivingStrategy: strategy
66
+
67
+ let strategyValue = resolveDriveStrategyValue(options: options)
68
+ let strategy = AMapNaviDrivingStrategy(rawValue: strategyValue)
69
+ ?? AMapNaviDrivingStrategy.drivingStrategySingleDefault
70
+ let token = independentRouteManager.generateToken()
71
+
72
+ let success = driveManager?.independentCalculateDriveRoute(
73
+ withStart: startPOIInfo,
74
+ end: endPOIInfo,
75
+ wayPOIInfos: wayPOIInfos,
76
+ drivingStrategy: strategy,
77
+ callback: { [weak self] routeGroup, error in
78
+ guard let self else { return }
79
+ if let error = error {
80
+ promise.reject("CALCULATE_FAILED", error.localizedDescription)
81
+ return
82
+ }
83
+ guard let routeGroup = routeGroup else {
84
+ promise.reject("CALCULATE_FAILED", "独立驾车算路成功回调未返回 routeGroup")
85
+ return
86
+ }
87
+
88
+ self.independentRouteManager.storeRouteGroup(token: token, routeGroup: routeGroup)
89
+ let result = self.convertIndependentDriveResult(routeGroup: routeGroup, token: token)
90
+ promise.resolve(result)
91
+ }
76
92
  ) ?? false
77
-
93
+
78
94
  if !success {
79
- currentPromise = nil
80
- currentToken = nil
81
95
  promise.reject("CALCULATE_FAILED", "独立驾车路线规划启动失败")
82
96
  }
83
97
  }
84
98
 
85
99
  // MARK: - 独立货车路线规划
86
100
  func independentTruckRoute(options: [String: Any], promise: Promise) {
87
- // 设置货车信息
88
- if let vehicleInfo = options["vehicleInfo"] as? [String: Any] {
89
- let naviVehicleInfo = AMapNaviVehicleInfo()
90
- naviVehicleInfo.type = vehicleInfo["type"] as? Int ?? 1
91
- naviVehicleInfo.size = vehicleInfo["size"] as? Int ?? 2
92
- naviVehicleInfo.width = vehicleInfo["width"] as? Double ?? 2.5
93
- naviVehicleInfo.height = vehicleInfo["height"] as? Double ?? 3.0
94
- naviVehicleInfo.length = vehicleInfo["length"] as? Double ?? 10.0
95
- naviVehicleInfo.load = vehicleInfo["load"] as? Double ?? 10.0
96
- naviVehicleInfo.weight = vehicleInfo["weight"] as? Double ?? 15.0
97
- naviVehicleInfo.axisNums = vehicleInfo["axisNums"] as? Int ?? 2
98
- driveManager?.setVehicleInfo(naviVehicleInfo)
101
+ var truckOptions = options
102
+ if truckOptions["carType"] == nil && (truckOptions["vehicleInfo"] as? [String: Any]) == nil {
103
+ truckOptions["carType"] = 1
99
104
  }
100
-
101
- // 复用驾车路线规划
102
- independentDriveRoute(options: options, promise: promise)
105
+ independentDriveRoute(options: truckOptions, promise: promise)
103
106
  }
104
107
 
105
108
  // MARK: - 独立步行路线规划
@@ -158,7 +161,146 @@ class IndependentRouteService: NSObject {
158
161
 
159
162
  // MARK: - 独立摩托车路线规划(使用驾车接口)
160
163
  func independentMotorcycleRoute(options: [String: Any], promise: Promise) {
161
- independentDriveRoute(options: options, promise: promise)
164
+ var motorcycleOptions = options
165
+ if motorcycleOptions["carType"] == nil {
166
+ motorcycleOptions["carType"] = 11
167
+ }
168
+ independentDriveRoute(options: motorcycleOptions, promise: promise)
169
+ }
170
+
171
+ private func resolveDriveStrategyValue(options: [String: Any]) -> Int {
172
+ if let strategy = options["strategy"] as? Int {
173
+ return strategy
174
+ }
175
+ return Converters.convertDrivingPreferenceToStrategy(
176
+ multipleRoute: true,
177
+ avoidCongestion: options["avoidCongestion"] as? Bool ?? false,
178
+ avoidHighway: options["avoidHighway"] as? Bool ?? false,
179
+ avoidCost: options["avoidCost"] as? Bool ?? false,
180
+ prioritiseHighway: options["prioritiseHighway"] as? Bool ?? false
181
+ )
182
+ }
183
+
184
+ private func buildVehicleInfo(options: [String: Any]) -> AMapNaviVehicleInfo? {
185
+ let naviVehicleInfo = AMapNaviVehicleInfo()
186
+ var hasAnyValue = false
187
+
188
+ if let vehicleInfo = options["vehicleInfo"] as? [String: Any] {
189
+ if let type = intValue(vehicleInfo["type"]) {
190
+ naviVehicleInfo.type = type
191
+ hasAnyValue = true
192
+ }
193
+ if let size = intValue(vehicleInfo["size"]) {
194
+ naviVehicleInfo.size = size
195
+ hasAnyValue = true
196
+ }
197
+ if let width = doubleValue(vehicleInfo["width"]) {
198
+ naviVehicleInfo.width = width
199
+ hasAnyValue = true
200
+ }
201
+ if let height = doubleValue(vehicleInfo["height"]) {
202
+ naviVehicleInfo.height = height
203
+ hasAnyValue = true
204
+ }
205
+ if let length = doubleValue(vehicleInfo["length"]) {
206
+ naviVehicleInfo.length = length
207
+ hasAnyValue = true
208
+ }
209
+ if let load = doubleValue(vehicleInfo["load"]) {
210
+ naviVehicleInfo.load = load
211
+ hasAnyValue = true
212
+ }
213
+ if let weight = doubleValue(vehicleInfo["weight"]) {
214
+ naviVehicleInfo.weight = weight
215
+ hasAnyValue = true
216
+ }
217
+ if let axisNums = intValue(vehicleInfo["axisNums"]) {
218
+ naviVehicleInfo.axisNums = axisNums
219
+ hasAnyValue = true
220
+ }
221
+ }
222
+
223
+ if let carType = intValue(options["carType"]) {
224
+ naviVehicleInfo.type = carType
225
+ hasAnyValue = true
226
+ }
227
+ if let carNumber = options["carNumber"] as? String, !carNumber.isEmpty {
228
+ naviVehicleInfo.vehicleId = carNumber
229
+ hasAnyValue = true
230
+ }
231
+ if let restriction = options["restriction"] as? Bool {
232
+ naviVehicleInfo.isETARestriction = restriction
233
+ hasAnyValue = true
234
+ }
235
+ if let motorcycleCC = intValue(options["motorcycleCC"]) {
236
+ naviVehicleInfo.motorcycleCC = motorcycleCC
237
+ hasAnyValue = true
238
+ }
239
+
240
+ return hasAnyValue ? naviVehicleInfo : nil
241
+ }
242
+
243
+ private func convertIndependentDriveResult(
244
+ routeGroup: AMapNaviRouteGroup,
245
+ token: Int
246
+ ) -> [String: Any] {
247
+ let orderedRouteIds = routeGroup.naviRouteIDs?.map { $0.intValue } ?? []
248
+ var routes: [[String: Any]] = []
249
+
250
+ if let naviRoutes = routeGroup.naviRoutes {
251
+ let fallbackIds = naviRoutes.keys.map { $0.intValue }.sorted()
252
+ let routeIds = orderedRouteIds.isEmpty ? fallbackIds : orderedRouteIds
253
+ for routeId in routeIds {
254
+ let key = NSNumber(value: routeId)
255
+ guard let route = naviRoutes[key] else { continue }
256
+ routes.append([
257
+ "routeId": routeId,
258
+ "distance": route.routeLength,
259
+ "duration": route.routeTime,
260
+ "tollCost": route.routeTollCost,
261
+ "strategy": "推荐路线",
262
+ "polyline": extractCoordinates(from: route)
263
+ ])
264
+ }
265
+ } else if let route = routeGroup.naviRoute {
266
+ let routeId = routeGroup.naviRouteID
267
+ routes.append([
268
+ "routeId": routeId,
269
+ "distance": route.routeLength,
270
+ "duration": route.routeTime,
271
+ "tollCost": route.routeTollCost,
272
+ "strategy": "推荐路线",
273
+ "polyline": extractCoordinates(from: route)
274
+ ])
275
+ }
276
+
277
+ let finalRouteIds = orderedRouteIds.isEmpty ? routes.compactMap { $0["routeId"] as? Int } : orderedRouteIds
278
+ let mainRouteId = routeGroup.naviRouteID
279
+ let mainPathIndex = finalRouteIds.firstIndex(of: mainRouteId) ?? 0
280
+
281
+ return [
282
+ "success": true,
283
+ "independent": true,
284
+ "token": token,
285
+ "count": routes.count,
286
+ "mainPathIndex": mainPathIndex,
287
+ "routeIds": finalRouteIds,
288
+ "routes": routes
289
+ ]
290
+ }
291
+
292
+ private func intValue(_ raw: Any?) -> Int? {
293
+ if let value = raw as? Int { return value }
294
+ if let value = raw as? NSNumber { return value.intValue }
295
+ if let value = raw as? String { return Int(value) }
296
+ return nil
297
+ }
298
+
299
+ private func doubleValue(_ raw: Any?) -> Double? {
300
+ if let value = raw as? Double { return value }
301
+ if let value = raw as? NSNumber { return value.doubleValue }
302
+ if let value = raw as? String { return Double(value) }
303
+ return nil
162
304
  }
163
305
 
164
306
  func destroy() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-gaode-map-navigation",
3
- "version": "2.0.10-next.0",
3
+ "version": "2.0.11-next.0",
4
4
  "description": "高德地图导航功能模块 - 路径规划、导航引导,独立版本包含完整地图功能",
5
5
  "author": "TomWq <582752848@qq.com> (https://github.com/TomWq)",
6
6
  "repository": {