json的前端渲染的妙处

2015-02-04 10:04:31


 最近接到一个任务是去根据坐标计算距离

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 数据进行排序即可

你打算打赏多少钱呢?

打赏
(微信扫一扫)