1

我正在开发一个模拟器,可以在谷歌地图上绘制飞机的飞行路径。

模拟器不知道纬度仅定义在 -90 到 +90 度之间,经度定义在 -180 到 +180 度之间。因此,飞行路径可能包括超出地图边界的点。超过经度不是问题,因为它仍然可以正确绘制(经度 x 和 x+360 处的点相同),但纬度是一个问题。

有没有办法告诉谷歌地图保持正确边界之间的点并正确绘制它们?

否则,您是否知道在哪里可以找到这样做的功能?

4

2 回答 2

2

经度、纬度和海拔对于飞行模拟器来说是一个糟糕的坐标系,因为映射呈现出奇点,即地球上无限接近的点具有非常不同的坐标。例如,在您靠近极点之一的地方,经度变化速度与飞机速度相比可能会变得任意大。当正好站在杆子上时,经度甚至没有意义。

更好的解决方案是为模拟器使用 XYZ 坐标系,并且仅转换为经度/纬度和高程进行绘图。如果您可以为您的用例将地球近似为一个球体,那么这种转换的计算是微不足道的......否则事情可能会变得更加复杂,具体取决于您希望它有多准确。

也就是说,通过将其延伸到极点上,仍然可以为纬度略超出 -90...90 范围的点赋予“a”含义......

if latitude < -90:
    latitude = -180 - latitude
    longitude = longitude + 180
if latitude > 90:
    latitude = 180 - latitude
    longitude = longitude + 180

但是使用此坐标系进行导航是一个非常糟糕的主意(空间中的同一点可以有多个坐标的三元组)。

于 2012-12-08T20:46:38.833 回答
1

如果您的模拟器不知道纬度的最大值是 90 度,则它已损坏并需要修复。谷歌地图适用于有效/可能的纬度和经度值。

于 2012-12-08T20:34:01.373 回答