Skip to content

司乘同显接入

接入司乘同显前请确保司机端接入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文档