Android开发之百度SDK的使用--线路查询
2014-11-29 10:51
423 查看
在使用百度地图SDK进行线路查询时可以分为三类情况:公交线路查询,自驾线路查询,以及步行线路查询,使用的方法其实大同小异。ps:版本号V3.2
1. 使用线路规划查询主要的类就是RoutePlanSearch,第一步先来生成一个RoutePlanSearch对象,并设置查询接口处理的回调接口
1)查询结果的状态保存在TransitRouteResult中error域内,结果有
2)result.getRouteLines()返回已查询到的所有线路,为一个RouteLine的List集合
3)绘制公交线路,利用TransitRouteOverlay来将公交线路绘制在地图上
2. 设置查询路线的起点和终点:主要使用PlanNode以及TransitRoutePlanOption
如果进行自驾路线和步行路线的查询只需将TransitRoutePlanOption对象换为DrivingRoutePlanOption,WalkingRoutePlanOption并调用mSearch相应的drivingSearch方法以及walkingSearch方法即可,结果也将返回在回调接口中的onGetDrivingRouteResulty以及onGetWalkingRouteResult方法中
附上源码:
1. 使用线路规划查询主要的类就是RoutePlanSearch,第一步先来生成一个RoutePlanSearch对象,并设置查询接口处理的回调接口
mSearch = RoutePlanSearch.newInstance(); mSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() { @Override public void onGetWalkingRouteResult(WalkingRouteResult arg0) { // TODO Auto-generated method stub } @Override public void onGetTransitRouteResult(TransitRouteResult result) { // TODO Auto-generated method stub if (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(); } } @Override public 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; @Override public 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() { @Override public void onGetWalkingRouteResult(WalkingRouteResult arg0) { // TODO Auto-generated method stub } @Override public void onGetTransitRouteResult(TransitRouteResult result) { // TODO Auto-generated method stub if (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(); } } @Override public void onGetDrivingRouteResult(DrivingRouteResult arg0) { // TODO Auto-generated method stub } }); loactionButton.setText("查询"); loactionButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub startNode = PlanNode.withCityNameAndPlaceName("西安", "钟楼"); endNode = PlanNode.withCityNameAndPlaceName("西安", "兴庆公园"); TransitRoutePlanOption option = new TransitRoutePlanOption(); option.from(startNode); option.to(endNode); option.city("西安"); mSearch.transitSearch(option); } }); } @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { mMapView.onDestroy(); mMapView = null; super.onDestroy(); } }
相关文章推荐
- Android开发之百度SDK的使用--基础定位
- Android开发百度SDK的使用--定位图层的使用
- Android使用百度定位SDK方法及错误处理
- Android应用开发之sqlite使用模糊查询数据库数据的三种方式
- Android使用百度定位SDK 方法及错误处理
- Android使用百度LBS SDK
- Android使用GSP和百度SDK定位
- 利用百度地图API定位为什么使用百度自己开发的locSDK2.6.jar包
- 使用百度siteapp开发网站的App-(IOS和Android版本)
- android中使用百度定位sdk实时的计算移动距离
- 使用高通公司的Vuforia SDK搭建Android版移动AR应用开发环境
- 搭建Android开发环境:直接使用官网提供的 ADT Bundle(带Eclipse、ADT插件、SDK)
- Android开发学习之使用百度语音识别SDK实现语音识别(下)
- 【代码】Android 使用百度定位SDK 方法及处理错误
- Android开发之新版百度map的调用(一):获取百度map的Android SDK
- Android新浪微博开发(一)OAnth认证及账户管理、sdk的使用
- android 开发,MediaStore去重查询,使用Group By
- android开发 使用uses-sdk 导致布局不一样解决
- Android开发学习之使用百度语音识别SDK实现语音识别(上)
- 使用Eclipse+ADT+androidSDK建立安卓的开发环境