|
发表于 2019-3-20 13:52:02
|
显示全部楼层
本帖最后由 牛刀服务-LYL 于 2019-3-20 13:54 编辑
在页面加载完成事件中增加如下代码:将计算得到的距离加载到数据表restData2中并显示到页面上。
function Rad(d){
return d * Math.PI / 180.0;//经纬度转换成三角函数中度分表形式。
}
//计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度
function GetDistance(lat1,lng1,lat2,lng2){
var self = this;
var a = Rad(lat1) - Rad(lat2);
var b = Rad(lng1) - Rad(lng2);
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
Math.cos(Rad(lat1))*Math.cos(Rad(lat2))*Math.pow(Math.sin(b/2),2)));
s = s *6378.137 ;// EARTH_RADIUS;
s = Math.round(s * 10000) / 10000; //输出为公里
//s=s.toFixed(4);
return s;
}
var self = this;
var rows = [];
var rows1 = [];
//北京天安门
var lat1 = this.comp('restData').getValue("fweidu");
var lng1 = this.comp('restData').getValue("fjingdu");
//目标位置
this.comp('restData1').each(function(param){
var lat2 = param.row.fweidu;
var lng2 = param.row.fjingdu;
var fweizhimc = param.row.fweizhimc;
var juli = GetDistance(lat1,lng1,lat2,lng2);
rows.push({
"fid": $Uuid.createUUID(),
"fweizhimc":fweizhimc,
"fjuli":juli
});
});
//按距离进行排序方法一
rows.sort(function(a,b){
if(a.fjuli<b.fjuli){
return -1;
}else if(a.fjuli>b.fjuli){
return 1;
}
return 0;
});
//restData2就是展示距离的数据表
self.comp('restData2').loadData(rows); |
|