Coordinates 两个latlon点之间的距离
我想算出两个拉特伦点之间的距离。 简单的距离公式是不正确的,因为我们正在处理两种不同的度量(lat和lon)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
这个问题有标准的解决方案吗?使用
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;
}
希望这有帮助