android筛选回调,路线选择-Android

乘客端选择路线

注意:从司乘同显3.0.0版本开始,支持乘客端在 行程前 和 行程中 设定司机送乘客的路线 8.1 司机端 司机端需要打开下面两个开关,乘客端才能正常路线选择:

1.司机端

司机端需要打开下面两个开关,乘客端才能正常路线选择:// 开启多备选模式,行程中选路需要开启多备选路线支持mDriverRouteManager.setMultipleRouteNaviMode(true);//是否允许乘客端选路mDriverRouteManager.setAllowingClientChooseRouteEnable(true);

2.乘客端

2.1.获取乘客端选择路线管理类需要通过mPassengerRouteManager.getPassengerSelectRouteManager() 获取 乘客端路线选择管理类;//获取乘客端选择路线管理类PassengerSelectRouteManager mPassengerSelectRouteManager = mPassengerRouteManager.getPassengerSelectRouteManager();//设定选路界面对应的 AMap 对象,主要是用来绘制对应的覆盖物(起终点、备选路线等)mPassengerSelectRouteManager.initMap(mMap);

2.2.设置监听//设置乘客端选择路线状态监听mPassengerSelectRouteManager.setPassengerSelectRouteCallback(new PassengerSelectRouteManager.PassengerRouteSelectCallback() {@Overridepublic boolean onSelectRoute(List naviPathInfos) {Log.e("amap_sctx", "SelectRoutManager onSelectRoute:" + (naviPathInfos == null));//回调备选路线信息,详情参考NaviPathInfo 参数介绍return false;}@Overridepublic void onFocusRoute(NaviPathInfo naviPathInfo) {if (naviPathInfo != null) {// 回调被选中的备选路线信息Log.e("amap_sctx", "路线高亮切换成功: " + currentRouteId);}}@Overridepublic void onError(final int errorCode, final String message) {if (errorCode == 0) {// 选路成功}Log.e("amap_sctx", "onError: " + errorCode + " " + message + " currentRouteId " + currentRouteId);//选择路线状态回调,包含选择路线成功或者失败,具体参考 SCTXConfig 类里定义的错误码}});

2.3.开始选路行车前乘客端选路会实时规划上车点到下车点的路线供选择,选定后,司机端在切换到行程中会使用该路线进行导航;行程中乘客端选路会依赖司机端同步的多备选路线,切换实时生效;//开始刷新路线mPassengerSelectRouteManager.startPassengerSelectRoute();

2.4.选定路线(注意:行程前选择路线后,目的地有变更或者新增途经点,选路均会失效)//选定某条路线mPassengerSelectRouteManager.selectRoute(naviPathInfo.getRouteId());

错误码:(详情参见SCTXConfig)/*** 乘客端,推送选择路线到司机端成功* @since 3.0.0*/public final static int SCTX_ERROR_PASSENGER_PUSH_SELECT_ROUTE_SUCCESS = 3003;/*** 乘客端,推送选择路线到司机端失败* @since 3.0.0*/public final static int SCTX_ERROR_PASSENGER_PUSH_SELECT_ROUTE_FAILED = 3004;/*** 司机端,切换行程前选择路线成功* @since 3.0.0*/public final static int SCTX_ERROR_DRIVER_CHANGE_BEFORE_PASSENGERONBOARD_SELECT_ROUTE_SUCCESS = 3005;/*** 司机端,切换行程前选择路线失败* @since 3.0.0*/public final static int SCTX_ERROR_DRIVER_CHANGE_BEFORE_PASSENGERONBOARD_SELECT_ROUTE_FAILED = 3006;/*** 司机端,切换行程中选择路线成功* @since 3.0.0*/public final static int SCTX_ERROR_DRIVER_CHANGE_AFTER_PASSENGERONBOARD_SELECT_ROUTE_SUCCESS = 3007;/*** 司机端,切换行程中选择路线失败* @since 3.0.0*/public final static int SCTX_ERROR_DRIVER_CHANGE_AFTER_PASSENGERONBOARD_SELECT_ROUTE_FAILED = 3008;/*** 该行程有设置途经点,司机端切换路线失败* @since 3.0.0*/public final static int SCTX_ERROR_DRIVER_EXISTWAYPOINTS_CHANGE_ROUTE_FAILED = 3010;/*** 乘客端,重算路径与当前一致,请稍后再试* @since 3.0.0*/public final static int SCTX_ERROR_PASSENGER_REFRESH_SELECT_ROUTE_NO_UPDATE = 3011;/*** 该行程目的地有变更,司机端切换路线失败* @since 3.0.0*/public final static int SCTX_ERROR_DRIVER_ENDPOSITION_HAS_CHANGE_CHANGE_ROUTE_FAILED = 3012;

2.5.停止选路//停止选路mPassengerSelectRouteManager.stopPassengerSelectRoute();

3、效果预览

行程前选路

e46ac7f07c09d5e9b6bb97f007429165.gif

行程中选路

26cbd26050e98c7dfd6260b00a3c251e.gif

司机端路线选择

注意: 司乘同显从2.3.1版本之后支持司机端路线切换,司机端在每次算路成功时,会回调2-3条路线信息供用户选择

1.设置路线回调监听//路线信息回调mDriverRouteManager.setDriverRouteCallback(new DriverRouteManager.DriverRouteCallback() {/*** @param distance 已行驶距离(暂未实现)* @param time 已行驶时间(暂未实现)* @param remainingDistance 剩余距离* @param estimatedTime 预计时间*/@Overridepublic void onRouteStatusChange(float distance, long time, float remainingDistance, long estimatedTime) {Log.e("sctx_amap", "remainingDistance:" + remainingDistance + " estimatedTime:" + estimatedTime);}@Overridepublic void onArriveWayPoint(WayPointInfo wayPointInfo) {//途经点回调,拼车状态下}@Overridepublic void onArrivePickUpPosition() {//到达上车点}@Overridepublic void onArriveDestination() {//到达终点}@Overridepublic void onCalculateRouteFailure() {//算路失败,建议使用onError ,错误码 1001}@Overridepublic void onError(int errorCode, String message) {Log.e("sctx_amap", "errorCode:" + errorCode + " message:" + message);}@Overridepublic void onCalculateRouteSuccess(int[] ints) {//算路成功回调}/*** 算路成功回调所有路线基本信息* @param naviPathInfos* @return 如果return true 则代表由用户选择路线,需要调用DriverRouteManager.selectRoute(int routeId)选择路线;* return false代表用户不处理,司乘同显内部会选择第一条路线;* @since 2.3.1*/@Overridepublic boolean onSelectRoute(List naviPathInfos) {//算路成功时回调所有路线信息return false;}});

2.选定路线

通过下面接口设置路线的routeId,司机端路线会立即生效。//选定路线mDriverRouteManager.selectRoute(naviPathInfo.getRouteId());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值