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