由于现在的工作跟地图有关,经常会遇到根据经纬度计算两点之间距离的问题。所以今天就在这里分享一下,我用的方法。
利用经纬度计算两点之间距离:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
function
calculate(start,end){
//start 起点经纬度,数据格式 start = {lon:,lat:}
//end 终点定位度,数据格式 end = {lon:,lat:}
if
(start.lon !=
null
&& start.lat !=
null
&& end.lon !=
null
&& end.lat !=
null
){
function
rad(d){
return
d * Math.PI / 180.0;
}
var
slon = start.lon / 3600000;
var
slat = start.lat / 3600000;
var
elon = end.lon / 3600000;
var
elat = end.lat / 3600000;
//赤道半径
var
EARTH_RADIUS = 6378137;
var
radLat1 = rad(slat);
var
radLat2 = rad(elat);
var
a = radLat1 - radLat2;
var
b = rad(slon) - rad(elon);
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;
//返回公里
var
kilometer = Math.round(s * 10000) / 10000000;
var
kl = kilometer +
""
;
if
(kl.length > 4){
//保留两位小数
return
kilometer.toFixed(2);
}
else
{
return
kilometer;
}
}
return
""
;
};
|