004 走上移动开发之安卓项目实战(百度地图:行走路线 公交换乘路线 公交详细路线)

这一篇帖子是按照上一篇帖子的逻辑来的,麻烦先看上一篇帖子

003 走上移动开发之安卓项目实战(百度地图:在地图范围内进行检索与驾车路线搜索)

如果有什么不懂的请看上一篇帖子

002 走上移动开发之安卓项目实战(百度地图:给地图添加标注物)

如果还有什么看不懂的请您先从第一篇文章看起

001 走上移动开发之安卓项目实战(百度地图:建立百度地图开发环境)

还请大家注意在文章进行转载的时候麻烦注明出处

《http://blog.csdn.net/shuaiyinoo》谢谢


好了接下来今天给大家带来的是三个技术点,

第一个技术点:行走路线 

按照我们以前的经验要实现行走路线的搜索第一步先在  onCreate  方法中加入如下搜索代码

        //6.0行走路线的搜索
        //mapController.setZoom(12);
        //在地图范围内实现对物体的搜索
	    //mkSearch = new MKSearch();
	    //mkSearch.init(bMapManager, new MySearchListener());
	    //给定第一个坐标
	    //start = new MKPlanNode();
	    //start.pt = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));
	    //给定第二个坐标
	    //end = new MKPlanNode();
	    //end.pt = new GeoPoint(40057031,116307852);
	    //设置回调的行走路线的方法
	    //mkSearch.walkingSearch(null, start, null, end);
然后定义一个  MySearchListener implements MKSearchListener 他

实现接口中的 onGetWalkingrouteResult 方法

@Override
		public void onGetWalkingRouteResult(MKWalkingRouteResult result, int type) {
			//对调用的搜索方法进行回调响应
			if(result == null){
				return;
			}
			RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);
			routeOverlay.setData(result.getPlan(0).getRoute(0));
			mapView.getOverlays().add(routeOverlay);
			//刷新地图
			mapView.invalidate();
		}


第二个技术点:公交换乘路线 

同样第一步,第二步的操作

        //7.0公交换乘路线的搜索
        //mapController.setZoom(12);
        //在地图范围内实现对物体的搜索
	    //mkSearch = new MKSearch();
	    //mkSearch.init(bMapManager, new MySearchListener());
	    //给定第一个坐标
	    //start = new MKPlanNode();
	    //start.pt = new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));
	    //给定第二个坐标
	    //end = new MKPlanNode();
	    //end.pt = new GeoPoint(40057031,116307852);
	    //设置回调的行走路线的方法
	    //mkSearch.transitSearch("北京", start, end); 

@Override
		public void onGetTransitRouteResult(MKTransitRouteResult result, int type) {
			//公交换乘的回调方法
			if(result == null){
				return;
			}
			TransitOverlay transitOverlay = new TransitOverlay(BaiDu_SuYiActivity.this, mapView);
			transitOverlay.setData(result.getPlan(0));
			mapView.getOverlays().add(transitOverlay);
			//刷新地图
			mapView.invalidate();
		}


第三个技术点:公交详细路线

公交详细路线的搜索相对来说复杂一点点

第一步还是不变

	    //8.0公交详细路线的搜索
        mapController.setZoom(12);
        //在地图范围内实现对物体的搜索
	    mkSearch = new MKSearch();
	    mkSearch.init(bMapManager, new MySearchListener());
	    //设置回调的行走路线的方法
	    mkSearch.poiSearchInCity("北京", "300");
第二步首先实现接口里面的这个方法
@Override
		public void onGetPoiResult(MKPoiResult result, int type, int iError) {
			//对调用的搜索方法进行回调响应
			//v8.00
			if(result == null||iError != 0){
				Toast.makeText(BaiDu_SuYiActivity.this, "对不起,找不到您的结果", 2).show();
				return;
			}
			//定义一个公交线路图描述类
			MKPoiInfo mkPoiInfo = null;
			//获得公交线路图的总的站点
			int totalPoiNum = result.getNumPois();
			for(int i = 0;i<totalPoiNum;i++){
				mkPoiInfo = result.getPoi(i);
				if(mkPoiInfo.ePoiType == 2){
					break;
					//如果说返回的时候公交的线路图就返回
				}
			}
			mkSearch.busLineSearch("北京", mkPoiInfo.uid);
		}
第三步然后再实现里面的下面这个方法
@Override
		public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
			
		}
		@Override
		public void onGetBusDetailResult(MKBusLineResult result, int type) {
			if(result == null||type != 0){
				Toast.makeText(BaiDu_SuYiActivity.this, "对不起,找不到您的结果", 2).show();
				return;
			}
			RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);
			routeOverlay.setData(result.getBusRoute());
			//清空所有的公交信息
			mapView.getOverlays().clear();
			mapView.getOverlays().add(routeOverlay);
			mapView.invalidate();
			mapView.getController().animateTo(result.getBusRoute().getStart());
		}

这样这三个知识点就算完成了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shuaiyinoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值