【发布时间】:2015-03-24 06:41:30
【问题描述】:
我花了很多时间上网寻找一种方法来做到这一点。通过我在下面的代码中编写的现有文档,但它没有显示正确的角度。 什么问题?
private double angleFromCoordinate(double lat1, double long1, double lat2,
double long2) {
double dLon = (long2 - long1);
double y = Math.sin(dLon) * Math.cos(lat2);
double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1)
* Math.cos(lat2) * Math.cos(dLon);
double brng = Math.atan2(y, x);
brng = Math.toDegrees(brng);
brng %= 360;
// brng = 360 - brng;
return brng;
}
更新 以下代码的结果:
int angle = (int) angleFromCoordinate(36.288024, 59.615656
, 39.033659, 48.662504);
angle is '58'
【问题讨论】:
-
您能否举例说明您传递给此方法的一对纬度和经度,以及您期望的输出以及您真正得到的输出?
-
我已经更新了问题
-
angleFromCoordinate的输入是纬度和经度而不是度数,我应该转换成半径吗?
-
这些数字 - 36.288024、59.615656 等等 - 是度数。是的,您应该将它们转换为弧度,如我的回答中所述。