我正在为国家采摘工作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度的范围内。
我该如何解决?
答案 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));