示例中心
功能在线体验
menu 导航 closed 关闭

高德 开发 iOS 导航SDK 开发指南 专业导航 平行路检测

更新时间:2020年10月14日

基本介绍

导航SDK从v6.6.0开始,平行路检测支持“主辅路状态检测”和“高架桥上下状态检测”。当用户所在的位置,具有两条相邻的平行路,如城市快速路的主干道和辅路,绕城高架的桥上和桥下,会收到如下回调,表明目前是支持用户自行切换平行路来触发重算的。 

///可切换到的主辅路类型 since 5.3.0
typedef NS_ENUM(NSInteger, AMapNaviParallelRoadStatusFlag)
{
    AMapNaviParallelRoadStatusFlagNone = 0,         ///< 0 无主辅路可切换
    AMapNaviParallelRoadStatusFlagAssist = 1,       ///< 1 可切换到辅路
    AMapNaviParallelRoadStatusFlagMain = 2,         ///< 2 可切换到主路
};

///可切换到的高架上下类型 since 6.6.0
typedef NS_ENUM(NSInteger, AMapNaviElevatedRoadStatusFlag)
{
    AMapNaviElevatedRoadStatusFlagNone = 0,         ///< 0 无高架可切换
    AMapNaviElevatedRoadStatusFlagUnder = 1,        ///< 1 可切换到高架下
    AMapNaviElevatedRoadStatusFlagUp = 2,           ///< 2 可切换到高架上
};

///平行路状态信息 since 5.3.0
@interface AMapNaviParallelRoadStatus : NSObject

///主辅路标识(存在主辅路时,可切换到的主辅路类型)
@property (nonatomic, assign) AMapNaviParallelRoadStatusFlag flag;

///高架上下标识(存在高架时,可切换到的高架上下类型) since 6.6.0
@property (nonatomic, assign) AMapNaviElevatedRoadStatusFlag hwFlag;

@end

/**
 * @brief 通知当前是否可以进行平行道路切换,包括主路、辅路以及高架桥上、高架桥下. since 5.3.0
 * @param driveManager 驾车导航管理类
 * @param parallelRoadStatus 平行道路信息,参考 AMapNaviParallelRoadStatus 类
 */
- (void)driveManager:(AMapNaviDriveManager *)driveManager updateParallelRoadStatus:(nullable AMapNaviParallelRoadStatus *)parallelRoadStatus;

比如parallelRoadStatus.flag为AMapNaviParallelRoadStatusFlagAssist,表明SDK认为目前自车位置是在主路,如果用户当前确实是在主路,用户就无需做任何动作,如果用户当前是在辅路,那么表明SDK的推测是错的,开发者可以根据回调返回的值提供对应的操作界面,调用AMapNaviDriveManager 的如下函数来让用户切换平行路:  

///平行路切换信息 since 6.6.0
@interface AMapNaviParallelRoadInfo : NSObject

///切换类型, 1:主辅路切换; 2:高架桥上下切换
@property (nonatomic, assign) NSInteger type;

@end

/**
 * @brief 切换平行道路, 包括主辅路切换、高架上下切换. 该方法需要配合 AMapNaviDriveDataRepresentable 的 driveManager:updateParallelRoadStatus: 回调使用. since 5.3.0
 * @param parallelRoadInfo 平行路切换信息,参考 AMapNaviParallelRoadInfo.
 */
- (void)switchParallelRoad:(AMapNaviParallelRoadInfo *)parallelRoadInfo;

操作界面可以参考下图:



新用户
福利
示例
中心
常见
问题