创建订单信息
以下是创建订单的几个重要调用方法介绍,更多设置可以参考BNOrderInfo类参考说明:
BNOrderInfo orderInfo = new BNOrderInfo(); // 订单状态(一定要使用定义常量) orderInfo.orderState = BNOrderState.WAITING_FOR_SERVICE; // 厂商服务标识 orderInfo.companyServerId = "88888888"; // 订单id orderInfo.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);
添加订单至百度导航SDK
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);