Appearance
司乘同显接入
接入司乘同显前请确保司机端接入GPS点串流SDK,具体请参考《Android GPS点串流上报SDK》
创建DSyncTripOpenInfo
首先司乘同显构建必要的一订单信息的基本信息
DSyncTripOpenInfo info = new DSyncTripOpenInfo.Builder()
.thirdPartyUid("司机id") //订单来源第三方时必填,这里设置的是司机id
.thirdPartyOid("第三方订单id")//订单来源第三方时必填,订单id
.orderSource("订单来源")//必填,订单来源第三方请设置DSyncTripOpenInfor.THIRD_PARTY
.openUid("司机id")//订单来源是滴图时必填,司机id
.openOid("订单id") // //订单来源是滴图时 必填
.build();创建DSyncTripInitParams
提供构建司乘同显管理类的必须参数
DSyncTripInitParams params = new DSyncTripInitParams.Builder()
.startPinResId(“起点资源图片id”)//必填
.endPinResId(“终点资源图片id”)//必填
.dSyncTripOpenInfo("具体看”构建入参DSyncTripOpenInfo“)//必填
.orderStartAddressName(startAddrName)//必填
.orderEndAddressName(endAddressName)//必填
.passengerPhoneNum(passengerPhoneNum)//必填
.showWalkLine("是否展示步行引导线")//选填,默认关闭
.build();创建入参DSyncTripOrderProperty
DSyncTripOrderProperty orderProperty = new DSyncTripOrderProperty();
order.orderId = "订单id"//必传
order.orderStage =DSyncTripConstant.ORDER_STAGE.ON_TRIP"//必填,订单状态
ON_TRIP是行程中,如果是等待接驾段设置WAIT_FOR_PICK
order.token = "乘客登录后的token信息";//必填
order.driverId = "司机的唯一标识id"; //必填
order.passengerPhone = "乘客手机号";//必填
order.orderStartPosition = "订单起点经纬度"//必填
order.orderDestPosition = "订单终点经纬度"//必填创建司乘同显控制类、开启司乘同显
DSyncTripManager mDSyncTripManager = new DSyncTripManager(
Context ctx ,//必填
MapView mapView ,//地图实例 ,必填
DSyncTripType.NORMAL_SYNC_TRIP,//司乘同显类型,必填
DSyncTripInitParams params);//必填,具体参考"构建入DSyncTripInitParams"创建完DSyncTripManager实例对象后,请先设置一些必要的参数信息再开启司乘同显
mDSyncTripManager.setSyncTripOrderProperty(orderProperty);//订单信息,如果 订单状态有改变,请实时调用刷新
mDSyncTripManager.setCarMarkerBitmap("小车资源图");
mDSyncTripManager.setNavigationLineMargin("设置司乘同显时页面左上右下的间距");//主要用来做最佳view,保证路线和小车在视野范围内
mDSyncTripManager.setRouteChangedCallback(new IRouteChangedCallback() {
@Override
public void onRouteChanged() {
//主要用来更新ETA、EDA信息
}
});//设置路线数据更新的回调
mDSyncTripManager.getCarMarker(new ICarMarkerCallback() {
@Override
public void onCarMarkerAdd(Marker carMarker) {
//获取小车marker添加的时机和marker对象
}
@Override
public void onCarMarkerRemove() {
//获取小车marker移除的时机
}
});//获取小车Marker,通过Marker的show InfoWindow方法可以显示自定义气泡
mDSyncTripManager.startSyncTrip();//启动司乘同显停止司乘同显
如果需要停止司乘同显请调用以下方法 mDSyncTripManager.stopSyncTrip();
销毁司乘同显
如果已经不再需要司乘同显且需要释放资源,请调用如下方法 mDSyncTripManager.onDestroy();
marker上添加InfoWindow示例
当路线刷新时,ETA和EDA也会跟着改变,如果需要在小车上方使用infoWindow展示对应信息,可以参考如下示例代码设置:
carMarker.setAnchor(0.5f, 0.5f);
carMarker.setInfoWindowAdapter(new DiMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
//创建气泡上方infoWindow上需要展示的信息
}
});
if (!carMarker.isInfoWindowEnable()) {
carMarker.setInfoWindowEnable(true);
}
if (!carMarker.isInfoWindowShown()) {
carMarker.showInfoWindow();
}针对marker中添加infoWindow具体可参考《Android 地图 SDK》中的API文档
司乘同显常用接口
mDSyncTripManager.isSyncTripRunning();//判断司乘同显是否开启
mDSyncTripManager.getLeftEtaStr()//获取ETA(预估剩余时间)信息
mDSyncTripManager.getLeftDistance()//获取EDA(预估剩余距离)信息
mDSyncTripManager.onPause();//当司乘同显页面切到后台调用
mDSyncTripManager.onResume();//当司乘同显页面切到前台后调用
mDSyncTripManager.modifyBestView()//调整最佳view更多接口请参考API文档
