Android 百度地图获取两点之间的距离和推荐的驾车路线

//规划路线  Activity实现OnGetRoutePlanResultListener接口

private RoutePlanSearch routePlanSearch;

//这里传入 起点LatLng  和终点的LatLng
    private void guiHua(LatLng start,LatLng end){
        if (routePlanSearch==null) {
            routePlanSearch=RoutePlanSearch.newInstance();
            routePlanSearch.setOnGetRoutePlanResultListener(this);
        }
        DrivingRoutePlanOption option=new DrivingRoutePlanOption();

        option.from(PlanNode.withLocation(start))
        .to(PlanNode.withLocation(end));
        routePlanSearch.drivingSearch(option);
    }

/**

实现OnGetRoutePlanResultListener接口 重写这几个方法

*/

//汽车
    @Override
    public void onGetBikingRouteResult(BikingRouteResult arg0) {
        // TODO Auto-generated method stub

    }

    //驾驶
    @Override
    public void onGetDrivingRouteResult(DrivingRouteResult result) {
        // TODO Auto-generated method stub
        if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
            Toast.makeText(mContext, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
        }
        if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
            // 起终点或途经点地址有岐义,通过以下接口获取建议查询信息
            // result.getSuggestAddrInfo()
            return;
        }
        if (result != null&&result.error == ERRORNO.NO_ERROR) {
            DrivingRouteOverlay overlay=null;
            List<DrivingRouteLine>list=result.getRouteLines();
            if (list.size()>0) {
                //获取驾车距离
                double juli=(double)list.get(0).getDistance()/1000;
                tv_juli.setText(juli+"km");
                

//这里将第一条路线显示在地图上
                overlay=new DrivingRouteOverlay(baiduMap);
                overlay.setData(list.get(0));
                overlay.addToMap();
                overlay.zoomToSpan();
            }
            

//这里将所有路线显示在地图上
//            for (DrivingRouteLine line:list) {
//                overlay=new DrivingRouteOverlay(baiduMap);
//                overlay.setData(line);
//                overlay.addToMap();
//                overlay.zoomToSpan();
//            }
        }

    }

    //公交
    @Override
    public void onGetTransitRouteResult(TransitRouteResult arg0) {
        // TODO Auto-generated method stub

    }

    //步行
    @Override
    public void onGetWalkingRouteResult(WalkingRouteResult result) {
        // TODO Auto-generated method stub
        // 获取步行线路规划结果
        if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
            Toast.makeText(mContext, "抱歉,未找到结果",
                    Toast.LENGTH_SHORT).show();
        }
        if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
            // 起终点或途经点地址有岐义,通过以下接口获取建议查询信息
            // result.getSuggestAddrInfo()
            return;
        }
        if (result.error == SearchResult.ERRORNO.NO_ERROR) {
            WalkingRouteOverlay overlay = new MyWalkingRouteOverlay(
                    baiduMap);

//这里同上(驾车)
            baiduMap.setOnMarkerClickListener(overlay);
            overlay.setData(result.getRouteLines().get(0));
            overlay.addToMap();
            overlay.zoomToSpan();
        }
    }
 

转载于:https://my.oschina.net/u/2471738/blog/809450

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值