最近接到一个任务是去根据坐标计算距离
var EARTH_RADIUS = 6378137.0; //单位M var PI = Math.PI; function getRad(d){ return d*PI/180.0; } /** * caculate the great circle distance * @param {Object} lat1 * @param {Object} lng1 * @param {Object} lat2 * @param {Object} lng2 */ function getGreatCircleDistance(lat1,lng1,lat2,lng2){ var radLat1 = getRad(lat1); var radLat2 = getRad(lat2); var a = radLat1 - radLat2; var b = getRad(lng1) - getRad(lng2); var s = 2*Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2))); s = s*EARTH_RADIUS; s = Math.round(s*10000)/10000.0; return s; }
想了想交给前端去计算比较省资源 就将后端数据json 输出
var ct=parseJSON('<%-ct%>') ; var account_bound=parseJSON('<%-account_bound%>') ; var ctpaihang=[] ; if(account_bound.longitude!=0) { var juli={} ; var latitude=parseFloat(account_bound.latitude) ; var longitude=parseFloat(account_bound.longitude); for(var i=0;i<ct.length;i++) { juli=ct[i] ; juli.juli=getGreatCircleDistance(longitude, latitude, ct[i].latitude, ct[i].longitude); ctpaihang.push(juli) ; } console.log(ctpaihang) ; }
继而就计算出距离 然后对json 数据进行排序即可
你打算打赏多少钱呢?
(微信扫一扫)