司乘同显-乘客端-iOS 最后更新时间: 2021年01月22日
概述
司乘同显iOS乘客端服务接入和重要功能介绍, 相关具体接入文档请查看参考手册.
快速接入
**流程与司机端一一对应:
1、创建MAPassengerRouteManager
1) 初始化:
_routeManager = [[MAPassengerRouteManager alloc] initWithMapView:_mapView delegate:self];
//是否开启log输出
_routeManager.enableDebugLog = YES;
//是否显示步行路线
_routeManager.showsWalkPolyline = YES;
//是否显示行驶过的路线
_routeManager.showsPassedTrace = YES;
_routeManager.traceKey = [[SCTXAppSettings sharedInstance] appKey];
_routeManager.traceSID = [[SCTXAppSettings sharedInstance] sid];
_routeManager.carImage = [UIImage imageNamed:@"taxi_car"];
_routeManager.startImage = [UIImage imageNamed:@"startPoint"];
_routeManager.endImage = [UIImage imageNamed:@"endPoint"];
2、设置订单信息
1)创建OrderProperty
[_routeManager setOrderInfoWith:[self getOrderIdText]
beginPosition:_selectedStartPoint.coordinate
endPosition:_selectedEndPoint.coordinate];
3、切换订单状态
1)订单状态类型
///行程状态
typedef NS_ENUM(NSInteger, MASCTXRouteStatus)
{
MASCTXRouteStatusUnspecified = 0, ///<未指定状态
MASCTXRouteStatusPickupPassenger = 1, ///<去接乘客
MASCTXRouteStatusWaitPassenger = 2, ///<等待乘客上车
MASCTXRouteStatusPassengerOnBoard = 3, ///<乘客已上车
MASCTXRouteStatusOrderComplete = 4, ///<订单已结束
MASCTXRouteStatusOffline = 5, ///<离线状态,只走降级策略获取司机位置,内部不做其他请求
};
2)订单状态切换
_routeManager.status = MASCTXRouteStatusXXX;
功能使用
功能1: 展示步行路径规划
///是否显示步行线,默认为NO。只在 MASCTXRouteStatusPickupPassenger和MASCTXRouteStatusWaitPassenger状态有效果。
@property (nonatomic, assign) BOOL showsWalkPolyline;
功能2: 展示历史轨迹
///是否走过的路线,默认为NO。如果设置为YES,则走过路线采用passedTraceImage纹理,设置nil则为默认灰色纹理。
@property (nonatomic, assign) BOOL showsPassedTrace;
功能3: 展示剩余时间 / 剩余里程
/**
@brief 当前导航行程中,剩余距离和时间的回调
@param manager MAPassengerRouteManager
@param remainingDistance 剩余距离
@param estimatedTime 预计时间
*/
- (void)routeStatusChangeForManager:(MAPassengerRouteManager *)manager
remainingDistance:(double)remainingDistance
estimatedTime:(NSTimeInterval)estimatedTime;
乘客端常量枚举值说明
枚举值 | 含义 | 备注 | 建议 |
---|---|---|---|
1014 | 司机端修改上车点 | 收集即可,无需做处理 | |
1015 | 司机端修改目的地 | 收集即可,无需做处理 | |
1016 | 司机端修改途经点 | 收集即可,无需做处理 | |
2001 | 订单不存在 | 一般是由于司机端还没有设置订单信息,乘客端先设置了订单信息,且切换到了接驾或者送驾状态造成的 | 开发确认司乘SDK接口设置订单号一致,不连续报该错误,即认为正常; |
2002 | 参数错误 | 请求参数有误 | 收集即可,并检查错误内容 |
2003 | 订单状态不匹配 | 乘客端设置的订单状态与司机端设置的订单状态不匹配,这种情况下会造成乘客端无法显示路线 | 开发确认司乘SDK状态接口设置一致,不连续报该错误,即认为正常; |
2004 | 无法获取子订单信息 | 开发确认司乘SDK子订单接口设置一致,不连续报该错误,即认为正常; | |
3002 | 拉取选择路线失败 | 收集即可,无需做处理 | |
3003 | 推送乘客选择的路线到司机端成功 | 收集即可,无需做处理 | |
3004 | 推送乘客选择的路线到司机端失败 | 收集即可,无需做处理 | |
3011 | 乘客端重新拉取路线与当前路线一致,请求稍后重试 | 内部保护,避免短时间内重复拉取路线,造成流量浪费 | 收集即可,无需做处理 |
4001 | 司机端GPS信号弱,司机位置更新可能会延时 | 收集即可,无需做处理 |