Proj4Leaflet在Leaflet中从4326转换为3857

时间:2018-01-31 01:58:37

标签: javascript leaflet proj4js epsg

我上周正在研究Leaflet,这个问题让我感到害怕。

数据库返回坐标以创建Leaflet标记(使用默认的Map.CRS EPSG3857),因此我决定使用proj4js将dataBase坐标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。如何才能成为解决问题的正确方法?

1 个答案:

答案 0 :(得分:2)

传单使用纬度 - 经度,而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。这样你就可以使用一个一致的轴顺序。