我将使用Haversine公式找到两个城市之间的距离。 下面是VC ++中的代码。
但是我找不到点之间的距离(18.567367,-68.363431)和(33.636719,-84.428067)[第一个值是纬度,第二个是经度]。 它给出了类似-1。#IND。
的东西你能告诉我如何处理这个问题吗?
下面是代码:
double deg2rad(double deg) {
return (deg * pi / 180);
};
double TravelDistance(double lat1d, double lon1d, double lat2d, double lon2d) {
double lat1r, lon1r, lat2r, lon2r, u, v,dblDistance;
lat1r = deg2rad(lat1d);
lon1r = deg2rad(lon1d);
lat2r = deg2rad(lat2d);
lon2r = deg2rad(lon2d);
u = sin(lat2r - lat1r);
v = sin(lon2r - lon1r);
return ( 2.0 * earthRadiusKm * asin(sqrt(u * u + cos(lat1r) * cos(lat2r) * v * v)))};
提前感谢.... !!
答案 0 :(得分:1)
看着
http://en.wikipedia.org/wiki/Haversine_formula
对于你和你来说,你似乎已经忘记在sin()的参数中除以二。
你得到的答案很可能是因为sqrt参数是< 0或因为asin参数是> 1。