最近接到一个任务是去根据坐标计算距离
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 数据进行排序即可
