Android 百度地图 SDK v3_3_0 (六) ---驾车、步行、公交路线搜索
来源:互联网 发布:苹果蜂窝数据没有应用 编辑:程序博客网 时间:2024/04/30 17:56
目前百度地图SDK所集成的检索服务包括:POI检索、公交信息查询、线路规划、地理编码、在线建议查询、短串分享。
上篇博客讲解了POI检索和在线建议查询,这篇博客将讲解经常用到的线路规划。
在讲解代码之前先上张效果图:
好了!现在我们上代码,来实现上面的功能(代码中都做了相应的注解)
路线规划检索有三种检索:驾车,步行,公交车!三种实现的步骤基本类似,下面我们就拿一种来做解析(公交车)。
1.首先我们要实例化路线规划检索的实例
// 初始化搜索模块,注册事件监听 mSearch = RoutePlanSearch.newInstance(); mSearch.setOnGetRoutePlanResultListener(this);
2. 创建公交线路规划检索监听者
@Overridepublic void onGetTransitRouteResult(TransitRouteResult result) {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) {nodeIndex = -1;pre_next_id.setVisibility(View.VISIBLE);route = result.getRouteLines().get(0);TransitRouteOverlay overlay = new MyTransitRouteOverlay(mBaiduMap);mBaiduMap.setOnMarkerClickListener(overlay);routeOverlay = overlay;overlay.setData(result.getRouteLines().get(0));overlay.addToMap();overlay.zoomToSpan();}}
3.检索起、终点信息
/** * 发起路线规划搜索示例 * * @param v */public void Search_RoutePlan_Process(View v) {// 重置浏览节点的路线数据route = null;pre_next_id.setVisibility(View.INVISIBLE);mBaiduMap.clear();// 处理搜索按钮响应EditText editSt = (EditText) findViewById(R.id.start);EditText editEn = (EditText) findViewById(R.id.end);// 设置起终点信息,对于tranist search 来说,城市名无意义PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", editSt.getText().toString());PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", editEn.getText().toString());// 实际使用中请对起点终点城市进行正确的设定if (v.getId() == R.id.drive) {mSearch.drivingSearch((new DrivingRoutePlanOption()).from(stNode).to(enNode));} else if (v.getId() == R.id.transit) {mSearch.transitSearch((new TransitRoutePlanOption()).from(stNode).city("北京").to(enNode));} else if (v.getId() == R.id.walk) {mSearch.walkingSearch((new WalkingRoutePlanOption()).from(stNode).to(enNode));}}
4.节点浏览的实现(就是上一站和下一站)
/** * 节点浏览示例 * * @param v */public void nodeClick(View v) {if (route == null || route.getAllStep() == null) {return;}if (nodeIndex == -1 && v.getId() == R.id.pre) {return;}// 设置节点索引if (v.getId() == R.id.next) {if (nodeIndex < route.getAllStep().size() - 1) {nodeIndex++;} else {return;}} else if (v.getId() == R.id.pre) {if (nodeIndex > 0) {nodeIndex--;} else {return;}}// 获取节结果信息LatLng nodeLocation = null;String nodeTitle = null;Object step = route.getAllStep().get(nodeIndex);if (step instanceof DrivingRouteLine.DrivingStep) {nodeLocation = ((DrivingRouteLine.DrivingStep) step).getEntrace().getLocation();nodeTitle = ((DrivingRouteLine.DrivingStep) step).getInstructions();} else if (step instanceof WalkingRouteLine.WalkingStep) {nodeLocation = ((WalkingRouteLine.WalkingStep) step).getEntrace().getLocation();nodeTitle = ((WalkingRouteLine.WalkingStep) step).getInstructions();} else if (step instanceof TransitRouteLine.TransitStep) {nodeLocation = ((TransitRouteLine.TransitStep) step).getEntrace().getLocation();nodeTitle = ((TransitRouteLine.TransitStep) step).getInstructions();}if (nodeLocation == null || nodeTitle == null) {return;}// 移动节点至中心mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(nodeLocation));// show popuppopupText = new TextView(MainActivity.this);popupText.setBackgroundResource(R.drawable.popup);popupText.setTextColor(0xFF000000);popupText.setText(nodeTitle);mBaiduMap.showInfoWindow(new InfoWindow(popupText, nodeLocation, 0));}
5.获取开始和结束坐标
private class MyTransitRouteOverlay extends TransitRouteOverlay {public MyTransitRouteOverlay(BaiduMap baiduMap) {super(baiduMap);}@Overridepublic BitmapDescriptor getStartMarker() {//获取开始坐标if (useDefaultIcon) {return BitmapDescriptorFactory.fromResource(R.drawable.icon_st);}return null;}@Overridepublic BitmapDescriptor getTerminalMarker() {//获取结束坐标if (useDefaultIcon) {return BitmapDescriptorFactory.fromResource(R.drawable.icon_en);}return null;}}
6.释放检索实例;
mSearch.destroy();好了!关于公交车路线检索讲解完啦!驾车和步行的和公交车路线的差不多,想了解的可以下载源码查看!
本篇博客大家觉得有什么新的想法和建议可以在评论区评论,谢谢!
源码下载地址
3 0
- Android 百度地图 SDK v3_3_0 (六) ---驾车、步行、公交路线搜索
- android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索
- android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索
- Android百度地图——路径规划(驾车、步行和公交线路搜索)
- Android百度地图 - 路径规划(驾车、步行和公交线路搜索)
- Android 百度地图 SDK v3_3_0 (一) --- 基本地图
- Android 百度地图 SDK v3_3_0 (三) ---离线地图
- Android 百度地图 SDK v3_3_0 (五) ---POI搜索和在线建议查询功能
- Android学习笔记之百度地图(驾车路线搜索及RouteOverlay步行路线搜索及RouteOverlay)
- Android学习笔记之百度地图(驾车路线搜索及RouteOverlay步行路线搜索及RouteOverlay)
- Android学习笔记之百度地图(驾车路线搜索及RouteOverlay步行路线搜索及RouteOverlay)
- Android学习笔记之百度地图(驾车路线搜索及RouteOverlay步行路线搜索及RouteOverlay)
- Android 百度地图 SDK v3_3_0 (四) ---覆盖物
- android百度地图开发V4.5最新版(5)---路线规划问题步行,骑车,公交,驾车等。
- 百度地图之搜索公交路线
- 百度地图导航的接入(包含三种选择方式驾车、公交、步行)
- 百度地图:加强篇(路线检索:驾车+步行+公交换乘)
- 百度地图api实现路线规划之步行驾车
- Maven作用、使用配置及注意事项
- HDOJ-5175-Misaki's Kiss again 解题报告
- 默然日记20150217
- 清除mysql表中数据
- iOS数组排序
- Android 百度地图 SDK v3_3_0 (六) ---驾车、步行、公交路线搜索
- mysql 创建定时事件
- Codeforces Round #291 (Div. 2)D. R2D2 and Droid Army
- 删除tfs 的task
- 学习笔记:WPF学习之深入浅出话属性
- The Blocks Problem
- CAS实现SSO单点登录原理(上)
- Search a 2D Matrix
- 自己写的java递归删除文件及文件夹