从经度和纬度数据中获得正确的输出,我一天中的大部分时间都在头疼。我知道这个数据是正确的,通过在谷歌地图中绘制它。例如,我将显示这些经纬度坐标的数据:经度:4.905396 纬度:52.364643
在谷歌地图中绘制时,它显示了正确的位置,即荷兰的阿姆斯特丹:
现在,当我在我的应用程序中绘制它时,它看起来如下:
是的,谷歌地图是 2D 表示,我的是 3D,但这只是为了证明经度和纬度值是正确的,所以如果我将它们转换为 3D 空间的公式是正确的,它们应该出现在同一个位置。
我一直在阅读网络上的很多文章以及 stackoverflow 本身。我已经阅读了这些文章并应用了我看到的所有不同类型的公式:
和
这两个似乎有很好的例子的明确解释,但似乎没有任何效果。我现在正在做的是计算 3D 空间中的位置,然后对其进行归一化并使用它作为方向来绘制一条末端带有点的线,正如您在我的应用程序的屏幕截图中看到的那样。当使用大多数示例中使用的地球半径时,这与仅从中心绘制一条线到计算位置没有什么不同。
我现在的公式是:
X = r * cos(latitude) * cos(lontitude);
Y = r * cos(latitude) * sin(longitude);
Z = r * sin(latitude);
我知道这是错误的,但我浏览了我在网上看到的所有示例,但没有一个显示正确的数据。通过使用来自谷歌地图的数据进行测试,我知道至少输入是正确的。
更新1:
我检查了纹理的拓扑结构,当它的纬度和经度分别为 0.0000 和 0.0000 时会发生这种情况:
所以这意味着这已经是错误的,但它的偏移量是奇数,正如谷歌地图显示的那样,它应该是这样的:
绿色箭头是 0.0000、0.0000 标记。所以我的很明显,它偏向一边。我想它可能(不这么认为/希望如此)是纹理,我正在使用这个: http: //naturalearth.springercarto.com/ne3_data/16200/textures/2_no_clouds_16k.jpg
我从中获得:Shadedrelief Natural Earth textures
更新 2:我用纹理检查了我的球体的拓扑结构,它似乎对 0.0 和 0.0 关闭,但我也怀疑我的公式。我从网上尝试了很多不同的方法,其中一些得到的 0.0 0.0 与我的第一个公式相同,但很多都没有。我的经度和纬度以-180~180和-90~90为单位。
更新 3:这是阿姆斯特丹地块的视图,它有点偏离,就像 0.0 0.0 lat/long piont。我猜地图或计算在某个地方是错误的。我会尝试调整纹理以稍微移动。