Javascript 将纬度和经度转换为XY坐标

Javascript 将纬度和经度转换为XY坐标,javascript,math,geometry,mapping,coordinates,Javascript,Math,Geometry,Mapping,Coordinates,我正在做一个Javascript应用程序,它需要在真实地图中以帧的形式移动某个元素 对于每个帧,元素在纬度和经度上有以下位置,例如帧0: -纬度:49.011213 -经度:8.422885 对于第1帧: -纬度:49.01121 -经度:8.422887 帧(帧0)需要是点(0,0),我希望下面的帧也转换为XY坐标 基本上,我需要一个Javascript脚本来接收一帧的纬度和经度,并返回该帧的位置(x,y)(相对于第0帧的位置(0,0)) 我尝试了以下方法,但无效: function conv

我正在做一个Javascript应用程序,它需要在真实地图中以帧的形式移动某个元素

对于每个帧,元素在纬度和经度上有以下位置,例如帧0:
-纬度:49.011213
-经度:8.422885

对于第1帧:
-纬度:49.01121
-经度:8.422887

帧(帧0)需要是点(0,0),我希望下面的帧也转换为XY坐标

基本上,我需要一个Javascript脚本来接收一帧的纬度和经度,并返回该帧的位置(x,y)(相对于第0帧的位置(0,0))

我尝试了以下方法,但无效:

function convertSphericalToCartesian(latitude, longitude)
{
    // Convert from Degrees to Radians
    let latRad = latitude * (Math.PI)/180; 
    let lonRad = longitude * (Math.PI)/180;

    let earthRadius = 6367; // Radius in km
    let posX = earthRadius * Math.cos(latRad) * Math.cos(lonRad);
    let posY = earthRadius * Math.cos(latRad) * Math.sin(lonRad);
    return {x: posX, y: posY};
}

你知道更好的配方吗?非常感谢。

您所做的任何转换都会引入错误,因为您试图将球体的曲面映射到直角坐标。你还没有提到你在用这些信息做什么——提到“帧”让我想到了动画或涉及在地图上移动物体的游戏。如果是这样,那么你的计算将与你正在使用的地图紧密相连

一般来说,问题是:你的坐标可能相距多远

对于小距离,最多几英里或几公里,您可能只需要将lat/lon作为x/y坐标即可。例如,您在示例中给出的坐标实际上只相隔几英尺-不要费心复杂的计算。再说一次,在给定的地图上,你如何在这些坐标上画东西,很大程度上取决于你使用的地图


对于更远的距离,地球的曲率变得非常重要,而您正在使用的地图投影将对这些坐标的计算方式产生重大影响。例如,讨论墨卡托投影的计算。

我使用的是小距离,但它可以在全球任何地方。但是,地图面积约为25m²或更小。我想要一个公式,因为我在网上找的那些不适合我