如何将 lng 和 lat 从 OpenLayers 转换为 mapbox?

How can I convert lng and lat from OpenLayers to mapbox?

OpenLayers 使用这样的数组:[15711464.77174924, 1340284.424706252] 来处理中心的坐标,但是对于 mapbox-gl 我应该设置一个介于 -90 到 90 之间的值,但我得到了这个错误:

Error: Invalid LngLat latitude value: must be between -90 and 90

那么,有什么方法可以将坐标转换为:15711464.77174924 到 -90 到 90 之间?

球形墨卡托坐标假定世界是一个半径为 6378137 米的球体。要转换为度数(基于 OpenLayers 源代码 https://github.com/openlayers/openlayers/blob/main/src/ol/proj/epsg3857.js#L132-L134),函数为

function toLonLat(input) {
    const RADIUS = 6378137;
    const HALF_SIZE = Math.PI * RADIUS;

    const lon = (180 * input[0]) / HALF_SIZE;
    const lat =
      (360 * Math.atan(Math.exp(input[1] / RADIUS))) / Math.PI - 90;

    return [lon, lat];
}