百度导航SDK通过BNStrategyManagerProtocol提供了一些接口用于控制导航状态。
/// 停车场推送 @property (nonatomic, assign) BOOL parkInfo; /// 日夜模式 @property (nonatomic, assign) BNDayNight_CFG_Type dayNightType; /// 实际的日夜模式 (日 or 夜) @property (nonatomic, assign) BNDayNight_Type realDayNightType;; /// 播报模式 @property (nonatomic, assign) BN_Speak_Mode_Enum speakMode; /// 诱导面板模式 @property (nonatomic, assign) BN_Simple_Guide_Mode simpleGuideMode; /// 是否显示实景放大图 @property (assign, nonatomic) BOOL showLiveExpandRoadMap; /// 显示viaduct桥区 @property (nonatomic, assign) BOOL showViaduct; /// 显示智能比例尺开关 @property (nonatomic, assign) BOOL autoLevelShow; /// 显示到终点红线开关 @property (nonatomic, assign) BOOL redLineShow; /// 小窗 @property (nonatomic, assign) BOOL showMapTinyView; /// 横屏开启 @property (nonatomic, assign) BOOL canLandscape; /// 是否支持手势旋转,需要在引擎初始化成功后调用,默认YES @property (nonatomic, assign) BOOL supportRotation; /// 对底图操作是否需要惯性,需要在引擎初始化成功后调用,默认YES @property (nonatomic, assign) BOOL operationInertia; /// 是否开启多路线,需要在算路前设,默认YES @property (nonatomic, assign) BOOL enableMultiRoute; /// 是否支持更多设置功能,默认YES @property (nonatomic, assign) BOOL supportMoreSettings; /// 导航设置面板是否开放路线偏好功能入口,默认YES @property (nonatomic, assign) BOOL supportPreference; /// 导航设置面板是否开放沿途检索功能入口,默认YES @property (nonatomic, assign) BOOL supportPoiSearch; /** * 设置路况是否开启,路况开启需要联网,没有网络,开启路况会失败 * * @param showTraffic 是否显示路况,默认显示 * @param success 成功的回调 * @param fail 失败的回调 */ - (void)trySetShowTrafficInNavi:(BOOL)showTraffic success:(void (^)(void))success fail:(void (^)(void))fail; /** * 设置车牌 * @param carNumber 车牌号, 格式如:"粤B00000" */ - (void)syncCarNumber:(NSString *)carNumber; /** * 获取车牌 */ - (NSString *)getCarNumber; /** * 开关导航声音 * @param turnOn 是否开启导航声音 * @return 开关导航声音是否成功 */ - (BOOL)soundTurnOn:(BOOL)turnOn;
BNStrategyManagerProtocol 导航设置栏目
百度导航SDK通过BNStrategyManagerProtocol提供了⼀些接⼝⽤于控制导航状态。 本次更新主要有以下⽅ 法使⽤,⽅便⽤户在导航⻚⾯设置⼀些⾃定义的View。
// 底部需要预留的⾼度, ⽤于填充⾃身控件默认0 @property (nonatomic, assign) CGFloat bottomButtonHeight; /// 货⻋ - 底部⼯具栏的Y值 @property (nonatomic, assign, readonly) CGFloat truckBottomButtonTop; /// 驾⻋ - 底部⼯具栏的Y值 @property (nonatomic, assign, readonly) CGFloat carBottomButtonTop; /// ⻋标偏移量 @property (nonatomic, assign) CGFloat naviLocationOffset; ///退出导航的时候 设置是否 销毁TTS 默认YES。设置为NO TTS会 占⽤部分内存不释放。需要开发者⾃⼰ ⼿动 是否内存 @property (nonatomic, assign) BOOL exitNaviDestroyTTS; //是否使⽤iOS 系统的TTS库,默认为NO,如果设置为YES,可以去掉导航SDK⾃带的TTS库 @property (nonatomic, assign) BOOL useSystemTTS; //是否使⽤途经点偏好算路 默认 是NO。 //如开启途经点算路。起点可以添加偏好设置。 //路线偏好传⼊值为⽆效。起点没有设置偏好,默认设置智能推荐 //只有设置为YES 才启⽤途经点算路。只针对本次导航⽣效。 @property (nonatomic, assign) BOOL multiplePreferenceEnable; ///设置偏航后回到⽤户指定路线导航 /** 货⻋SDK偏航路线模式0 默认策略,1 偏航路线api提供,2 偏航 回进⼊导航时选的路线*/ @property (nonatomic, assign) int yawSpecifiedRouteNavigation; ------------------ ------------------ ------------------ /// 新增函数 /** * 设置⻋牌 * @param carNumber ⻋牌号, 格式如:"粤B00000" * @param type ⻋牌号, 格式如:"BNTruckCarTypeCommon、BNTruckCarTypeEnegry */ - (void)syncCarNumber:(NSString *)carNumber carType:(BNTruckCarType)type; /** * 获取⻋牌 */ - (NSString *)getCarNumber; /** * 设置⻋辆⻋牌和类型 * @param carModel ⻋Model, 驾⻋只需要carNumber 和 truckCarType * @param carModel.truckCarType ⻋牌类型, 格式如:"BNTruckCarTypeCommon、 BNTruckCarTypeEnegry */ - (void)syncCarModel:(BMCarInfoModel *)carModel; /** * 获取⻋辆model */ - (BMCarInfoModel *)getCarModel; /** 设置摩托⻋⻋牌相关信息,不持久化保存 */ /// @param model 摩托⻋⻋牌 - (void)syncMotorInfoModel:(BNMotorInfoModel *)model;
使用方式: 货车专业导航
- 导航中新增属性使用方式
///将⼯具栏底部预留的⾼度设置成50 #define BOTTOMHEIGHT 50 #define NAVILOCATIONOFFSET 50 ///只设置货⻋专业导航中 (底部深⻘⾊) 底部⾃定义区域 的⾼度。 /// 使⽤驾⻋导航 底部偏移量需要设置成 0 否则会影响 驾⻋carBottomButtonTop的顶部距离。驾⻋底部 视图是不能⾃定的。 BNaviService_Strategy.bottomButtonHeight = BOTTOMHEIGHT; ///设置图 ⻋标的偏移量。 偏移量是在⻋标默认⾼度上 减去 设置的便宜两。设置负数会往下。正数是往上。 BNaviService_Strategy.naviLocationOffset = NAVILOCATIONOFFSET; ///获取货⻋ 导航中⼯具栏的Y值 (深天蓝) 顶部区域 的⾼度 CGFloat truckBottomButtonTop = BNaviService_Strategy.truckBottomButtonTop; ///获取驾⻋导航中⼯具栏的Y值 (深天蓝) 顶部区域 的⾼度。 CGFloat carBottomButtonTop = BNaviService_Strategy.carBottomButtonTop; ///退出导航的时候 设置是否 销毁TTS 默认YES。设置为NO TTS会 占⽤部分内存不释放。需要开发者⾃⼰⼿ 动是否内存 BNaviService_Strategy.exitNaviDestroyTTS = YES;新增函数使⽤://设置⻋牌号码,--此⽅法适⽤ 于驾⻋模式。不适⽤于货⻋的⻋牌。 [BNaviService_Strategy syncCarNumber:@"粤B86544"]; // ⻋牌获取 NSString carNumber = [BNaviService_Strategy getCarNumber]; // 设置货⻋信息 - (void)setTruckInfo { BMTruckInfoModel *model = [[BMTruckInfoModel alloc] init]; model.truckType = BMTruckTypeMedium; model.powerType = BMTruckPowerTypeGasoline; model.carNumber = @"京A66666"; model.emission = 1 * 1000; model.weight = 2.565 * 1000; model.load = 1.73 * 1000; model.length = 6 * 1000; model.width = 2.15 * 1000; model.height = 3.5 * 1000; model.axleNumber = 2; model.plateColor = BNTruckPlateColorGreen; model.axleWeight = 2 * 1000; model.oilCost = 13; model.truckCarType = BNTruckCarTypeEnegry; /// 新能源 、普通⻋ [BNaviService_Strategy syncTruckInfoModel:model]; } /// 设置普通汽⻋的model。可以设置⻋牌和⻋辆类型。 -(void)setCarInfo { BMCarInfoModel *model = [[BMCarInfoModel alloc] init]; model.carNumber = @"京A66666"; model.truckCarType = BNTruckCarTypeEnegry;/// 新能源 、普通⻋ [BNaviService_Strategy syncCarModel:model]; } /// 需要获取⻋信息 BMCarInfoModel *carModel = [BNaviService_Strategy getCarModel];
偏航后回到指定导航路线
此属性需要在算路前设置。设置偏航后回到⽤户指定路线导航。
///货⻋SDK偏航路线模式0 默认策略,1 偏航路线api提供,2 偏航回进⼊导航时选的路线 BNaviService_Strategy.yawSpecifiedRouteNavigation = 1; 1
途经点偏好设置
此功能是可以设置单个点的偏好设置。可以设置起点、途经点的属性。如起点没有设置 默认使⽤智能推 荐。如果途径点没设置偏好会默认使⽤前⼀个的偏好。
此功能需在算路前 设置multiplePreferenceEnable属性。此属性判断是否使⽤了途经点偏好算路功能。 使⽤⽅式:
///算路前 BNaviService_Strategy.multiplePreferenceEnable = YES; ///设置起终点和途经点 BNRoutePlanNode *startNode = [[BNRoutePlanNode alloc] init]; startNode.pos = [[BNPosition alloc] init]; startNode.routePlanMode = BNRoutePlanMode_MainRoad; startNode.pos.x = 113.94765; startNode.pos.y = 22.549738; startNode.pos.eType = BNCoordinate_BaiduMapSDK; [nodesArray addObject:startNode]; BNRoutePlanNode *midNode = [[BNRoutePlanNode alloc] init]; midNode.pos = [[BNPosition alloc] init]; midNode.pos.x = 113.942249; midNode.pos.y = 22.548229; midNode.pos.eType = BNCoordinate_BaiduMapSDK; midNode.routePlanMode = BNRoutePlanMode_MainRoad; //终点 113.941079,22.546103 BNRoutePlanNode *endNode = [[BNRoutePlanNode alloc] init]; endNode.pos = [[BNPosition alloc] init]; endNode.pos.x = 113.941079; endNode.pos.y = 22.546103; endNode.pos.eType = BNCoordinate_BaiduMapSDK; [nodesArray addObject:endNode]; [BNaviService_RoutePlan startNaviRoutePlan:BNRoutePlanMode_Recommend naviNodes:nodesArray time:nil delegete:self userInfo:@{BNaviTripTypeKey: @(naviType)}];