覆盖物开源代码中提供了一些基于基础覆盖物而组合而成的高级覆盖物,包括用于显示poi数据,规划路线,公交详情路线的覆盖物。
IndoorRouteOverlay/TransitRouteOverlay/WalkingRouteOverlay/BikingRouteOverlay/DrivingRouteOverlay/MassTransitRouteOverlay/ 以上源码在BaiduMapsApiDemo工程(Eclipse开发环境)和BaiduMapApiASDemo工程(AndroidStudio开发环境)com.baidu.mapapi.ovelayutil包下。 在进行路线规划Overlay绘制时根据开发环境选择开源工程添加至项目中使用。
自V4.1起,新增跨城综合公交路线规划MassTransit,支持起点、终点坐标在不同城市的公交线路规划,可检索火车、飞机、公交、大巴等公共交通线路,同时可以根据不同的方案选择多种策略来完成跨城公共交通线路规划。跨城公交线路规划包含市内公交线路规划transit的全部功能,市内公交线路规划将废弃,建议使用跨城综合公交线路规划。
mSearch = RoutePlanSearch.newInstance();
OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() { ...... @Override public void onGetMassTransitRouteResult(MassTransitRouteResult massTransitRouteResult) { //创建MassTransitRouteOverlay实例 MassTransitRouteOverlay overlay = new MassTransitRouteOverlay(mBaiduMap); if (massTransitRouteResult.getRouteLines() != null && massTransitRouteResult.getRouteLines().size() > 0){ //获取路线规划数据(以返回的第一条数据为例) //为MassTransitRouteOverlay设置数据 overlay.setData(massTransitRouteResult.getRouteLines().get(0)); //在地图上绘制Overlay overlay.addToMap(); } } ...... };
注:需要将下载并解压后的BaiduMapsApiASDemo或BaiduMapsAPIDemo工程根据开发环境选择并添加到您的项目中才可以使用以上Overlay功能。
mSearch.setOnGetRoutePlanResultListener(listener);
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "天安门"); PlanNode enNode = PlanNode.withCityNameAndPlaceName("上海", "东方明珠");
mSearch.masstransitSearch((new MassTransitRoutePlanOption()) .from(stNode) .to(enNode));
mSearch.destroy();效果如图:
公交路线规划返回的结果详细丰富,下方列出结果的json结构图,供开发者快速查阅。
MassTransitRouteResult { TransitResultNode: { //起点信息 int cityId; //城市编号 String cityName; //城市名 LatLng location; //起点坐标 (当匹配有效路径时,该坐标有值;当起点模糊,出给建议列表时,该坐标为空) String searchWord; //检索关键字 (当起点模糊,出给建议列表时,该关键字有值;当匹配有效路径时,该关键字为空) }origin; TransitResultNode destination; //终点信息(结果及含义同上) TaxiInfo: { //打车信息 (起终点为大陆地区同城时,有打车信息;其他情况无打车信息,该字段为空) float totalPrice; //总价格 String desc; //打车描述信息 int distance; //距离 int duration; //时间 float perKMPrice; //单价 float startPrice; //起步价 }massTaxiInfo; int total; //总路线数目 List<MassTransitRouteLine> : [ //换乘方案 MassTransitRouteLine { int distance; //距离(单位:米) int duration; //耗时 (单位:秒) String arriveTime; //本线路预计到达时间:格式举例:2016-09-29 13:48:00 double price; //本线路价格(元) List<PriceInfo> priceInfo; //票价详情(起终点为大陆地区同城时,此字段有值;其他情况,此字段为空) List<List<TransitStep>> newSteps; //一条线路中的步骤(step) } ... ]mRoutelines; SuggestAddrInfo :{ // 建议起终点信息 List<PoiInfo> suggestStartNode; //建议起点 List<PoiInfo> suggestEndNode; //建议终点 }suggestAddrInfo; }
对于公交路线规划结果JSON结构图中的一条路线List<List<TransitStep>> newSteps详细说明如下:
List<List<TransitStep>> :[ //一条线路中的步骤(step) [ //起终点为同城时,该list表示一个step中的多个方案scheme; 起终点为跨城时,该list表示一个step 中多个子步骤sub_step TransitStep:{ int distance; //距离 int duration; //耗时 List<TrafficCondition> trafficConditions; //路况状态 LatLng startLocation; //起点 LatLng endLocation; //终点 String instructions; //换乘说明 StepVehicleInfoType vehileType; //交通工具类型(火车,飞机,大巴,公交,驾车,步行) // 交通工具为驾车或步行时,无详情;为其他4种方式,则对应以下4种工具详情) TrainInfo trainInfo; //火车详情 PlaneInfo planeInfo; //飞机详情 CoachInfo coachInfo; //大巴详情 BusInfo busInfo; //公交详情 } ... ] … ]newSteps;