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

骑行/步行路线规划 最后更新时间: 2024年03月20日

基本介绍

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

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

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

说明

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

 策略枚举 

 数值 

 策略描述 

TravelStrategy#SINGLE 

 1000 

骑步行单路径规划

TravelStrategy#MULTIPLE 

 1001 

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

1. 经纬度算路

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

骑行算路示例代码: 

// 起点信息
  NaviLatLng start = new NaviLatLng(39.993308, 116.473199);
  // 终点信息
  NaviLatLng end = new NaviLatLng(39.917834, 116.397036);
  // 经纬度算路
  AMapNavi.getInstance(this).calculateRideRoute(start, end);

步行算路示例代码:

// 起点信息
  NaviLatLng start = new NaviLatLng(39.993308, 116.473199);
  // 终点信息
  NaviLatLng end = new NaviLatLng(39.917834, 116.397036);
  // 经纬度算路
  AMapNavi.getInstance(this).calculateWalkRoute(start, end);

2. POI算路

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

2.1 单路径规划

示例代码: 

// 构造起点POI
  NaviPoi start = new NaviPoi("故宫博物馆", null, "B000A8UIN8");
  // 构造终点POI
  NaviPoi end = new NaviPoi("北京大学", null, "B000A816R6");
  // 进行骑行算路
  AMapNavi.getInstance(this).calculateRideRoute(start, end, TravelStrategy.SINGLE);

2.2 多路径规划

示例代码: 

// 构造起点POI
  NaviPoi start = new NaviPoi("故宫博物馆", null, "B000A8UIN8");
  // 构造终点POI
  NaviPoi end = new NaviPoi("北京大学", null, "B000A816R6");
  // 进行步行算路
  AMapNavi.getInstance(this).calculateWalkRoute(start, end, TravelStrategy.MULTIPLE);

3. 处理结果

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

@Override
    public void onCalculateRouteSuccess(AMapCalcRouteResult routeResult) {
        // 获取路线数据对象
        HashMap<Integer, AMapNaviPath> naviPaths = AMapNavi.getInstance(this).getNaviPaths();
        // 绘制显示路径
        ...
    }

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

@Override
    public void onCalculateRouteSuccess(AMapCalcRouteResult routeResult) {
        // 开启导航
        AMapNavi.getInstance(this).startNavi(NaviType.GPS);
    }

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

骑步行导航适配问题

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

AMapNavi.getInstance(this.getApplicationContext()).setIsNaviTravelView(true);

返回顶部 示例中心 常见问题 智能客服 公众号
二维码