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

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

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

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.       
  7.     <ListView  
  8.         android:id="@+id/mylistView"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content" />  
  11.   
  12. </RelativeLayout>  
驾车路线的规划

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



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


公交:

<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>



 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值