0

我有两个点向量,当散点图给我以下路径:(每种颜色只是路径的不同段 - 有些段是直的,有些段是通过采用某个半径的圆的某个弧长来构造的)

s

然后我想抓住这些点并使用谷歌地球的Javascript API将它们绘制在地球表面,如下所示:

// Create the placemark
var lineStringPlacemark = ge.createPlacemark('');

// Create the LineString; set it to extend down to the ground
// and set the altitude mode
var lineString = ge.createLineString('');

lineStringPlacemark.setGeometry(lineString);
lineString.setExtrude(true);
lineString.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);

// Add LineString points
lineString.getCoordinates().pushLatLngAlt( 200,  300);
lineString.getCoordinates().pushLatLngAlt( 200.50505051, 300);

... all points ...

ge.getFeatures().appendChild(lineStringPlacemark);

所以我基本上将它们视为纬度和经度 - 并不介意此时路径出现在地球上的哪个位置。当我这样做时,我会得到一条自行循环的路径,我假设这是因为地球是球形的。

在此处输入图像描述

我认为谷歌地球可以处理任何类型的线在地球表面的投影!我可以做什么样的转变来防止这种情况/实现所需的路径?原始点来自 x=[0,500] 和 y=[0,500] 的坐标系,我试图将坐标系中的点移到地球上的纬度和经度上!

4

1 回答 1

0

问题是纬度和经度被包装了。

纬度表示为赤道以北或以南的度数(0 度)。值范围从 -90 度到 90 度。

经度是以度为单位的角距离,相对于本初子午线。子午线以西的值范围为 -180 到 0 度。经线以东的值范围为 0 到 180 度。

您遇到的问题是给定范围 [-90,90] 和 [-180.180] 之外的值被包装了。这意味着纬度,例如 +150,实际上是在 -60 处绘制的。+500 的经度将绘制在 +140 处。

要将绘图保持在框架内,您必须将纬度限制在 [-90, 90] 范围内(在北极和南极之间),您的经度需要限制在相同的量,因为您只能看到地球的一半立即,[-90, 90]。

为了实现这一点,只需将所有角度除以一个值5.6- 这将使您的线保持在框架内为 500/5.6 = 89.28

于 2012-12-01T17:55:48.447 回答