高德地图批量统计驾车轨迹的用时及总里程


var http= require('http');
var qs=require('querystring');var jsonData = {"state": true,"info": "成功","data": [{"coordinate":[116.70963,23.3923],"route_sequence":1,"section_sequence":1},{"coordinate":[116.68804,23.417659],"route_sequence":2,"section_sequence":2},{"coordinate":[116.68269,23.406139],"route_sequence":3,"section_sequence":3},{"coordinate":[116.691476,23.40861],"route_sequence":4,"section_sequence":4},{"coordinate":[116.723829,23.402821],"route_sequence":5,"section_sequence":5},{"coordinate":[116.716877,23.395944],"route_sequence":6,"section_sequence":6},{"coordinate":[116.682288,23.405781],"route_sequence":7,"section_sequence":7},{"coordinate":[116.70771,23.396857],"route_sequence":8,"section_sequence":8},{"coordinate":[116.714764,23.392599],"route_sequence":9,"section_sequence":9},{"coordinate":[116.712701,23.391326],"route_sequence":10,"section_sequence":10},{"coordinate":[116.715406,23.390331],"route_sequence":11,"section_sequence":11},{"coordinate":[116.711534,23.391433],"route_sequence":12,"section_sequence":12},{"coordinate":[116.715794,23.394322],"route_sequence":13,"section_sequence":13},{"coordinate":[116.71399,23.398669],"route_sequence":14,"section_sequence":14},{"coordinate":[116.714574,23.391911],"route_sequence":15,"section_sequence":15},{"coordinate":[116.72144,23.393656],"route_sequence":16,"section_sequence":16},{"coordinate":[116.712322,23.395513],"route_sequence":17,"section_sequence":17},{"coordinate":[116.714919,23.396726],"route_sequence":18,"section_sequence":18},{"coordinate":[116.71399,23.398669],"route_sequence":19,"section_sequence":19},{"coordinate":[116.71101,23.393503],"route_sequence":20,"section_sequence":20},{"coordinate":[116.741079,23.395443],"route_sequence":22,"section_sequence":22},{"coordinate":[116.716585,23.393869],"route_sequence":23,"section_sequence":23},{"coordinate":[116.770493,23.398498],"route_sequence":26,"section_sequence":26},{"coordinate":[116.767268,23.401064],"route_sequence":31,"section_sequence":31},{"coordinate":[116.773984,23.395659],"route_sequence":33,"section_sequence":33},{"coordinate":[116.767733,23.410942],"route_sequence":34,"section_sequence":34},{"coordinate":[116.670037,23.353066],"route_sequence":79,"section_sequence":34},{"coordinate":[116.671359,23.352991],"route_sequence":80,"section_sequence":35},{"coordinate":[116.677534,23.355971],"route_sequence":81,"section_sequence":36},{"coordinate":[116.669183,23.35402],"route_sequence":82,"section_sequence":37},{"coordinate":[116.671359,23.352991],"route_sequence":83,"section_sequence":38}],"coordinate": [116.783822, 23.42112],"type": "section"
};var gd={kk:0,keys:['key1','key2','key3',],formatSeconds:function(value) {// 将秒数换成时分秒格式var secondTime = parseInt(value);// 秒var minuteTime = 0;// 分var hourTime = 0;// 小时if(secondTime > 60) {//如果秒数大于60,将秒数转换成整数minuteTime = parseInt(secondTime / 60);   //获取分钟,除以60取整数,得到整数分钟secondTime = parseInt(secondTime % 60);    //获取秒数,秒数取佘,得到整数秒数//如果分钟大于60,将分钟转换成小时if(minuteTime > 60) {hourTime = parseInt(minuteTime / 60);//获取小时,获取分钟除以60,得到整数小时minuteTime = parseInt(minuteTime % 60); //获取小时后取佘的分,获取分钟除以60取佘的分}}var result = "" + parseInt(secondTime) + "秒";if(minuteTime > 0) {result = "" + parseInt(minuteTime) + "分" + result;}if(hourTime > 0) {result = "" + parseInt(hourTime) + "小时" + result;}return result;},arrayCount: function (data) {var  arrs0=data.slice(0);//复制数组//获取数据后转换成需要的格式var arrs=[];var ks=gd.keys.length;var as1=Math.ceil(arrs0.length/ks);for(var i=0;iif(arrs0.length>ks){var a=arrs0.slice(0,ks);arrs0=arrs0.splice(ks,arrs0.length);arrs.push(a);}else{var a=arrs0.slice(0,arrs0.length);arrs.push(a);}}return arrs;},getCount:function (getStr,callback){try{http.get(getStr, function(req,res) {var jsonStr='';req.on('data',function(data){jsonStr+=data;});req.on('end',function(){var obj=JSON.parse(jsonStr);if(obj.errcode){callback('err',obj);return false;}else{(obj.data.route==null)?callback('err',obj):callback(gd.gdrouteCount(obj),obj);}});}).on('error', function(e) {callback('err',{});console.log(e); return false;});}catch(e){console.log(e); return false;}},arrCount: function (data) {//console.log(data.data);var obj=data.data;obj.sort(function (x,y) {return x.route_sequence-y.route_sequence;});var arrs0=[];var k=1;arrs0.push({c:data.coordinate,s:k});for(var i=0;ivar s=arrs0.length;arrs0.push({c:data.coordinate,s:s});var array2=[];for(var k=0;kif(arrs0[k+1]){array2.push({s:k,c1:arrs0[k].c,c2:arrs0[k+1].c});}}return array2;},gdrouteCount:function (obj){if(!obj.data.route.paths){cosnole.log('obj.data.route.paths不存在',obj.data.route);return false;}var arr=[];var odrp=obj.data.route.paths;for(var i=0;ifunction (x,y) {return x.distance-y.distance;});return   {distance:arr[0].distance,duration:arr[0].duration};},getStr: function (arrs0,key) {return 'http://restapi.amap.com/v4/direction/truck?'+qs.stringify({size:2,key:key,origin:arrs0.c1[0]+','+arrs0.c1[1],//起点destination:arrs0.c2[0]+','+arrs0.c2[1]//终点});},gdMapGetCount:function (arrs0,callback){if(arrs0){if(gd.kk==gd.keys.length){gd.kk=0;}gd.getCount(gd.getStr(arrs0,gd.keys[gd.kk]), function (data,obj) {(data=='err')?gd.gdMapGetCount2(arrs0,callback):callback(2,arrs0.s,data,obj);});gd.kk++;}else{console.log('==============不存在===============')}},gdMapGetCount2:function (arrs0,callback){if(arrs0){if(gd.kk==gd.keys.length){gd.kk=0;}gd.getCount(gd.getStr(arrs0,gd.keys[gd.kk]), function (data,obj) {(data=='err')?gd.gdMapGetCount2(arrs0,callback):callback(2,arrs0.s,data,obj);});gd.kk++;}else{console.log('==============不存在===============')}},mainFor: function (i,arrs0,callback) {if(!arrs0[i]){console.log('结束');return false;}var lengths=arrs0[i].length;for(var key=0;keyfunction () {gd.mainFor(i,arrs0,callback);},100);}
};//调用统计
var distance=0,duration=0,i=0;
var arrs1=gd.arrCount(jsonData);
gd.mainFor(0,gd.arrayCount(arrs1),function (n,s,data) {distance+=parseInt(data.distance);//行驶距离duration+=parseInt(data.duration);//耗时i++;if(i==arrs1.length){var km=(distance/1000)+'千米';console.log(km,gd.formatSeconds(duration));}
});


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部