开发 HarmonyOS NEXT 导航SDK 开发指南 路线规划 骑行/步行路线规划

骑行/步行路线规划 最后更新时间: 2026年05月29日

基本介绍

导航sdk同时提供了骑行与步行场景下的路线规划与导航功能。针对骑行与步行的特点,进行场景化算法优化,规划出更为合理、便捷的路线,提供更为清晰的语音播报与导航信息反馈。

要实现骑行、步行路径规划功能,以下两个类您需要了解:

  • AMapNavi :此类是导航功能管理类,提供路线规划、行前选路、导航中重算等方法。它是一个单例,通过getInstance方法获取该单例,通过destroy方法来销毁该单例。
  • AMapNaviListener:此类是导航事件信息与数据协议类,提供算路导航过程中的事件(如:路径规划成功/失败、TTS字符串、GPS信号弱、到达目的地等)以及实时数据(如:诱导信息NaviInfo、定位信息、电子眼信息等)回调接口。 

说明

  • 注意:路径规划功能需要联网使用。
  • 起终点信息可通过多种方式获取,如:使用坐标拾取器查询您需要的点的坐标;还可以通过搜索 SDK 中的 POI 搜索查询兴趣点,作为起终点。
  • 骑步行算路同样支持单路径规划与多路径规划,可以通过骑步行的POI算路接口来指定 PathPlanningStrategy 枚举。

 策略枚举 

 数值 

 策略描述 

PathPlanningStrategy#TRAVEL_SINGLE_DEFAULT 

 1000 

骑步行单路径规划

PathPlanningStrategy#TRAVEL_MULTIPLE_DEFAULT 

 1001 

骑步行多路径规划(并非所有路线均支持多路径规划) 

1. 经纬度算路

传入起、终点的经纬度信息来规划路线。

骑行算路示例代码: 

  const appKey = "您的appKey";
  const naviInstance: IAMapNavi = AMapNaviFactory.getAMapNaviInstance(getContext().getApplicationContext(), appKey);
  // 起点信息
  let startLatlng : NaviLatLng = new NaviLatLng(39.993308, 116.473199);
  // 终点信息
  let end : NaviLatLng  = new NaviLatLng(39.917834, 116.397036);
  // 设置travelInfo
  naviInstance!.setTravelInfo(new AMapTravelInfo(TransportType.Ride));
  // 途径点
  let wayList: ArrayList<NaviLatLng> = new ArrayList<NaviLatLng>();
  // 经纬度算路
  naviInstance!.calculateRideRouteLatLng(startLatlng, end, wayList);

步行算路示例代码:

  const appKey = "您的appKey";
  const naviInstance: IAMapNavi = AMapNaviFactory.getAMapNaviInstance(getContext().getApplicationContext(), appKey);
  // 起点信息
  let startLatlng : NaviLatLng = new NaviLatLng(39.993308, 116.473199);
  // 终点信息
  let end : NaviLatLng  = new NaviLatLng(39.917834, 116.397036);
  //设置travelInfo
  naviInstance!.setTravelInfo(new AMapTravelInfo(TransportType.Walk));
  //途径点
  let wayList: ArrayList<NaviLatLng> = new ArrayList<NaviLatLng>();
  // 经纬度算路
  naviInstance!.calculateRideRouteLatLng(startLatlng, end, wayList);

2. POI算路

传入起、终点的POI信息来规划骑、步行路线。

2.1 单路径规划

示例代码: 

  const appKey = "您的appKey";
  const naviInstance: IAMapNavi = AMapNaviFactory.getAMapNaviInstance(getContext().getApplicationContext(), appKey);
  // 构造起点POI
  const start = new NaviPoi("故宫博物馆", null, "B000A8UIN8");
  // 构造终点POI
  const end = new NaviPoi("北京大学", null, "B000A816R6");
  // 设置travelInfo
  naviInstance!.setTravelInfo(new AMapTravelInfo(TransportType.Ride));
  // 途径点
  const poiList = new ArrayList<NaviPoi>();
  // 进行骑行算路
  naviInstance!.calculateRideRoutePoi(start, end, PathPlanningStrategy.TRAVEL_SINGLE_DEFAULT ,poiList);

2.2 多路径规划

示例代码: 

 const appKey = "您的appKey";
 const naviInstance: IAMapNavi = AMapNaviFactory.getAMapNaviInstance(getContext().getApplicationContext(), appKey);
 // 构造起点POI
 const start = new NaviPoi("善各庄地铁", new NaviLatLng(40.027021,116.478391), null);
 // 构造终点POI
 const end = new NaviPoi("天安门广场", new NaviLatLng(39.907033, 116.39754), null);
 //设置travelInfo
 naviInstance!.setTravelInfo(new AMapTravelInfo(TransportType.Ride));
 //途径点
 const poiList = new ArrayList<NaviPoi>();
 // 进行骑行算路
 naviInstance!.calculateRideRoutePoi(start, end, PathPlanningStrategy.TRAVEL_MULTIPLE_DEFAULT  ,poiList);

3. 处理结果

当路线规划成功后,会触发 AMapNaviListener 的 onCalculateRouteSuccess 回调,在该回调函数中,你可以获取路线对象,进行规划路线的显示: 

    

 this.naviInstance?.addAMapNaviListener({
      onCalculateRouteSuccess: (routeResult: IAMapCalcRouteResult | null) => {
        // 获取路线数据对象
        const paths: HashMap<number, AMapNaviPath> | null = this.naviInstance!.getNaviPaths();
        // 绘制显示路径
        ...
        
      }
    })

也可以直接开启骑、步行导航:

 this.naviInstance?.addAMapNaviListener({
      onCalculateRouteSuccess: (routeResult: IAMapCalcRouteResult | null) => {
        // 开启导航
        this.naviInstance!.startNavi(NaviType.GPS)
      }
    })

如果路线规划失败,则会触发 AMapNaviListener 的 onCalculateRouteFailure 回调,可以在此回调中来执行相应处理逻辑。 

骑步行导航适配问题

驾车升级自定义view看齐了组件,骑步行仍是历史实现,需要使用该接口进行历史兼容状态判断,驾车场景入参为false,骑步行场景入参为true。

this.naviInstance!.setIsNaviTravelView(true);
返回顶部 示例中心 常见问题 智能客服 公众号
二维码