全部服务产品
开发者频道
定价
登录
骑行行多路线
下载开发文档
骑行多路线
1. 初始化BMKWalkNavigationManager
BMKCycleNavigationManager *manager = [BMKCycleNavigationManager sharedManager];
BMKWalkNaviViewController *controller = [[BMKWalkNaviViewController alloc] init];
controller.navigationType = 1;
BOOL inited = [[BMKCycleNavigationManager sharedManager] initNaviEngine:controller option:[self dispalyOption]];
2. 设置是否支持多路线规划
/// 设置是否支持多路线规划选择,可在routePlanDelegate回调中处理多路线并进行绘制选择。默认NO
@property (nonatomic, assign) BOOL enableMultiRoute;
3. 设置(多)路线规划代理
/// 多路线规划代理回调
@property (nonatomic, weak) id <BMKWalkCycleRoutePlanDelegate> routePlanDelegate;
4. 设置起终点

BMKCycleNaviLaunchParam
BMKCycleNaviRouteNodeInfo
nodeInfo只有BMKWalkNavigationRouteNodeKeyword类型起终点支持多路线)

BMKCycleNaviRouteNodeInfo *startNode = [[BMKCycleNaviRouteNodeInfo alloc] init];
startNode.location = self.startAnnotation.coordinate;
startNode.keyword = @"百度大厦";
startNode.type = BMKWalkNavigationRouteNodeKeyword;
BMKCycleNaviRouteNodeInfo *endNode = [[BMKCycleNaviRouteNodeInfo alloc] init];
endNode.location = self.endAnnotation.coordinate;
endNode.keyword = @"百度科技园";
BMKCycleNaviRouteNodeInfo *param = [[BMKWalkNaviLaunchParam alloc] init];
param.startNode = startNode;
param.endNode = endNode;
5. 开始骑行(多)路线规划
// BMK_WALK_CYCLE_NAVIGATION_TYPE_NORMAL_CYCLE 自行车
// BMK_WALK_CYCLE_NAVIGATION_TYPE_ELECTRIC_CYCLE 电动车
param.naviType = BMK_WALK_CYCLE_NAVIGATION_TYPE_ELECTRIC_CYCLE;
[[BMKCycleNavigationManager sharedManager] routePlanWithParams:param];
6. 代理回调BMKWalkCycleRoutePlanDelegate
- (void)onRoutePlanResult:(BMKWalkCycleRoutePlanErrorCode)errorCode naviType:(BMKWalkCycleNavigationType)naviType{
}

6.1 获取多路线信息

BMKCycleNavigationManager
/// 获取导航多路线规划信息 since 6.6.2
/// 需要在算路规划成功(-onRoutePlanResult: naviType:)后获取,否则会为nil
- (NSArray<BMKWalkCycleRouteResult *> *)getCycleNaviMulRouteInfos;

路线信息包含:路线总长度,路线总耗时,红绿灯个数,路段所经过的坐标集合(经纬度点转成的NSValue,经纬度坐标系与全局坐标系对应[BMKMapManager getCoordinateTypeUsedInBaiduMapSDK])

@interface BMKWalkCycleRouteResult : NSObject
/// 路线长度 单位: 米
@property (nonatomic, assign) NSUInteger distance;
/// 路线耗时 单位: 秒
@property (nonatomic, assign) NSUInteger duration;
/// 红绿灯个数
@property (nonatomic, assign) NSUInteger lightCount;
/// 路段所经过的坐标集合
@property (nonatomic, strong) NSArray<NSValue *> *positions;
@end

6.2 绘制多路线

BMKCycleNavigationManager
/// 展示骑行多路线 since 6.4.0
/// @param mapview 展示路线的mapView
/// @return obj 路线BMKPolyline
- (NSArray<BMKPolyline *> *)displayRoutePlanResult:(BMKMapView *)mapview;
7. 选择路线进行导航
BMKCycleNavigationManager
/// 引擎算路接口,用于多路线选路进行导航 since 6.6.2
/// @param routeIndex 路线索引
- (void)naviCalcRoute:(NSInteger)routeIndex;
8. 监听引擎算路代理回调
/// 引擎算路代理,回调成功时即可调用startWalkNaviWithParentController开始导航
@property (nonatomic, weak) id <BMKWalkNaviCalcRouteDelegate> calcRouteDelegate;
9. 引擎算路成功进入导航(ParentController 为nil时将不push)
- (void)onNaviCalcRouteResult:(BMKWalkCycleRoutePlanErrorCode)errorCode naviType:(BMKWalkCycleNavigationType)naviType {
// 开始导航
[[BMKCycleNavigationManager sharedManager] startCycleNaviWithParentController:self isPush:YES];
}

9.1 ParentController 为nil时

a.可获取骑行导航底图对象添加到任何需要的位置

/**
* 获取骑行导航底图对象
*/
- (BMKMapView *)getNaviMap;


b.可创建关联多实例导航View添加到任何需要的位置

BMKMultiNaviView *multiNaviView = [[BMKMultiNaviView alloc] initWithFrame:CGRectMake(0, 150, 200, 300)];
multiNaviView.defaultNaviMapLevel = 19;
// 多实例地图必须在算路前设置多实例导航类型并绑定数据源
BOOL bindFlag = [multiNaviView bindNaviDataSourceWithNaviType:BMK_WALK_CYCLE_NAVIGATION_TYPE_ELECTRIC_CYCLE];
if (bindFlag) {
NSLog(@"SDK-多实例导航数据绑定成功");
} else {
NSLog(@"SDK-多对实例导航数据绑定失败");
}
10. 生命周期
/**
导航过程生命周期函数, 暂停导航
*/
- (void)pause;
/**
导航过程生命周期函数, 恢复导航
*/
- (void)resume;
/**
导航过程生命周期函数, 结束导航
*/
- (void)stop;
11. 销毁manager单例(必须)
/**
销毁单例
*/
+ (void)destroy;

上一篇

步行行前多路线

下一篇

坐标转换

本篇文章对您是否有帮助?