码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-03 20:42:53      阅读:369      评论:0      收藏:0      [点我收藏+]

标签:风飞雪未扬   百度地图   最新   v3.4   路线规划   

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

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

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的布局

<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>
驾车路线的规划

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);
  }
}



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


公交:

routeSearch.transitSearch((new TransitRoutePlanOption())  
.from(stNode) .city("北京") .to(enNode));

步行

  routeSearch.walkingSearch(new WalkingRoutePlanOption()
	.from(stNode)
	.to(enNode));
技术分享


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

标签:风飞雪未扬   百度地图   最新   v3.4   路线规划   

原文地址:http://blog.csdn.net/u013616976/article/details/45460519

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!