【发布时间】:2021-09-28 03:34:45
【问题描述】:
我正在 MapboxGL (js) 世界地图上绘制一条沿着轨道物体路径的线。我通过在对象的轨道更新时将一组新的十进制经度/纬度坐标添加到线几何阵列来做到这一点。
Mapbox(和其他)有一个已知问题,当绘制一条穿过 180° 子午线(经度)的线时,我们没有得到一条从 a 到 b 的漂亮直线,我们得到一条很长的线从 a 到 b 环游全球:
而不是:我们得到: // / /___ .../..................... 180° 子午线 /___ // //此处和 Mapbox 的“已接受”答案建议转移到 0°/360° 经度范围,但这只是将问题从赤道转移到极点。这对于大多数一般建议来说都很好,但对于我们可能穿过 0°/360° 子午线的轨道跟踪来说仍然是一个问题。
我的解决方案是使用 MultiLine 几何并将我的坐标分解成新的数组,当我穿过这条子午线时,这总是会留下一个很小的间隙,或者,如果我在任一侧为“180,纬度”,我们会得到一个“扭结”在子午线处:
间隙:或扭结: // // ........ .....|... 180° 子午线 / // //所以我需要弄清楚如果经度在子午线上,准确的纬度是多少,知道两边的起点和终点:
+170 | p2 /: | / : | / : 180 -|-----/ 像素? -- 180°子午线 | /: : (液化天然气) | / : : | / : : -170 |_/___:___:___ p1 x? (纬度)我需要求解纬度 x,以便生成 pX(如果经度为 180,则知道 p1 和 p2)。一旦我有了 pX,我可以将它添加到最后一行的末尾和下一行的开头,从而缩小差距(或平滑“扭结”)。
我知道这是基本的 Trig,但我的老脑又让我失望了......再次......
【问题讨论】:
标签: coordinates latitude-longitude mapbox-gl-js calculation