SDK的初始化时机建议在App启动的时候进行 ,在以下回调函数里进行SDK的初始化:
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {//获取保存this.context, 导航SDK初始化时作为参数传递}onWindowStageCreate(windowStage: window.WindowStage): void {//初始化}
Initializer.getInstance().initialize(AppKey(秘钥), Context).then(() => {})
sdkService: BNSDKService = new BNSDKService() //持有导航SDK实例,避免释放initNaviSDK() {this.sdkService.naviInitializer.initNavi(Context) //onCreate获取的this.context}
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.MyLocstartPoint.title = '我的位置'nodes.push(startPoint)//途径点,最大支持15个途径点//...nodes.push(途经点)//终点const endPoint: BNAbilityRoutePlanNodeParam = new BNAbilityRoutePlanNodeParam();endPoint.nodeType = BNEngineRoutePlanNodeTypeEnum.PosendPoint.pos = new BNPoint(<经度>, <纬度>)endPoint.coordType = coordTypenodes.push(endPoint)const param = new BNAbilityRoutePlanParam()param.nodes = nodes;param.routePlanMode = BNRoutePlanModeType.Car //新能源模式算路传BNRoutePlanModeType.Energythis.sdkService.routePlan.routePlan(param)}
需要注意以下几点:
路径规划结果监听:
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) {}}
//初始化监听者this.routePlanListener = New xxxListener()//增加this.sdkService.routePlan.addRoutePlanListener(this.routePlanListener)//移除this.sdkService.routePlan.removeRoutePlanListener(this.routePlanListener)
算路完成后,即可发起导航,进入导航页面。需要在算路回调成功之后跳转导航页面: 注意:导航组件和地图组件是独立的,导航页不包含地图。
BNMapNaviComponent()参数:isNewEnergy: xxxx, //是否新能源导航,false为驾车导航,ture为新能源导航isSimulate: xxxx, //是否是模拟导航goBack: () => {} //返回退出时的执行方法
通过isNewEnergy字段来区分使用驾车导航方式还是新能源导航方式。
//驾车导航方式BNMapNaviComponent({isNewEnergy: false, //是否新能源导航,false为驾车导航,ture为新能源导航isSimulate: false,goBack: () => {}})//新能源导航方式BNMapNaviComponent({isNewEnergy: true, //是否新能源导航,false为驾车导航,ture为新能源导航isSimulate: false,goBack: () => {}})
通过isSimulate字段来区分是否使用模拟导航的方式。
//驾车模拟导航导航方式BNMapNaviComponent({isNewEnergy: false,isSimulate: true,goBack: () => {}})
上一篇
下一篇
本篇文章对您是否有帮助?