百度地图开发( 基于新版本V2_1_1)— 覆盖物(3)_路线图层(RouteOverlay)

来源:互联网 发布:e卡销官网源码 编辑:程序博客网 时间:2024/05/18 06:56

路线图层(RouteOverlay):公交、步行和驾车线路图层,将公交、步行和驾车出行方案的路线及关键点显示在地图上;

下面。首先来看看如何将驾车路线图层显示在百度地图上。假设我们要检索从天安门到百度大厦的驾车路线图。

1、设置驾车路线的起点和终点,同时设置驾车路线策略,最后根据驾车路线的起点和终点进行驾车路线的检索。核心代码如下:(写在oncreate方法中)

//驾车路线检索// 设置驾车路线起点MKPlanNode nodeStart = new MKPlanNode();nodeStart.pt = new GeoPoint((int)(39.915 * 1E6) , (int)(116.404 * 1E6));//设置驾车路线终点MKPlanNode nodeEnd = new MKPlanNode();nodeEnd.pt = new GeoPoint(40057031, 116307852);//  ECAR_TIME_FIRST 驾乘检索策略常量:时间优先//  ECAR_FEE_FIRST  驾乘检索策略常量:较少费用//  ECAR_DIS_FIRST  驾乘检索策略常量:最短距离// 此处设置驾车路线规划策略 为时间优先mkSearch.setDrivingPolicy(MKSearch.ECAR_TIME_FIRST);// drivingSearch 根据驾车起点终点进行驾乘路线搜索 mkSearch.drivingSearch(null, nodeStart, null, nodeEnd);
2、获取结果并显示在地图上,同时,和上一次讲到的兴趣点(poi)检索一样,需要实现MySearchListener,并重写其中的onGetDrivingRouteResult()方法。代码如下:

/** * 返回驾乘路线搜索结果 */public void onGetDrivingRouteResult(MKDrivingRouteResult result , int iEEor) {if (result == null) {return ;}RouteOverlay routeOverlay = new RouteOverlay(MyMapActivity.this, mapView);routeOverlay.setData(result.getPlan(0).getRoute(0));    mapView.getOverlays().add(routeOverlay);    mapView.refresh();}
3、至此,驾车路线检索就完成 了。效果如下“


接下来,我们来说下步行线路检索是如何实现的。在明白了驾车路线的实现后,步行路线的实现只要将其中的检索方法drivingSearch改成相应的步行路线的检索方法walkingSearch即可,同时,实现MKSearchListener,重写onGetWalkingRouteResult方法,便可将步行路线检索结果在百度地图上实现出来。核心代码如下:

1、设置步行路线的起点和终点,并根据起点和终点进行步行路线的检索。

//步行路线检索// 设置步行路线起点MKPlanNode nodeStart = new MKPlanNode();nodeStart.pt = new GeoPoint((int)(39.915 * 1E6) , (int)(116.404 * 1E6));//设置步行路线终点MKPlanNode nodeEnd = new MKPlanNode();nodeEnd.pt = new GeoPoint(40057031, 116307852);//drivingSearch 步行路线检索mkSearch.walkingSearch(null, nodeStart, null, nodeEnd);
2、重写onGetWalkingRouteResult ,显示步行路线检索结果。核心代码如下:

/** * 返回步行路线搜索结果 */public void onGetWalkingRouteResult(MKWalkingRouteResult result, int arg1) {if (result == null) {return ;}RouteOverlay routeOverlay = new RouteOverlay(MyMapActivity.this, mapView);routeOverlay.setData(result.getPlan(0).getRoute(0));    mapView.getOverlays().add(routeOverlay);    mapView.refresh();}
3、至此,关于步行路线检索也实现了,具体效果图见下:

最后,就是公交路线的检索。其实现方法和驾车路线和步行路线的检索大同小异,不再累赘多说。不同的是:公交线路搜索的方法为transitSearch(String city, MKPlanNode start, MKPlanNode end),city:为待查公交线路所在城市,start和end分别是起点和终点;获取结果的方法改为重写onGetTransitRouteResult方法。

原创粉丝点击