Coordinates 两个latlon点之间的距离

Coordinates 两个latlon点之间的距离,coordinates,latitude-longitude,distance,Coordinates,Latitude Longitude,Distance,我想算出两个拉特伦点之间的距离。 简单的距离公式是不正确的,因为我们正在处理两种不同的度量(lat和lon) 这个问题有标准的解决方案吗?使用Haversine公式 查看此链接, 这使用了“哈弗森”公式来计算两点之间的大圆距离——即地球表面上的最短距离——给出两点之间的“如同乌鸦一样”距离(忽略任何山丘!) 哈弗森公式: R = earth’s radius (mean radius = 6,371km) Δlat=lat2− lat1 Δlong=long2− long1 a=sin²(Δl

我想算出两个拉特伦点之间的距离。 简单的距离公式是不正确的,因为我们正在处理两种不同的度量(lat和lon)


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

使用
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.2(√A.√(1−a) ) d=R.c


或者使用链接,

尝试这个javascript haversine函数和torad()helper函数,我在地图应用程序中使用它

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;
 }
希望这有帮助