【问题标题】:Convert game position to lat lng in rotated map在旋转地图中将游戏位置转换为 lat lng
【发布时间】:2020-08-29 08:07:54
【问题描述】:

我有数学问题,我无法解决,我对此感到很愚蠢。

我有这样定义的游戏边界。

const GAME_BOUNDS = {
    x: {
        min: -3200,
        max: 4800
    },
    y: {
        min: -4000,
        max: 6000
    }
}

我有前任。 const POS = {x: 100, y: -500}。我想在我的范围内将位置转换为正确的纬度/经度。其中 lng 180 是x: 4800。然而诀窍是,地图被旋转​​了,我找不到正确的旋转,我需要应用来获得正确的 lng/lat。

【问题讨论】:

    标签: javascript math geolocation


    【解决方案1】:

    您可以定义一个漂亮的函数,将值 x 从一个范围 xMin..xMax 映射到另一个范围 yMin..yMax:

    function remap(x, xMin, xMax, yMin, yMax) {
        return yMin + (yMax - yMin)*(x - xMin)/(xMax - xMin);
    }
    

    现在假设您要将 x 值从 -3200..4800 范围映射到 -180..180 并将其存储为变量 lng,并将 y 值从 -4000..6000 范围映射到 -90 ..90 并将其存储为lat:

    let lng = remap(x, -3200, 4800, -180, 180);
    let lat = remap(y, -4000, 6000, -90, 90);
    

    【讨论】:

    • 我在做类似的事情,但我的主要问题是旋转值以映射地图上的正确位置。我可以从我的代码中获取 lng / lat,它需要旋转某个值以匹配我地图上的正确值。如果它有助于我知道值应该在地图上的位置,那么计算所需的旋转会更容易。
    • 你能提供更多关于这个轮换的细节吗?
    • 我有坐标,用你的函数转换它们会给我正确的 lng,大约是 -11.93159。但是纬度是错误的。使用 ur 函数时它在 -42.76 左右,而实际上它应该在 -32.2071 左右。我想我需要对纬度进行某种旋转。 @Edit 另外,如果有帮助,我知道我的界限是正确的。
    • 你能告诉更多关于你需要申请的轮换吗?
    • 您到底需要知道什么?我不知道您需要什么信息,因为我自己不知道我需要申请什么轮换。如果对您有帮助,我想将自定义平铺地图转换为 kibana。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    相关资源
    最近更新 更多