利用百度SDK算驾车、公交、步行路线距离

主要代码如下

public class CeJuUtils {
 	 
	public void searchRoute(BNRoutePlanNode sNode, BNRoutePlanNode eNode,final CallBack cb){
		BNRoutePlanNode bp1 = sNode;  
		BNRoutePlanNode bp2 = eNode; 
		 
		RoutePlanSearch search = RoutePlanSearch.newInstance();        //百度的搜索路线的类  
		BikingRoutePlanOption bikin=new BikingRoutePlanOption();
		//起始坐标和终点坐标  
		PlanNode startPlanNode = PlanNode.withLocation(new LatLng(bp1.getLatitude(), bp1.getLongitude()));  // lat  long  
		PlanNode endPlanNode = PlanNode.withLocation(new LatLng(bp2.getLatitude(), bp2.getLongitude()));  
		bikin.from(startPlanNode);
		bikin.to(endPlanNode);
		search.bikingSearch(bikin);  
		 
		search.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() {   //搜索完成的回调  
			@Override  
			public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {   //步行路线  
			}  
			@Override  
			public void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {  
			}  
			@Override  
			public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {     //驾车路线  
			}  
			@Override  
			public void onGetBikingRouteResult(BikingRouteResult bikingRouteResult) {  
				if (bikingRouteResult.getRouteLines() == null) {  
					//Toast.makeText(context, "算路失败", Toast.LENGTH_SHORT).show();  
					return;  
				}  
				double duration = bikingRouteResult.getRouteLines().get(0).getDistance(); 
				//Toast.makeText(context, "骑行距离是:" + bg + "km", Toast.LENGTH_SHORT).show();  
				BigDecimal bg = new BigDecimal(duration/1000).setScale(2, RoundingMode.UP);
				 //在这里获取你想要的值告诉dialog
				   cb.onRs(bg);
				// Log.e("ping", bg+"=bg正常");
			}  
		});
		
	}
	public interface CallBack{
		void onRs(BigDecimal bg);
	}
}

备注已经说的很清楚了就不再多说了。

猜你喜欢

转载自blog.csdn.net/TLuffy/article/details/91615681