Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将线性坐标系映射到Google Earth';s球面坐标系_Javascript_Coordinates_Kml_Google Earth_Google Earth Plugin - Fatal编程技术网

Javascript 将线性坐标系映射到Google Earth';s球面坐标系

Javascript 将线性坐标系映射到Google Earth';s球面坐标系,javascript,coordinates,kml,google-earth,google-earth-plugin,Javascript,Coordinates,Kml,Google Earth,Google Earth Plugin,我有两个点向量,当绘制散点图时,给出以下路径:(每种颜色只是路径的不同部分-一些部分是直的,一些部分是通过取某个半径的圆的特定弧长来构造的) 然后我想抓住这些点,并使用Google earth的Javascript API在地球表面绘制它们,如下所示: // Create the placemark var lineStringPlacemark = ge.createPlacemark(''); // Create the LineString; set it to extend down

我有两个点向量,当绘制散点图时,给出以下路径:(每种颜色只是路径的不同部分-一些部分是直的,一些部分是通过取某个半径的圆的特定弧长来构造的)

然后我想抓住这些点,并使用Google earth的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=[0500]和y=[0500]的坐标系,我试图得到该坐标系中的点,到地球上的纬度和经度

问题是纬度和经度都被包裹起来了

纬度表示为赤道以北或以南的度数(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

,渲染看起来是正确的。你到底期望什么?您希望结果是什么样的?试着把你想要的东西画到一个像乒乓球一样的球面上,然后从那里算出不同部分的角度。很可能,你只是把它画得太大了。简单地缩小它可能会产生更接近您预期的结果。记住,在球体上,平行线总是相交两次。我如何进行缩放?原始点来自于x=[0500]和y=[0500]的坐标,我试图得到该坐标系中的点,到一个纬度,longtiudeA第一次尝试将所有坐标数减半。所以x/2,y/2映射到经纬度。如果太大,试着四分之一,如果太小,试着乘以0.55到0.99之间的数字。尝试使用比例因子,直到得到想要的结果。