百度地图api 获取2地直接距离







<input type="text" id="long" name="">
<input type="button" id=st name="" value="获取经纬度">
<input type="button" id=count name="" value="开始计算总公里数">
<input type="text" id="page" name="">
<hr>
<input type="text" id="getCount" name="" value="0">
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=400a824893d44142d2d08f9d3212b845"></script>
<script type="text/javascript" src="fa/lib/jquery.min.js"></script>
<script type="text/javascript">
    // $.getJSON('http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation', function (data) {
    //  console.log(data)

    // })
    var map = new BMap.Map('map');
    map.centerAndZoom(new BMap.Point(116.404, 39.915), 12);
    var geocoder = new BMap.Geocoder();
    var longitude = 118.807395;  
    var latitude = 32.065315; 
    var count = 0;
    // var getCount = [20791, 40568, 94709]; 
    var getCount = [20791, 18515, 21290, 25728, 18447, 18423, 22689, 19503, 21844, 20277, 20592, 14644, 15283, 17302, 16175, 19803, 20132, 16650, 25252, 18309, 26274, 22941, 21701, 23667, 26307, 26049, 24729, 20802, 22966, 20200, 19651, 21382, 19904, 18107, 16798, 19718, 18218, 25214, 19855, 23225, 22374, 20508, 19757, 16214, 19633, 18085,
        22066, 19285, 20307, 21769, 14711, 22753, 18455, 18871, 18459, 3504];
    // 5493
    // [1=>20791,  2=>18515,  3=>21290,  4=>25728,  5=>18447,  6=>18423,  7=>22689,  8=>19503,  9=>21844,  10=>20277,
    // 11=>20592, 12=>14644, 13=>15283, 14=>17302, 15=>16175, 16=>19803  17=>20132, 18=>16650, 19=>25252   20=>18309,
    // 21=>26274, 22=>22941, 23=>21701, 24=>23667, 25=>26307, 26=>26049, 27=>24729, 28=>20802, 29=>22966,  30=>20200
    // 31=>19651, 32=>21382, 33=>19904, 34=>18107, 35=>16798, 36=>19718, 37=>18218, 38=>25214, 39=>19855,  40=>23225
    // 41=>22374, 42=>20508, 43=>19757, 44=>16214, 45=>19633, 46=>18085, 47=>22066, 48=>19285, 49=>20307], 50=>21769
    // 51=>14711, 52=>22753, 53=>18455, 54=>18871, 55=>18459, 56=>3504];
    var page_no = 56;
    var list = {};
    var gongli = [];
    $('#page').val(page_no);

    // 获取根据城市获得经纬度
    $('#st').click(function () {

        // page_no++;
        list['page'+page_no] = {};
        $.get('index.php?app_act=api/tms/get_line_info&page_no='+page_no, function (data) {
            //获取起始地址经纬度  
            var i = 0;
            $.each(data.list, function (index, val) {
                i++;
                var pointStart = '';
                var pointEnd = '';
                var start = val.start.split(',')[0];
                    start = start.split('电话')[0];
                    start = start.replace('市辖区', '');
                    start = start.replace(' ', '');

                var end = val.end.split(',')[0];
                    end = end.split('电话')[0];
                    end = end.replace('市辖区', '');
                    end = end.replace(' ', '');
                    val.start = start;
                    val.end = end;
                geocoder.getPoint(start, function(point) { 
                    // console.log(point) 
                    if (point) { 
                        // console.log(point.lng, point.lat) 
                        // pointStart = new BMap.Point(point.lng, point.lat);
                        val.start_lng = point.lng;
                        val.start_lat = point.lat;
                    }  
                }, val.start);
                geocoder.getPoint(end, function(point) {  
                     // console.log(point) 
                    if(point) {  
                        // pointEnd = new BMap.Point(point.lng, point.lat);
                        val.end_lng = point.lng;
                        val.end_lat = point.lat;
                    }  
                }, val.end);
                list['page'+page_no][index] = val;
                // driving.search(val.start, val.end});
            })
            console.log('获取经纬数的个数', i)


        }, 'json')
        $('#st').val('获取经纬度 ok');
    })


    // 根据经纬度算驾车公里数
    $('#count').click(function () {
        var i = 0;
        $.each(list['page'+page_no], function (index, val) {
            var pointStart = '';
            var pointEnd = '';
    // 通过经纬点计算
            pointStart = new BMap.Point(val.start_lng, val.start_lat);
            pointEnd = new BMap.Point(val.end_lng, val.end_lat);
            // var long = map.getDistance(pointStart, pointEnd)/1000;
            var long = 0;
            var options = {
                onSearchComplete: function(results){
                    if (driving.getStatus() == BMAP_STATUS_SUCCESS){
                      console.log(i++, results.taxiFare.distance/1000);  
                      long = results.taxiFare.distance/1000;
                      gongli.push(long);
                      count += long;
                      console.log(val.start, long)
                    }
                },
                renderOptions: {
                    map: map,
                    autoViewport: true    
                }
            };
            var driving = new BMap.DrivingRoute(map, options);
            driving.search(pointStart, pointEnd);

        })
        $('#count').val('开始计算公里数 ok'); 
    })  

    var cc = setInterval(function () {
        $('#long').val(parseInt(count))  
    }, 1000)

    getCount.forEach(function (val, key) {
        var count = parseFloat($('#getCount').val());
        $('#getCount').val(count + val);
    })

    $('#getCount').click(function () {
        var count = 0;
        gongli.forEach(function (val, key) {
            count+=val; 
        })
        console.log('公里数', gongli, '公里数个数', gongli.length)
        console.log('count', count);
        console.log('list', list['page'+page_no]);
        var count2 = 0;
        getCount.forEach(function (val, key) {
            count2 += val; 
        })
        console.log('总公里数', count2);
    })


    // setInterval(function () {
    //    page_no++;
    //    $('#page').val(page_no);
    //    gongli = [];
    //    getCount.push(count);
    //    count = 0;
    //    $('#st').click();
    //    setTimeout(function () {
    //        $('#count').click();
    //    }, 15000)
    // }, 30000)  

            // var long = 0, i = 0;
            // var options = {
            //     onSearchComplete: function(results){
            //         if (driving.getStatus() == BMAP_STATUS_SUCCESS){
            //           console.log('11', results.taxiFare.distance/1000);  
            //           long = results.taxiFare.distance/1000;
            //         }
            //     },
            //     renderOptions: {
            //      map: map,
            //      autoViewport: true    
            //     }
            // };
            // var p1 = new BMap.Point(120.45696, 31.972522);
         //    var p2 = new BMap.Point(120.022936, 30.68274);
         //    var driving = new BMap.DrivingRoute(map, options);
         //    driving.search(p1, p2);  


</script>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
获取两点之间的驾驶距离可以使用百度地图API中的“驾车路线规划”功能。具体的实现步骤如下: 1. 首先,需要引入百度地图API的Java SDK包,可以在官网下载。 2. 接着,创建一个BaiduMap对象,并调用其“getDirectionService()”方法获取一个DirectionSearch对象,该对象用于进行路线规划。 3. 调用DirectionSearch对象的“setFromLocation()”方法和“setToLocation()”方法设置起点和终点的经纬度坐标,然后调用“search()”方法发送请求。 4. 当接收到响应后,可以从DirectionSearch对象中获取到路线规划结果,包括驾车距离等信息。 下面是一个简单的示例代码: ``` import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.direction.DirectionSearch; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.search.route.DrivingRoutePlanOption; import com.baidu.mapapi.search.route.DrivingRouteResult; import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener; import com.baidu.mapapi.search.route.RoutePlanSearch; public class MapUtils { private static final String TAG = "MapUtils"; public static void getDrivingDistance(LatLng from, LatLng to, final OnGetDrivingDistanceListener listener) { SDKInitializer.initialize(App.mContext); DirectionSearch directionSearch = DirectionSearch.newInstance(); directionSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() { @Override public void onGetDrivingRoutePlanResult(DrivingRoutePlanOption drivingRoutePlanOption, DrivingRouteResult drivingRouteResult) { if (drivingRouteResult != null && drivingRouteResult.getRouteLines() != null && drivingRouteResult.getRouteLines().size() > 0) { int distance = drivingRouteResult.getRouteLines().get(0).getDistance(); if (listener != null) { listener.onGetDrivingDistance(distance); } } else { if (listener != null) { listener.onGetDrivingDistance(-1); } } } @Override public void onGetTransitRoutePlanResult(...) {} @Override public void onGetWalkingRoutePlanResult(...) {} }); RoutePlanSearch search = RoutePlanSearch.newInstance(); search.drivingSearch(new DrivingRoutePlanOption() .from(from) .to(to)); } public interface OnGetDrivingDistanceListener { void onGetDrivingDistance(int distance); } } ``` 在上述代码中,我们首先调用“SDKInitializer.initialize()”方法初始化百度地图SDK,然后创建一个DirectionSearch对象,并设置一个OnGetRoutePlanResultListener监听器,用于接收路线规划的结果。 接着,我们调用“RoutePlanSearch.drivingSearch()”方法发送路线规划请求,其中设置起点和终点的经纬度坐标。 最后,在OnGetRoutePlanResultListener中,我们从DrivingRouteResult对象中获取到驾车距离,并通过OnGetDrivingDistanceListener回调函数将结果返回。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值