主要代码如下
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);
}
}
备注已经说的很清楚了就不再多说了。