【问题标题】:Proj4Leaflet transform from 4326 to 3857 in LeafletProj4Leaflet 在 Leaflet 中从 4326 转换为 3857
【发布时间】:2018-07-10 00:59:10
【问题描述】:

从上周开始,我正在研究 Leaflet,这个问题让我很生气。

数据库返回坐标以创建 Leaflet 标记(使用默认 Map.CRS EPSG3857),因此我决定使用 proj4js 将数据库坐标 4326 转换为 3857:

var iarCoordinate = [-76.495207812, 3.429960207],
    obSource = new proj4.Proj('EPSG:4326'),
    obDest = new proj4.Proj('EPSG:3857'),        
    obResult = new proj4.Point(iarCoordinate);
proj4.transform(obSource, obDest, obResult);
//obResult = [-8515407.581757482, 382049.6844491562]

这些[-8515407.581757482, 382049.6844491562]不代表正确的点。

如果我将最初的 4326 坐标 [3.429960207,-76.495207812] 反转并直接设置为标记,它显示完美(没有任何 proj4 转换)。

1.为什么该转换在 Leaflet 上不起作用,或者我应该怎么做才能使其起作用?

2。为什么反转坐标似乎可以工作?

3。解决问题的正确方法应该是什么?

【问题讨论】:

    标签: javascript leaflet proj4js epsg


    【解决方案1】:

    Leaflet 使用纬度-经度,而 proj4 使用经度-纬度(或者更一般地说,投影定义中指定的轴顺序,对于大多数投影来说是东-北)。

    是的,some software uses lat-long and other software uses long-lat,这令人困惑。

    如果您只打算使用EPSG:4326EPSG:3857,请考虑使用Leaflet 的内置L.CRS.EPSG3857.projectL.CRS.EPSG.3857.unproject,记得检查Leaflet's documentation。这样您就可以使用一个一致的轴顺序。

    【讨论】:

    • 感谢@IvanSanchez,我刚刚意识到,当倒置(纬度-经度)传单(EPSG:3758)时,我从数据库(使用WGS84格式的经纬度)收到的坐标能够了解它们并将它们转化为在地图上绘制。
    猜你喜欢
    • 2016-09-28
    • 2015-08-29
    • 2020-04-06
    • 1970-01-01
    • 2022-01-08
    • 2015-03-02
    • 2019-07-03
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多