1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 角度转弧度 function _angle2rad(d) { return d * Math.PI / 180.0; } function gpsDistance(p1, p2) { var lat1 = _angle2rad(p1[1]); var lat2 = _angle2rad(p2[1]); var a = lat1 - lat2; var b = _angle2rad(p1[0]) - _angle2rad(p2[0]); var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2))); return distance * 6378137; } |
上述代码以球状模型计算地球上两点之间的直线距离。
以计算成都北站到成都东站的直线距离为例:
成都北站经纬度:104.074047,30.695510
成都东站经纬度:104.139949,30.629326
经纬度拾取来源:https://lbs.qq.com/tool/getpoint/get-point.html
1 2 3 |
gpsDistance([104.074047,30.695510], [104.139949,30.629326]); // 输出:9700.684129156278 |
计算结果为9700米,跟百度地图测距工具测量结果吻合:
浏览量: 0