将x,y坐标转换为经度和纬度时,JavaScript中数字的atan()

将x,y坐标转换为经度和纬度时,JavaScript中数字的atan(),javascript,Javascript,我正在使用WebMercator将经度和纬度转换为x和y坐标。然而,当我想解决这个问题时,JavaScript(和p5.js)的内置atan()(或Math.atan())函数给我带来了麻烦。下面给出了Web墨卡托和计算出的反演 然后,对于我的网格中的一个y位置示例,我的代码类似于: //Sample code for transforming y coordinate to latitude using Web Mercator //map size: 128x128 -> c_map

我正在使用WebMercator将经度和纬度转换为x和y坐标。然而,当我想解决这个问题时,JavaScript(和p5.js)的内置
atan()
(或
Math.atan()
)函数给我带来了麻烦。下面给出了Web墨卡托和计算出的反演

然后,对于我的网格中的一个y位置示例,我的代码类似于:

//Sample code for transforming y coordinate to latitude using Web Mercator
//map size: 128x128 -> c_map = 128, zoom level: 1
var ypos = 100;
var c_map = 128;
var temp = PI*(1- ypos/(pow(2, 1)*c_map);
temp = atan(exp(temp) * 180/PI);
lat = 2*(180 / PI)*(temp - PI / 4);
但是,这给了我y坐标的假值,因为JavaScript以弧度计算切线和反正切。 我尝试了几种配置,首先将指数转换为弧度(指数是否以度为单位?),然后将结果转换回度,但都没有效果。y坐标是相对于点[0,0]给出的


为了获得y坐标的正确值,我需要在何处应用哪种弧度/度数变换

转换为弧度:
atan(exp(temp)*PI/180)
这不起作用。我可以举一个有效的例子,但我的y坐标在赤道处从来没有映射为0,在两极为+-90。到目前为止,所有转换为弧度或度数的尝试都失败了。转换为弧度:
atan(exp(temp)*PI/180)
这不起作用。我可以举一个有效的例子,但我的y坐标在赤道处从来没有映射为0,在两极为+-90。到目前为止,所有转换成弧度或度数的尝试都失败了。