更新时间:2023-02-01 23:12:54
这链接可能对您有所帮助,因为它详细介绍了使用半正矢公式来计算距离。
节选:
该脚本[在Javascript]计算两个点之间的大圆距离 - 的,也就是说,在地球表面的最短距离 - 采用 半正矢的公式。
函数getDistanceFromLatLonInKm(LAT1,lon1,LAT2,lon2){
VAR R = 6371; //半径在千米的地球
VAR DLAT = deg2rad(LAT2-LAT1);下面// deg2rad
VAR dLon = deg2rad(lon2-lon1);
VAR一个=
Math.sin(DLAT / 2)* Math.sin(DLAT / 2)+
Math.cos(deg2rad(LAT1))* Math.cos(deg2rad(LAT2))*
Math.sin(dLon / 2)* Math.sin(dLon / 2)
;
变种C = 2 * Math.atan2(的Math.sqrt(a)中,的Math.sqrt(1-a))的;
VAR D = R *℃; //在公里距离
返回D组;
}
功能deg2rad(度){
返回度*(Math.PI / 180)
}
How do I calculate the distance between two points specified by latitude and longitude?
For clarification, I'd like the distance in kilometers; the points use the WGS84 system and I'd like to understand the relative accuracies of the approaches available.
This link might be helpful to you, as it details the use of the Haversine formula to calculate the distance.
Excerpt:
This script [in Javascript] calculates great-circle distances between the two points – that is, the shortest distance over the earth’s surface – using the ‘Haversine’ formula.
function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
var R = 6371; // Radius of the earth in km
var dLat = deg2rad(lat2-lat1); // deg2rad below
var dLon = deg2rad(lon2-lon1);
var a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2)
;
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; // Distance in km
return d;
}
function deg2rad(deg) {
return deg * (Math.PI/180)
}