由于现在的工作跟地图有关,经常会遇到根据经纬度计算两点之间距离的问题。所以今天就在这里分享一下,我用的方法。
利用经纬度计算两点之间距离:
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
"" ; }; |