浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

Android 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

跨城综合公交线路规划

自v4.1起,新增跨城综合公交线路规划MassTransit,支持起点、终点坐标在不同城市的公交线路规划,可检索火车、飞机、公交、大巴等公共交通线路,同时可以根据不同的方案选择多种策略来完成跨城公共交通线路规划。此跨城公交线路规划包含旧公交线路规划transit(支持城市内公交规划)的全部功能,旧公交线路规划将废弃,建议使用新版跨城公交线路规划

跨城公交线路规划可以根据起终点和公交换乘的数据,使用MassTransitRouteOverlay画出公交路线图层,包括起终点和换乘点。另外也可以自定义起终点和换乘点的图标。

自V3.6.0起,原内置覆盖物相关类代码开源

覆盖物开源代码中提供了一些基于基础覆盖而组合而成的高级覆盖物,包括用于显示poi数据,规划路线,公交详情路线的覆盖物。

OverlayManager/PoiOverlay/IndoorPoiOverlay/IndoorRouteOverlay/TransitRouteOverlay/WalkingRouteOverlay/BikingRouteOverlay/DrivingRouteOverlay/BusLineOverlay/MassTransitRouteOverlay/ 以上源码可在BaiduMapsApiDemo工程中找到。

跨城公交线路规划

以检索“北京天安门”到“上海东方明珠”为例,Route Demo中有详细代码.

1创建公交线路规划检索实例;
mSearch = RoutePlanSearch.newInstance();
2创建公交线路规划检索监听者;
OnGetRoutePlanResultListener routeListener = new OnGetRoutePlanResultListener(){

   @Override
   public void onGetMassTransitRouteResult(MassTransitRouteResult result) {
    //获取跨城综合公共交通线路规划结果
   }
}

3设置公交线路规划检索监听者;
mSearch.setOnGetRoutePlanResultListener( routeListener );
4准备检索起、终点信息;
PlanNode stMassNode = PlanNode.withCityNameAndPlaceName("北京", "天安门");

PlanNode enMassNode = PlanNode.withCityNameAndPlaceName("上海", "东方明珠");

5发起公交线路规划检索;
mSearch.masstransitSearch(new MassTransitRoutePlanOption().from(stMassNode).to(enMassNode));
6释放检索实例;
mSearch.destroy();
公交线路规划结果的JSON结构图

公交线路规划返回结果十分丰富,下方列出结果的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;

利用TransitRouteOverlay展示公交换乘结果

使用TransitRouteOverlay画出公交路线图层,包括起终点和换乘点。

//在公交线路规划回调方法中添加TransitRouteOverlay用于展示换乘信息  
public void onGetTransitRouteResult(TransitRouteResult result) {  
    if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {  
        //未找到结果  
        return;  
    }  
    if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {  
        //起终点或途经点地址有岐义,通过以下接口获取建议查询信息  
        //result.getSuggestAddrInfo()  
        return;  
    }  
    if (result.error == SearchResult.ERRORNO.NO_ERROR) {  
        route = result.getRouteLines().get(0);  
        //创建公交路线规划线路覆盖物   
        TransitRouteOverlay overlay = new MyTransitRouteOverlay(mBaidumap);  
        //设置公交路线规划数据     
        overlay.setData(route);  
        //将公交路线规划覆盖物添加到地图中  
        overlay.addToMap();  
        overlay.zoomToSpan();  
   }  
}

运行结果如下:

basicmap7.png