百度地图- - - 路线规划

    路线规划其实和POI检索差不多,步骤都是一样的,但是有一点,路线规划需要几个依赖库, 需要copy到对应的包下,,将clusterutil和overlayutil这两个包放到com.baidu.mapapi下面,这两个包里有我们一会需要用到的类

//初始化路线规划的实体类
		planSearch = RoutePlanSearch.newInstance();
		//路线规划的监听
		planSearch.setOnGetRoutePlanResultListener(routeListener);
/**
	 * 路线规划的监听
	 */
	OnGetRoutePlanResultListener routeListener = new OnGetRoutePlanResultListener() {
		@Override
		public void onGetWalkingRouteResult(WalkingRouteResult arg0) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetTransitRouteResult(TransitRouteResult arg0) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetMassTransitRouteResult(MassTransitRouteResult arg0) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetIndoorRouteResult(IndoorRouteResult arg0) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetDrivingRouteResult(DrivingRouteResult result) {
			//TODO: 在地图上绘制驾车路线
			if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
				MyToastUtils.show(MainActivity.this, "抱歉,未找到结果");
				return;
			}
	        if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
	            //起终点或途经点地址有岐义,通过以下接口获取建议查询信息
	            //result.getSuggestAddrInfo()
	            Log.d("baiduMap", "起终点或途经点地址有岐义");
	            return;
	        }
	        //我们调用了搜索方法之后,但是sdk还没有获取到当前客户端是否有使用搜索功能的权限则会出现这个错误
	        if (result.error == SearchResult.ERRORNO.PERMISSION_UNFINISHED) {
	            //权限鉴定未完成则再次尝试
	            Log.d("baiduMap", "权限鉴定未完成,再次尝试");
	            startSearch(BaiduLocation.getCInstance(getApplicationContext()).getLatLng(),lng);
	            return;
	        }
	        if (result.error == SearchResult.ERRORNO.NO_ERROR) {
	            routeLine = result.getRouteLines().get(0);
	            MyDrivingRouteOverlay overlay = new MyDrivingRouteOverlay(map);
	            map.setOnMarkerClickListener(overlay);
	            mOverlayManager = overlay;
	            try {
	            	overlay.setData(routeLine);
	            	overlay.addToMap();
	            	overlay.zoomToSpan();
				} catch (Exception e) {
					e.printStackTrace();
					MyToastUtils.show(MainActivity.this, "路线规划异常");
				}
	            map.setOnMarkerClickListener(overlay);
	        }
		}
		
		@Override
		public void onGetBikingRouteResult(BikingRouteResult arg0) {
			// TODO Auto-generated method stub
			
		}
	};
	//
    private class MyDrivingRouteOverlay extends DrivingRouteOverlay{
		public MyDrivingRouteOverlay(BaiduMap baiduMap) {
			super(baiduMap);
		}
		//起点覆盖物
		 @Override
	     public BitmapDescriptor getStartMarker() {
			return BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);
	     }

		 //终点覆盖物
	    @Override
	    public BitmapDescriptor getTerminalMarker() {
	    	 return BitmapDescriptorFactory.fromResource(R.drawable.icon_markb);
	    }
	    
	    //路线颜色
	    @Override
	    public int getLineColor() {
	    	return Color.RED;
	    }
    }

 

发起路线规划的时候, 只要调用下面这个方法就可以,将起始点和终点的坐标传进去就可以

private void startSearch(LatLng start,LatLng end) {
        PlanNode stNode = PlanNode.withLocation(start);
        PlanNode enNode = PlanNode.withLocation(end);
        planSearch.drivingSearch((new DrivingRoutePlanOption()).from(stNode).to(enNode));
    }

  我这里只是用的驾车的路线规划,还有步行,骑行等等,意思是一样的,只要换下api就可以

 

 

转载于:https://my.oschina.net/fbf8866/blog/853498

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值