我想计算2个latlon点之间的距离。 简单距离公式http://www.purplemath.com/modules/distform.htm不正确,因为我们正在处理两种不同的度量(lat和lon)。
这个问题有标准解决方案吗?
答案 0 :(得分:2)
使用Haversine formula
。
答案 1 :(得分:0)
试试这个, 这使用'hasrsine'公式来计算两点之间的大圆距离 - 即地球表面上的最短距离 - 给出点之间的“如飞行中的苍蝇”距离(忽略任何山丘!)
Haversine公式:
R = earth’s radius (mean radius = 6,371km)
Δlat= lat2- lat1 Δlong= long2- long1 a =sin²(Δlat/ 2)+ cos(lat1).cos(lat2).sin²(Δlong/ 2) c = 2.atan2(√a,√(1-a)) d = R.c
答案 2 :(得分:0)
尝试使用这个javascript hasrsine函数以及torad()辅助函数,我将其用于我的地图应用
function calculateHaversineDistance(lat1x, lon1, lat2x, lon2) {
var R = 6371; // km
var dLat = toRad(lat2x-lat1x);
var dLon = toRad(lon2-lon1);
var lat1 = toRad(lat1x);
var lat2 = toRad(lat2x);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return R * c;
}
function toRad(x) {
return x * Math.PI / 180;
}
希望这有帮助。