2个latlon点之间的距离

时间:2011-04-06 09:33:48

标签: coordinates latitude-longitude distance

我想计算2个latlon点之间的距离。 简单距离公式http://www.purplemath.com/modules/distform.htm不正确,因为我们正在处理两种不同的度量(lat和lon)。

这个问题有标准解决方案吗?

3 个答案:

答案 0 :(得分:2)

使用Haversine formula

请参阅此链接http://www.movable-type.co.uk/scripts/latlong.html

答案 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

或使用链接http://www.movable-type.co.uk/scripts/latlong.html

答案 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;
 }

希望这有帮助。