开发 iOS 导航SDK 开发指南 路线规划 独立路径规划

独立路径规划 最后更新时间: 2021年01月22日

基本介绍

独立路径规划是指路径规划的结果不会自动应用于当前导航,需要手动调用API传入路径规划结果来开始导航。可用于不干扰本次导航的单独路径规划场景,比如路线预览等。适用于驾车/货车路径规划、步行路径规划、骑行路径规划。支持以下几种功能的路径规划功能:

  • 无起点路径规划:路径规划时,起点坐标传空
  • 经纬度路径规划:路径规划时,起终点AMapNaviPOIInfo只传经纬度
  • POI路径规划:路径规划时,可传入POIID,提高规划的准确性

1.独立路径规划功能

要实现独立路径规划功能,需要了解以下几个接口:

  •  驾车/货车独立路径规划接口 
/**
 * @brief 独立算路能力接口,可用于不干扰本次导航的单独算路场景. since 7.7.0
 * @param startPOIInfo  起点POIInfo,参考 AMapNaviPOIInfo. 如果以“我的位置”作为起点,请传nil. 如果startPOIInfo不为nil,那么POIID合法,优先使用ID参与算路,否则使用坐标点.
 * @param endPOIInfo    终点POIInfo,参考 AMapNaviPOIInfo. 如果POIID合法,优先使用ID参与算路,否则使用坐标点. 注意:POIID和坐标点不能同时为空
 * @param wayPOIInfos   途经点POIInfo,最多支持16个途经点,超过16个会取前16个. 如果POIID合法,优先使用ID参与算路,否则使用坐标点. 注意:POIID和坐标点不能同时为空
 * @param strategy      路径的计算策略,建议使用 AMapNaviDrivingStrategyMultipleDefault,与[高德地图]默认策略一致 (避让拥堵+速度优先+避免收费)
 * @callback 算路完成的回调.  算路成功时,routeGroup 不为空;算路失败时,error 不为空,error.code参照 AMapNaviCalcRouteState.
 * @return 规划路径所需条件和参数校验是否成功,不代表算路成功与否
 */
- (BOOL)independentCalculateDriveRouteWithStartPOIInfo:(nullable AMapNaviPOIInfo *)startPOIInfo
                                            endPOIInfo:(nonnull AMapNaviPOIInfo *)endPOIInfo
                                           wayPOIInfos:(nullable NSArray<AMapNaviPOIInfo *> *)wayPOIInfos
                                       drivingStrategy:(AMapNaviDrivingStrategy)strategy
                                              callback:(nullable void (^)(AMapNaviRouteGroup *_Nullable routeGroup, NSError *_Nullable error))callback;
  • 驾车独立路径规划示例   
    AMapNaviPoint *startPoint = [AMapNaviPoint locationWithLatitude:39.993306 longitude:116.473004];
    AMapNaviPoint *endPoint   = [AMapNaviPoint locationWithLatitude:39.976941 longitude:116.463375];
    AMapNaviPOIInfo *startPOI =  [[AMapNaviPOIInfo alloc] init];
    // POI的id
    startPOI.mid = @"";
    // POI的坐标点
    startPOI.locPoint = startPoint;
    // 车头方向角度, 默认为-1, 0为正北, 顺时针方向增加. 注意:mid == nil && locPoint != nil && startAngle >=0 才起作用
    startPOI.startAngle = 0;
    AMapNaviPOIInfo *endPOI =  [[AMapNaviPOIInfo alloc] init];
    // POI的id
    endPOI.mid = @"B000A81FY5";
    // POI的坐标点
    endPOI.locPoint = endPoint;
    // 车头方向角度, 默认为-1, 0为正北, 顺时针方向增加. 注意:mid == nil && locPoint != nil && startAngle >=0 才起作用
    endPOI.startAngle = 0;
    // 1. 起点坐标为空:则为无起点路径规划
    // 2. 起终点只传经纬度为经纬度路径规划
    // 3. 起终点只传POIID为POIID路径规划
    // 4. 起终点传startAngle、locPoint、mid 则为起点角度路径规划
    [[AMapNaviDriveManager sharedInstance] independentCalculateDriveRouteWithStartPOIInfo:nil endPOIInfo:endPOI wayPOIInfos:nil drivingStrategy:AMapNaviDrivingStrategyMultipleAvoidCost callback:^(AMapNaviRouteGroup * _Nonnull routeGroup, NSError * _Nonnull error) {
        NSLog(@"group = %@, error = %@",routeGroup,error);
    }];
    
  •  步行独立路径规划接口 
/**
 * @brief 独立算路能力接口,可用于不干扰本次导航的单独算路场景. since 7.8.0
 * @param startPOIInfo  起点POIInfo, 参考 AMapNaviPOIInfo. 如果以“我的位置”作为起点,请传nil. 如果startPOIInfo不为nil,那么POIID合法,优先使用ID参与算路,否则使用坐标点
 * @param endPOIInfo  终点POIInfo, 参考 AMapNaviPOIInfo. 如果POIID合法,优先使用ID参与算路,否则使用坐标点. 注意:POIID和坐标点不能同时为空
 * @param strategy  路径的计算策略,参考 AMapNaviTravelStrategy.
 * @callback 算路完成的回调.  算路成功时,routeGroup 不为空;算路失败时,error 不为空,error.code参照 AMapNaviCalcRouteState.
 * @return 规划路径所需条件和参数校验是否成功,不代表算路成功与否
 */
- (BOOL)independentCalculateWalkRouteWithStartPOIInfo:(nullable AMapNaviPOIInfo *)startPOIInfo
                                           endPOIInfo:(nonnull AMapNaviPOIInfo *)endPOIInfo
                                             strategy:(AMapNaviTravelStrategy)strategy
                                             callback:(nullable void (^)(AMapNaviRouteGroup *_Nullable routeGroup, NSError *_Nullable error))callback;
  •  骑行独立路径规划接口 
/**
 * @brief 独立算路能力接口,可用于不干扰本次导航的单独算路场景. since 7.7.0
 * @param startPOIInfo  起点POIInfo, 参考 AMapNaviPOIInfo. 如果以“我的位置”作为起点,请传nil. 如果startPOIInfo不为nil,那么POIID合法,优先使用ID参与算路,否则使用坐标点
 * @param endPOIInfo  终点POIInfo, 参考 AMapNaviPOIInfo. 如果POIID合法,优先使用ID参与算路,否则使用坐标点. 注意:POIID和坐标点不能同时为空
 * @param strategy  路径的计算策略,参考 AMapNaviTravelStrategy.
 * @callback 算路完成的回调.  算路成功时,routeGroup 不为空;算路失败时,error 不为空,error.code参照 AMapNaviCalcRouteState.
 * @return 规划路径所需条件和参数校验是否成功,不代表算路成功与否
 */
- (BOOL)independentCalculateRideRouteWithStartPOIInfo:(nullable AMapNaviPOIInfo *)startPOIInfo
                                           endPOIInfo:(nonnull AMapNaviPOIInfo *)endPOIInfo
                                             strategy:(AMapNaviTravelStrategy)strategy
                                             callback:(nullable void (^)(AMapNaviRouteGroup *_Nullable routeGroup, NSError *_Nullable error))callback;

2.导航

独立路径规划的路线结果可以用于路线预览,也可以用于直接导航;用于直接导航时,也支持行前选路

接口如下:

//开始GPS导航
[[AMapNaviDriveManager sharedInstance] startGPSNavi:independentRouteGroup];
//开始模拟导航
[[AMapNaviDriveManager sharedInstance] startEmulatorNavi:independentRouteGroup];
  • 使用驾车独立路径规划开始导航示例
[[AMapNaviDriveManager sharedInstance] independentCalculateDriveRouteWithStartPOIInfo:nil endPOIInfo:endPOI wayPOIInfos:nil drivingStrategy:AMapNaviDrivingStrategyMultipleAvoidCost callback:^(AMapNaviRouteGroup * _Nonnull routeGroup, NSError * _Nonnull error) {
     // 1.获取独立算路的结果
     AMapNaviRouteGroup *independentRouteGroup = routeGroup;
     NSNumber *lastRouteIDs = [independentRouteGroup.naviRouteIDs lastObject];
     // 2.行前选路
     [independentRouteGroup selectNaviRouteWithRouteID:[lastRouteIDs integerValue]];
     // 3.使用独立路径规划的路线,开始导航
     [[AMapNaviDriveManager sharedInstance] startGPSNavi:independentRouteGroup];
}];
返回顶部 示例中心 常见问题 智能客服 公众号
二维码