天天看点

百度地图再进阶之路线规划

路线规划包含,驾车、公交、和步行三种

今天我们一起来,一一看下。

DrivingRouteLine 表示驾车路线
DrivingRouteLine.DrivingStep 表示一个驾车路段
DrivingRoutePlanOption 驾车路线规划参数
DrivingRouteResult 驾车路线结果
PlanNode 路径规划中的出行节点信息,出行节点包括:起点,终点,途经点 出行节点信息可以通过两种方式确定: 1: 给定出行节点经纬度坐标 2: 给定出行节点地名和城市名
RoutePlanSearch 路径规划搜索接口
SuggestAddrInfo
TransitRouteLine 表示一个换乘路线,换乘路线将根据既定策略调配多种交通工具。
TransitRouteLine.TransitStep 表示一个换乘路段
TransitRoutePlanOption 换乘路线规划参数
TransitRouteResult 换乘路线结果
WalkingRouteLine 表示一条步行路线
WalkingRouteLine.WalkingStep 描述一个步行路段
WalkingRoutePlanOption 步行路线规划参数
WalkingRouteResult 表示步行路线结果

第一步,创建驾车线路规划检索实例;

mSearch = RoutePlanSearch.newInstance();

第二步,创建驾车线路规划检索监听者;

OnGetRoutePlanResultListener listener = new OnGetRoutePlanResultListener() {  

    public void onGetWalkingRouteResult(WalkingRouteResult result) {  

        //获取步行线路规划结果  

    }  

    public void onGetTransitRouteResult(TransitRouteResult result) {  

        //获取公交换乘路径规划结果  

    }  

    public void onGetDrivingRouteResult(DrivingRouteResult result) {  

        //获取驾车线路规划结果  

    }  

};

第三步,设置驾车线路规划检索监听者;

mSearch.setOnGetRoutePlanResultListener(listener);

第四步,准备检索起、终点信息;

PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "龙泽");  

PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "西单");

第五步,发起驾车线路规划检索;

mSearch.drivingSearch((new DrivingRoutePlanOption())  

    .from(stNode)  

    .to(enNode));

第六步,释放检索实例;

mSearch.destory();

那么我们就按照以上的步骤来做一下吧 

首先布局还是那个仅有一个lixtview的布局

[html]  view plain copy print ?

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".IndexActivity" >  
  6.     <ListView  
  7.         android:id="@+id/mylistView"  
  8.         android:layout_width="wrap_content"  
  9.         android:layout_height="wrap_content" />  
  10. </RelativeLayout>  

驾车路线的规划

[java]  view plain copy print ?

  1. package com.flyou.hellomap;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.view.KeyEvent;  
  7. import android.widget.ArrayAdapter;  
  8. import android.widget.ListView;  
  9. import com.baidu.mapapi.SDKInitializer;  
  10. import com.baidu.mapapi.search.route.DrivingRouteLine;  
  11. import com.baidu.mapapi.search.route.DrivingRoutePlanOption;  
  12. import com.baidu.mapapi.search.route.DrivingRouteResult;  
  13. import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;  
  14. import com.baidu.mapapi.search.route.PlanNode;  
  15. import com.baidu.mapapi.search.route.RoutePlanSearch;  
  16. import com.baidu.mapapi.search.route.TransitRouteResult;  
  17. import com.baidu.mapapi.search.route.WalkingRouteResult;  
  18. public class RouteMapActivity extends Activity {  
  19.   private int totalpages = 0;  
  20.   private ListView listView = null;  
  21.   private RoutePlanSearch routeSearch;  
  22.   private int currentPage = 0;  
  23.   ArrayAdapter<String> adapter = null;  
  24.   @Override  
  25.   protected void onCreate(Bundle savedInstanceState) {  
  26.     super.onCreate(savedInstanceState);  
  27.     // 在使用SDK各组件之前初始化context信息,传入ApplicationContext  
  28.     // 注意该方法要再setContentView方法之前实现  
  29.     SDKInitializer.initialize(getApplicationContext());  
  30.     setContentView(R.layout.activity_index);  
  31.     listView = (ListView) findViewById(R.id.mylistView);  
  32.     // 第一步,创建路线检索实例  
  33.     routeSearch = RoutePlanSearch.newInstance();  
  34.     // 第三步,设置路线检索监听者;  
  35.     routeSearch.setOnGetRoutePlanResultListener(routeListener);  
  36.   }  
  37.   // 第二步,创建POI检索监听者;  
  38.   OnGetRoutePlanResultListener routeListener = new OnGetRoutePlanResultListener() {  
  39.     @Override  
  40.     public void onGetDrivingRouteResult(DrivingRouteResult drivingResult) {  
  41.       // TaxiInfo taxiInfo = drivingResult.getTaxiInfo(); 已经弃用  
  42.       List<String> datas = new ArrayList<String>();  
  43.       List<DrivingRouteLine> routeLines = drivingResult.getRouteLines();  
  44.       if (routeLines != null) {  
  45.         for (DrivingRouteLine drivingRouteLine : routeLines) {  
  46.           // 分别列出路线的第一步  
  47.           datas.add(drivingRouteLine.getAllStep().get(0).getExitInstructions() + ",距离:"  
  48.               + drivingRouteLine.getDistance() / 1000.f + "千米,大约用时:" + drivingRouteLine.getDuration() / 60 + "分");  
  49.         }  
  50.         listView  
  51.             .setAdapter(new ArrayAdapter<String>(RouteMapActivity.this, android.R.layout.simple_list_item_1, datas));  
  52.         // SuggestAddrInfo suggestAddrInfo = drivingResult.getSuggestAddrInfo();  
  53.         // 使用方法与上面类似  
  54.       }  
  55.     }  
  56.     @Override  
  57.     public void onGetTransitRouteResult(TransitRouteResult transitResult) {  
  58.     }  
  59.     @Override  
  60.     public void onGetWalkingRouteResult(WalkingRouteResult walkingResult) {  
  61.     }  
  62.   };  
  63.   @Override  
  64.   protected void onDestroy() {  
  65.     super.onDestroy();  
  66.     // 第六步,释放检索实例;  
  67.     // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
  68.     routeSearch.destroy();  
  69.   }  
  70.   @Override  
  71.   protected void onResume() {  
  72.     super.onResume();  
  73.     // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
  74.   }  
  75.   @Override  
  76.   protected void onPause() {  
  77.     super.onPause();  
  78.     // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
  79.   }  
  80.   @Override  
  81.   public boolean onKeyDown(int keyCode, KeyEvent event) {  
  82.     switch (keyCode) {  
  83.       case KeyEvent.KEYCODE_MENU:  
  84.         // 第四步,准备检索起、终点信息;  
  85.         PlanNode stNode = PlanNode.withCityNameAndPlaceName("开封", "河南大学新校区西门");  
  86.         PlanNode enNode = PlanNode.withCityNameAndPlaceName("开封", "鼓楼广场");  
  87.         // 第五步,发起驾车线路规划检索;  
  88.         routeSearch.<span style="color:#ff0000;">drivingSearch(new DrivingRoutePlanOption().from(stNode).to(enNode))</span>;  
  89. <span style="white-space:pre">    </span>  
  90.         currentPage++;  
  91.         if (currentPage == totalpages) {  
  92.           currentPage = 0;  
  93.         }  
  94.         break;  
  95.     }  
  96.     return super.onKeyDown(keyCode, event);  
  97.   }  
  98. }  

同理要想获得其他方式的数据,分别为

公交:

<pre name="code" class="java"><span style="font-size:18px;">routeSearch.transitSearch((new TransitRoutePlanOption())  
    .from(stNode)      .city("北京")      .to(enNode));</span>      

步行

<span style="color: rgb(10, 128, 33); font-size: 14px;"> </span><pre name="code" class="java"><span style="font-size:18px;"> routeSearch.walkingSearch(new WalkingRoutePlanOption()
	.from(stNode)
	.to(enNode));</span>      
百度地图再进阶之路线规划