Android开发之百度SDK的使用--线路查询

来源:互联网 发布:淘宝卫浴安装 编辑:程序博客网 时间:2024/04/30 11:18

     在使用百度地图SDK进行线路查询时可以分为三类情况:公交线路查询,自驾线路查询,以及步行线路查询,使用的方法其实大同小异。ps:版本号V3.2

     1. 使用线路规划查询主要的类就是RoutePlanSearch,第一步先来生成一个RoutePlanSearch对象,并设置查询接口处理的回调接口

        mSearch = RoutePlanSearch.newInstance();mSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() {@Overridepublic void onGetWalkingRouteResult(WalkingRouteResult arg0) {// TODO Auto-generated method stub}@Overridepublic void onGetTransitRouteResult(TransitRouteResult result) {// TODO Auto-generated method stubif (result == null|| result.error != SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(MainActivity.this, "抱歉,未找到结果",Toast.LENGTH_SHORT).show();}if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {// 起终点或途经点地址有岐义,通过以下接口获取建议查询信息// result.getSuggestAddrInfo()return;}if (result.error == SearchResult.ERRORNO.NO_ERROR) {TransitRouteOverlay overlay = new TransitRouteOverlay(mBaiduMap);mBaiduMap.setOnMarkerClickListener(overlay);overlay.setData(result.getRouteLines().get(0));overlay.addToMap();overlay.zoomToSpan();}}@Overridepublic void onGetDrivingRouteResult(DrivingRouteResult arg0) {// TODO Auto-generated method stub}});
           关于回调接口的结果作以下几点说明:

             1)查询结果的状态保存在TransitRouteResult中error域内,结果有:AMBIGUOUS_KEYWORD,检索词有岐义;AMBIGUOUS_ROURE_ADDR,检索地址有岐义;NO_ERROR,检索结果正常返回;NOT_SUPPORT_BUS,该城市不支持公交搜索;NOT_SUPPORT_BUS_2CITY,不支持跨城市公交;RESULT_NOT_FOUND,没有找到检索结果;ST_EN_TOO_NEAR,起终点太近

              2)result.getRouteLines()返回已查询到的所有线路,为一个RouteLine的List集合

              3)绘制公交线路,利用TransitRouteOverlay来将公交线路绘制在地图上

          2. 设置查询路线的起点和终点:主要使用PlanNode以及TransitRoutePlanOption

<pre name="code" class="java">        startNode = PlanNode.withCityNameAndPlaceName("西安", "钟楼");
endNode = PlanNode.withCityNameAndPlaceName("西安", "兴庆公园");TransitRoutePlanOption option = new TransitRoutePlanOption();option.from(startNode);option.to(endNode);option.city("西安");mSearch.transitSearch(option);

              如果进行自驾路线和步行路线的查询只需将TransitRoutePlanOption对象换为DrivingRoutePlanOption,WalkingRoutePlanOption并调用mSearch相应的drivingSearch方法以及walkingSearch方法即可,结果也将返回在回调接口中的onGetDrivingRouteResulty以及onGetWalkingRouteResult方法中

附上源码:

package com.example.gymapp;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.overlayutil.TransitRouteOverlay;import com.baidu.mapapi.search.core.SearchResult;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.TransitRoutePlanOption;import com.baidu.mapapi.search.route.TransitRouteResult;import com.baidu.mapapi.search.route.WalkingRouteResult;/** * @author acer *  */public class MainActivity extends Activity {MapView mMapView;BaiduMap mBaiduMap;private RoutePlanSearch mSearch;private PlanNode startNode;private PlanNode endNode;private Button loactionButton;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMapView = (MapView) findViewById(R.id.bmapView);loactionButton = (Button) findViewById(R.id.button1);mBaiduMap = mMapView.getMap();mSearch = RoutePlanSearch.newInstance();mSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() {@Overridepublic void onGetWalkingRouteResult(WalkingRouteResult arg0) {// TODO Auto-generated method stub}@Overridepublic void onGetTransitRouteResult(TransitRouteResult result) {// TODO Auto-generated method stubif (result == null|| result.error != SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(MainActivity.this, "抱歉,未找到结果",Toast.LENGTH_SHORT).show();}if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {// 起终点或途经点地址有岐义,通过以下接口获取建议查询信息// result.getSuggestAddrInfo()return;}if (result.error == SearchResult.ERRORNO.NO_ERROR) {TransitRouteOverlay overlay = new TransitRouteOverlay(mBaiduMap);mBaiduMap.setOnMarkerClickListener(overlay);overlay.setData(result.getRouteLines().get(0));overlay.addToMap();overlay.zoomToSpan();}}@Overridepublic void onGetDrivingRouteResult(DrivingRouteResult arg0) {// TODO Auto-generated method stub}});loactionButton.setText("查询");loactionButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubstartNode = PlanNode.withCityNameAndPlaceName("西安", "钟楼");endNode = PlanNode.withCityNameAndPlaceName("西安", "兴庆公园");TransitRoutePlanOption option = new TransitRoutePlanOption();option.from(startNode);option.to(endNode);option.city("西安");mSearch.transitSearch(option);}});}@Overrideprotected void onPause() {mMapView.onPause();super.onPause();}@Overrideprotected void onResume() {mMapView.onResume();super.onResume();}@Overrideprotected void onDestroy() {mMapView.onDestroy();mMapView = null;super.onDestroy();}}



0 0
原创粉丝点击