产品服务
解决方案
文档与支持
定价
基础功能
下载开发文档
初始化SDK
1. 初始化时机

SDK的初始化时机建议在App启动的时候进行 ,在以下回调函数里进行SDK的初始化:

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
//获取保存this.context, 导航SDK初始化时作为参数传递
}
onWindowStageCreate(windowStage: window.WindowStage): void {
//初始化
}
2. 初始化地图SDK
Initializer.getInstance().initialize(AppKey(秘钥), Context)
.then(() => {
})
3. 初始化导航SDK
sdkService: BNSDKService = new BNSDKService() //持有导航SDK实例,避免释放
initNaviSDK() {
this.sdkService.naviInitializer.initNavi(Context) //onCreate获取的this.context
}
4. 初始化demo
sdkService: BNSDKService = new BNSDKService() //持有导航SDK实例,避免释放
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
//获取保存this.context, 导航SDK初始化时作为参数传递
}
onWindowStageCreate(windowStage: window.WindowStage): void {
//初始化
Initializer.getInstance().initialize(AppKey(秘钥), this.context)
.then(() => {
this.initNaviSDK()
})
}
initNaviSDK() {
this.sdkService.naviInitializer.initNavi(this.context) //onCreate获取的this.context
}
创建地图

SDK初始化完成之后,在首页或者需要底图的页面的build()中完成创建:

NaviMapView({
onReady: (err, map: BdMapController) => {
}
})
路线规划

SDK初始化完成后,就可以进行路径规划,代码如下:

startRoutePlan() {
let nodes:BNAbilityRoutePlanNodeParam[] = []
//起点
const startPoint: BNAbilityRoutePlanNodeParam = new BNAbilityRoutePlanNodeParam()
startPoint.nodeType = BNEngineRoutePlanNodeTypeEnum.MyLoc
startPoint.title = '我的位置'
nodes.push(startPoint)
//途径点,最大支持15个途径点
//...nodes.push(途经点)
//终点
const endPoint: BNAbilityRoutePlanNodeParam = new BNAbilityRoutePlanNodeParam();
endPoint.nodeType = BNEngineRoutePlanNodeTypeEnum.Pos
endPoint.pos = new BNPoint(<经度>, <纬度>)
endPoint.coordType = coordType
nodes.push(endPoint)
const param = new BNAbilityRoutePlanParam()
param.nodes = nodes;
param.routePlanMode = BNRoutePlanModeType.Car //新能源模式算路传BNRoutePlanModeType.Energy
this.sdkService.routePlan.routePlan(param)
}

需要注意以下几点:

1、如果算路的起点是用户当前的位置,需要把路线节点的title设置为【我的位置】, nodeType为BNEngineRoutePlanNodeTypeEnum.MyLoc;
2、BNAbilityRoutePlanNodeParam的uid参数,如果有值的话,需要赋值,提升绑路的准确性。

路径规划结果监听:

1、实现监听协议
class xxxListener implements BNIRoutePlanListener {
/**
* 算路开始,回调算路ID,可通过这个ID取消算路
* @param routePlanID
*/
onRoutePlanStart(routePlanID: number) {
}
/**
* 算路成功
* @param result
* @param calcId
*/
onRoutePlanSuccess(result: BNIRouteItem[] | undefined, calcId: number) {
this.sdkService.routePlan.selectRoute(0) //算路成功之后需要设置当前选中的路线
}
/**
* 算路失败
* @param errorCode
*/
onRoutePlanFailed(errorCode: number) {
}
}
2、增加/移除监听
//初始化监听者
this.routePlanListener = New xxxListener()
//增加
this.sdkService.routePlan.addRoutePlanListener(this.routePlanListener)
//移除
this.sdkService.routePlan.removeRoutePlanListener(this.routePlanListener)
发起导航

算路完成后,即可发起导航,进入导航页面。需要在算路回调成功之后跳转导航页面: 注意:导航组件和地图组件是独立的,导航页不包含地图。

BNMapNaviComponent()
参数:
isNewEnergy: xxxx, //是否新能源导航,false为驾车导航,ture为新能源导航
isSimulate: xxxx, //是否是模拟导航
goBack: () => {} //返回退出时的执行方法
1. 驾车导航/新能源导航

通过isNewEnergy字段来区分使用驾车导航方式还是新能源导航方式。

//驾车导航方式
BNMapNaviComponent({
isNewEnergy: false, //是否新能源导航,false为驾车导航,ture为新能源导航
isSimulate: false,
goBack: () => {}
})
//新能源导航方式
BNMapNaviComponent({
isNewEnergy: true, //是否新能源导航,false为驾车导航,ture为新能源导航
isSimulate: false,
goBack: () => {}
})
2. 模拟导航

通过isSimulate字段来区分是否使用模拟导航的方式。

//驾车模拟导航导航方式
BNMapNaviComponent({
isNewEnergy: false,
isSimulate: true,
goBack: () => {}
})

上一篇

工程配置与SDK集成

下一篇

高级功能

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