路线规划包含,驾车、公交、和步行三种
今天我们一起来,一一看下。
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 ?
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".IndexActivity" >
- <ListView
- android:id="@+id/mylistView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- </RelativeLayout>
驾车路线的规划
[java] view plain copy print ?
- package com.flyou.hellomap;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.KeyEvent;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- import com.baidu.mapapi.SDKInitializer;
- import com.baidu.mapapi.search.route.DrivingRouteLine;
- import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
- import com.baidu.mapapi.search.route.DrivingRouteResult;
- import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener;
- import com.baidu.mapapi.search.route.PlanNode;
- import com.baidu.mapapi.search.route.RoutePlanSearch;
- import com.baidu.mapapi.search.route.TransitRouteResult;
- import com.baidu.mapapi.search.route.WalkingRouteResult;
- public class RouteMapActivity extends Activity {
- private int totalpages = 0;
- private ListView listView = null;
- private RoutePlanSearch routeSearch;
- private int currentPage = 0;
- ArrayAdapter<String> adapter = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
- // 注意该方法要再setContentView方法之前实现
- SDKInitializer.initialize(getApplicationContext());
- setContentView(R.layout.activity_index);
- listView = (ListView) findViewById(R.id.mylistView);
- // 第一步,创建路线检索实例
- routeSearch = RoutePlanSearch.newInstance();
- // 第三步,设置路线检索监听者;
- routeSearch.setOnGetRoutePlanResultListener(routeListener);
- }
- // 第二步,创建POI检索监听者;
- OnGetRoutePlanResultListener routeListener = new OnGetRoutePlanResultListener() {
- @Override
- public void onGetDrivingRouteResult(DrivingRouteResult drivingResult) {
- // TaxiInfo taxiInfo = drivingResult.getTaxiInfo(); 已经弃用
- List<String> datas = new ArrayList<String>();
- List<DrivingRouteLine> routeLines = drivingResult.getRouteLines();
- if (routeLines != null) {
- for (DrivingRouteLine drivingRouteLine : routeLines) {
- // 分别列出路线的第一步
- datas.add(drivingRouteLine.getAllStep().get(0).getExitInstructions() + ",距离:"
- + drivingRouteLine.getDistance() / 1000.f + "千米,大约用时:" + drivingRouteLine.getDuration() / 60 + "分");
- }
- listView
- .setAdapter(new ArrayAdapter<String>(RouteMapActivity.this, android.R.layout.simple_list_item_1, datas));
- // SuggestAddrInfo suggestAddrInfo = drivingResult.getSuggestAddrInfo();
- // 使用方法与上面类似
- }
- }
- @Override
- public void onGetTransitRouteResult(TransitRouteResult transitResult) {
- }
- @Override
- public void onGetWalkingRouteResult(WalkingRouteResult walkingResult) {
- }
- };
- @Override
- protected void onDestroy() {
- super.onDestroy();
- // 第六步,释放检索实例;
- // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
- routeSearch.destroy();
- }
- @Override
- protected void onResume() {
- super.onResume();
- // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
- }
- @Override
- protected void onPause() {
- super.onPause();
- // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_MENU:
- // 第四步,准备检索起、终点信息;
- PlanNode stNode = PlanNode.withCityNameAndPlaceName("开封", "河南大学新校区西门");
- PlanNode enNode = PlanNode.withCityNameAndPlaceName("开封", "鼓楼广场");
- // 第五步,发起驾车线路规划检索;
- routeSearch.<span style="color:#ff0000;">drivingSearch(new DrivingRoutePlanOption().from(stNode).to(enNode))</span>;
- <span style="white-space:pre"> </span>
- currentPage++;
- if (currentPage == totalpages) {
- currentPage = 0;
- }
- break;
- }
- return super.onKeyDown(keyCode, event);
- }
- }
同理要想获得其他方式的数据,分别为
公交:
<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>