以下是创建订单的几个重要调用方法介绍,更多设置可以参考BNOrderInfo类参考说明:
BNOrderInfo orderInfo = new BNOrderInfo();// 订单状态(一定要使用定义常量)orderInfo.orderState = BNOrderState.WAITING_FOR_SERVICE;// 厂商服务标识orderInfo.companyServerId = "88888888";// 订单idorderInfo.orderId = "1111111";// 司机标识orderInfo.driverId = "222222";// 起点orderInfo.startNode = new BNRoutePlanNode(startLon, startLat, "起点", null, BNRoutePlanNode.CoordinateType.GCJ02);// 司机当前定位点orderInfo.curLocationNode = new BNRoutePlanNode(locLon, locLat, "司机位置", null, BNRoutePlanNode.CoordinateType.GCJ02);// 接乘客点orderInfo.pickupNode = new BNRoutePlanNode(passLon, passLat, "接乘客点", null, BNRoutePlanNode.CoordinateType.GCJ02);
BaiduNaviManagerFactory.getUseCarManager().addOrder(orderInfo);
如果addOrder时订单为待服务状态则不需要调用updateOrder更新订单状态至待服务状态。否则调用:
BaiduNaviManagerFactory.getUseCarManager().updateOrder(orderInfo.orderId, BNOrderState. WAITINT_FOR_SERVICE);
注:该状态没有做任何操作,可酌情省略。
在等待服务状态下点击出发就会进入接乘客状态,通过调用updateOrder方法从等待服务状态进入接乘客状态。
BaiduNaviManagerFactory.getUseCarManager().updateOrder(orderInfo.orderId, BNOrderState.PICKUP_PASSENGER);
进入接乘客状态后会进入前台轻导航模式,此时如果算路失败,会提供算路重试接口,同时在点击导航按钮也会自动进行重新算路。
在接乘客状态点击导航按钮会进入专业导航模式,在点击导航按钮时调用startProfessionalNavi()方法:
BaiduNaviManagerFactory.getLightNaviManager().startProfessionalNavi();
从专业导航模式切换回轻导航模式调用onBackPressed()方法:
BaiduNaviManagerFactory.getRouteGuideManager().onBackPressed(false);
点击到达之后调用updateOrder更新状态至导航SDK,此时会清除路线,结束轻导航:
BNShareLocationManager.getInstance().updateOrder(orderInfo.orderId, BNOrderState.WAITING_FOR_PASSENGER);
点击开始服务后调用updateOrder更新状态至导航SDK,此时会重新发起算路,算路成功后会自动开始前台轻导航,算路失败和点击导航按钮的处理方法和接乘客状态一致:
BNShareLocationManager.getInstance().updateOrder(orderInfo.orderId, BNOrderState.SEND_PASSENGER);
点击服务完成需要调用updateOrder更新状态至导航SDK,同时退出订单流程页面:
BNShareLocationManager.getInstance().updateOrder(orderInfo.orderId, BNOrderState.FINISH);
方法介绍:
/*** 修改订单终点重算路** @param orderId 订单ID* @param endNode 终点坐标*/void updateOrderEndPosition(String orderId, BNRoutePlanNode endNode);
用法示例:
BNRoutePlanNode endNode = new BNRoutePlanNode(114.033634, 22.612795, "", "", BNRoutePlanNode.CoordinateType.BD09LL); BaiduNaviManagerFactory.getUseCarManager().updateOrderEndPosition(orderInfo.orderId, endNode);
上一篇
下一篇
本篇文章对您是否有帮助?