XYZ到LLA返回范围-180 - 180而不是-90 - 90的纬度

时间:2014-04-04 12:22:05

标签: android geocoding

我正在为国家采摘工作3D地球仪。它由一个半径等于1的球体表示。当用户点击一个屏幕时,我使用光线对象拾取技术得到一个点,然后我试图将它转换为纬度,长的nex方式:

double alt = 1;
double lat = Math.toDegrees(Math.atan2(y, x));
double lon = Math.toDegrees(Math.acos(z/alt));

此代码返回范围-180 - 180度的纬度,但谷歌地理编码器说它应该在-90 - 90度的范围内。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

使用atan2表示经度,asin表示纬度。

double alt = Math.sqrt(x*x+y*y+z*z);
double lon = Math.toDegrees(Math.atan2(y, x));
double lat = Math.toDegrees(Math.asin(z/alt));