在我的应用程序中,我想计算具有纬度和经度的两点之间的距离。我设法从这个网站( http://andrew.hedges.name/experiments/haversine/ )得到了用来计算它的方程,这里是方程:
dlon = lon2 - lon1
dlat = lat2 - lat1
a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2
c = 2 * atan2( sqrt(a), sqrt(1-a) )
d = R * c (where R is the radius of the Earth
所以我把它们翻译成代码,这里是:
float distanceLongitude = lon2 - lon1;
float distanceLatitude = lat2 - lat1;
float a = powf(sinf((distanceLatitude/2)), 2) + cosf(lat1) * cosf(lat2) * powf((sinf(distanceLongitude/2)),2);
float c = 2 * atan2f(sqrtf(a), sqrtf(1-a));
float d = 6373 * c; //6373 radius of earth
我尝试了以下坐标的代码: lat1 = 33.854025 lon1 = 35.506923 lat2 = 33.856835 lon2 = 35.506324
根据该网站,结果是 0.317 公里或 0.197 英里。但是,我的代码输出给了我 18.143757。我该如何解决?(请检查网站上的转换器以了解我在说什么。
注:d 应为最终结果。