以下是创建订单的几个重要调用方法介绍,更多设置可以参考bnorderinfo类参考说明:
bnorderinfo orderinfo =newbnorderinfo();// 订单状态(一定要使用定义常量)orderinfo.orderstate=bnorderstate.waiting_for_service;// 厂商服务标识orderinfo.companyserverid="88888888";// 订单idorderinfo.orderid="1111111";// 司机标识orderinfo.driverid="222222";// 起点orderinfo.startnode=newbnrouteplannode(startlon, startlat,"起点",null,bnrouteplannode.coordinatetype.gcj02);// 司机当前定位点orderinfo.curlocationnode=newbnrouteplannode(loclon, loclat,"司机位置",null,bnrouteplannode.coordinatetype.gcj02);// 接乘客点orderinfo.pickupnode=newbnrouteplannode(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 终点坐标*/voidupdateorderendposition(string orderid,bnrouteplannode endnode);
用法示例:
bnrouteplannode endnode =newbnrouteplannode(114.033634,22.612795,"","",bnrouteplannode.coordinatetype.bd09ll);baidunavimanagerfactory.getusecarmanager().updateorderendposition(orderinfo.orderid, endnode);
上一篇
下一篇
本篇文章对您是否有帮助?