全部服务产品
开发者频道
服务升级
登录
行程信息显示与管理
下载开发文档
设置路线绘制参数

绘制配置项,开发者可以根据实际业务需要,定制各种UI展示,包括不同状态下小车、路线、路况、起终点等ICON、是否展示InfoWindow、是否自动进行地图最佳视野适配、覆盖物的压盖层级等,更多设置可以参考DisplayOptions类参考说明。
注意:如果使用SDK提供的默认绘制样式,则直接使用默认构造函数即可。但是如果自定义,传入参数为null,则会抛出参数异常。

DisplayOptions mDisplayOptions = new DisplayOptions()
// 设置展示起点气泡信息
Button startInfo = new Button(this);
startInfo.setText("请在这里上车");
startInfo.setBackgroundResource(R.drawable.infowindow);
// 设置订单起点infoWindow的View控件 用户不设置则不做显示
mDisplayOptions.setStartPositionInfoWindowView(startInfo);
// 设置订单起点InfoWindow是否显示在地图上
mDisplayOptions.showStartPositionInfoWindow(true);
// 设置路线+路况是否显示在地图上
mDisplayOptions.showRoutePlan(true);
// 设置展示乘客当前的轨迹点
// 如果开发者自己实现了乘客的轨迹点展示,则可以关闭该项。并且不需要再司乘同显中开启定位功能。否则需要开启定位
// 功能,并把位置点传递给司乘同显
mDisplayOptions.showPassengereIcon(true);
// 设置使用3D小车模式。3D小车功能通过一系列不同角度的图片实现
mDisplayOptions.set3DCarMarkerEnable(true);
// 定义小车在不同角度下的状态,如果需要具体可以参考官网demo中示例
List<BitmapDescriptor> carIconList = getCarIconList();
//设置3D车标图片列表 3D Marker的Icon列表,需要开发者按照逆时针顺序(Maker的角度是逆时针)将不同角度的图片添加到List中, 所有图片角度需要均等分360度,即如果有10张图片(其中,360度的图片和0度图片重合,所以不放360角度图片。), 则每张图片按照36度间隔划分。
mDisplayOptions.set3DCarMarkerIconList(carIconList);
// 设置地图上子View距离地图View(布局)的边距
mDisplayOptions.setMapViewPadding(200, 300, 200, 300);
创建司乘同显监听类

在监听回调中可以获取到已行使的距离及时间、剩余的距离及时间、司机位置、乘客位置、错误处理结果等信息。

// sync监听类(已行使距离,时间,剩余距离,时间;司机位置,乘客位置,错误处理结果)
private class MySyncDisplayListener implements SynchronizationDisplayListener {
@Override
public void onRoutePlanInfoFreshFinished(float remainingDistance, long estimatedTime) { Button info = new Button(SynchronizationDemo.this); info.setBackgroundResource(R.drawable.infowindow); info.setWidth(300); info.setTextSize(10.0f); info.setText(String.format("剩余:%skm, 预计:%dmin", remainingDistance / 1000, estimatedTime / 60)); // 更新小车位置气泡(InfowWindow)的view控件 如不设置,或者设置为null,则不做绘制 mSyncDisplayManager.updateCarPositionInfoWindowView(info);
}
@Override
public void onSynchronizationProcessResult(int statusCode, String message) { }
}
创建司乘同显管理器对象

核心方法,将创建好的地图对象、订单管理对象、路线绘制对象传入管理器构造函数中,更多设置可以参考SynchronizationDisplayManager类参考说明:

// 初始化SynchronizationDisplayManager
mSyncDisplayManager = new SynchronizationDisplayManager(this, mBaiduMap, mRoleOptions, mDisplayOptions);
// 注册结果监听,获取ETA,处理结果状态等信息
mSyncDisplayManager.registerSynchronizationDisplayListener(mySyncDisplayListener);
// 设置位置刷新频率,单位是秒,默认5s,最小值为1s
mSyncDisplayManager.setDriverPositionFreshFrequency(3);
// 更新绘制参数 如果需要在不同的订单状态下,展示不同的需求,这需要结合订单状态,调用该方法设置。
mSyncDisplayManager.updateDisplayOptions(mDisplayOptions);
// 更新订单状态信息 司乘同显实际上根据订单状态触发绘制,不同的状态绘制策略不一致,所以此方法是触发绘制的唯一入口。
// LBS_ORDER_STATE_UNSPECIFIED = 0 未知订单状态,不做任何处理;
// LBS_ORDER_STATE_READY_FOR_SERVICE = 1 司机待服务状态 ,开始拉取数据
// LBS_ORDER_STATE_PICK_UP_PASSENGER = 2 司机去上车点接乘客状态
// LBS_ORDER_STATE_WAIT_PASSENGER = 3 司机已到上车点,等待乘客上车状态
// LBS_ORDER_STATE_DELIVER_PASSENGER = 4 乘客已经上车,司机送乘客去目的地
// LBS_ORDER_STATE_ORDER_COMPLETE = 5 订单完成
mSyncDisplayManager.updateOrderState(SynchronizationConstants.LBS_ORDER_STATE_READY_FOR_SERVICE);
// 使用已经设置的(或默认的)Padding值进行最佳视野立即适配
mSyncDisplayManager.adjustVisibleSpanByUser()
生命周期管理

在对应Activity的生命周期中管理司乘同显管理器对象的生命周期。

@Override
protected void onResume() {
super.onResume();
// 当APP有前台转到后台时调用该方法,停止数据刷新。对应Activity的onPause意义
mSyncDisplayManager.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
// 当APP由后台转到前台时,调用该方法,进行数据刷新。对应Activity的onResume意义
mSyncDisplayManager.onPause();
mMapView.onPause();
}
/**
* 释放资源
*/
@Override
protected void onDestroy() {
super.onDestroy();
// 注销已经注册的司乘同显监听mSyncDisplayManager.unRegisterSynchronizationDisplayListener(mySyncDisplayLi
stener);
// 该方法要早于地图资源释放,即要早于MapView的onDestroy()方法之前否则会出现地图无法释放,或者crash等问题。
mSyncDisplayManager.release();
mMapView.onDestroy();
mMapView = null;
}

上一篇

创建地图

下一篇

乘客位置

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