全部服务产品
开发者频道
定价
登录
行程信息显示与管理
下载开发文档
创建地图

首先实例化一个BMKMapView对象,司乘同显页面将通过此视图来展示司乘同显效果。

BMKMapView *mapView = [[BMKMapView alloc] initWithFrame:self.view.frame];
mapView.delegate = self;
创建订单信息

实例化一个BMKSCTXOrderInfo对象,用于设置订单的基本信息。

// 司机位置点
CLLocationCoordinate2D driverPosition = BMKCoordTrans(CLLocationCoordinate2DMake(39.91885, 116.45932), BMK_COORDTYPE_GPS, BMK_COORDTYPE_BD09LL);
// 订单起点
BMKSCTXPOIPointInfo *startPOI = [[BMKSCTXPOIPointInfo alloc] init];
startPOI.coordinate = BMKCoordTrans(CLLocationCoordinate2DMake(39.92144, 116.53370), BMK_COORDTYPE_GPS, BMK_COORDTYPE_BD09LL);
// 订单终点
BMKSCTXPOIPointInfo *endPOI = [[BMKSCTXPOIPointInfo alloc] init];
endPOI.coordinate = BMKCoordTrans(CLLocationCoordinate2DMake(40.04162, 116.30654), BMK_COORDTYPE_GPS, BMK_COORDTYPE_BD09LL);
BMKSCTXOrderInfo *order = [[BMKSCTXOrderInfo alloc] initWithOrderID:@"订单号" userID:@"厂商唯一标志符" driverID:@"订单对应的司机唯一标志符" driverPosition:driverPosition startPointInfo:startPOI endPointInfo:endPOI coordType:BMK_SCTX_COORDTYPE_BD09LL];
自定义配置

如果需要自定义标注和路况纹理的图片,还需要实例化一个BMKSCTXPassengerDisplayOption对象;通过BMKSCTXPassengerDisplayOption对象设置标注与路线的显示样式。 包括小车、起终点的图片,路线宽度,路况纹理等。SDK均提供默认值,没有特殊需求,可以不设置

BMKSCTXPassengerDisplayOption *option = [[BMKSCTXPassengerDisplayOption alloc] init];
// 线宽
option.lineWidth = 5;
// 3D小车图片数组
NSMutableArray *car3DImages = [NSMutableArray array];
NSInteger interval = 45;
// 初始小车图片车头向右,逆时针增加
for (int begin = 0; begin < 360; begin += interval) {
NSString *carImageName = [NSString stringWithFormat:@"sctx_car_%d.png",begin];
UIImage *carImage = [UIImage imageNamed:carImageName];
if (carImage) {
[car3DImages addObject:carImage];
}
}
if (car3DImages && car3DImages.count > 0) {
option.car3DImages = car3DImages;
}
初始化司乘同显服务

根据以上配置创建司乘同显服务对象,并设置司乘同显服务代理。

self.sctxManager = [[BMKSCTXPassengerManager alloc] initWithMapView:mapView orderInfo:order displayOption:option];
self.sctxManager.delegate = self;
司乘同显代理回调

设置司乘同显代理后,开发者可以通过 BMKSCTXPassengerManagerDelegate回调接口获取剩余距离、预计剩余时间、服务错误码,查看修改订单终点信息回调状态、拉取到司机位置回调状态,以及查看司乘同显过程中,不同处理结果回调(如:首条路线绘制完成)。

/**
剩余距离、预计剩余时间的回调接口,当二者有变化时,SDK通过此接口通知APP
@param manager 司乘同显服务管理对象
@param remainingDistance 剩余距离(单位:米)
@param estimatedTime 剩余时间(单位:秒)
*/
- (void)onRouteStatusChangeForManager:(BMKSCTXPassengerManager *)manager
remainingDistance:(NSUInteger)remainingDistance
estimatedTime:(NSUInteger)estimatedTime;
/**
SDK通过此方法将错误码回调给开发者
@param manager 司乘同显服务管理对象
@param error 错误对象
*/
- (void)onErrorOccurredForManager:(BMKSCTXPassengerManager *)manager
withError:(NSError *)error;
/**
SDK通过此方法告知开发者修改订单终点信息是否成功
@param error 错误码,0:成功,其他:失败
*/
- (void)onUpdateEndPositionInfoResult:(NSError *)error;
/**
* 成功拉取到司机位置的回调
*
* @param driverPosition 司机位置
* @param updateTime 司机位置更新时间
*/
- (void)onDriverPositionUpdated:(CLLocationCoordinate2D)driverPosition
updateTime:(NSTimeInterval)updateTime;
/**
司乘同显过程中,不同处理结果回调
@param statusCode 状态码
@param message 对应状态码信息信息
*/
- (void)onSynchronizationProcessResultCode:(BMKSCTXProcessStatusCode)statusCode
message:(NSString *)message;
生命周期管理
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.mapView viewWillAppear];
// 恢复司乘同显服务
[self.sctxManager onResume];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.mapView viewWillDisappear];
// 暂停司乘同显服务
[self.sctxManager onPause];
self.sctxManager = nil;
}

其它司乘同显相关设置请参考订单管理显示与样式

上一篇

SDK初始化

下一篇

乘客位置

本篇文章对您是否有帮助?