[轉]OpenLayers 3 自定義坐標系


轉載自:https://www.jianshu.com/p/9eca1bc8a12d

地圖中坐標系是非常多的,最常用的是EPSG:3857(等於谷歌的900913,等於esri的102100)的web墨卡托投影和GPS的EPSG:4326的WGS84坐標系。業務場景中,很多時候並不是這些常用坐標系,比如要使用北京54,西安80等坐標系怎么辦咧?本文僅僅拋磚引玉,介紹方法,闡述如何應用自定義坐標系。

一 定義坐標系

每個坐標系都是有一個EPSG定義,本文准備以EPSG:3395舉例。
首先在http://epsg.io/網站,查找坐標系定義。

自定義坐標系邊界.png

坐標系定義.png

這里我們是定義ol3的,於是選擇proj4js的,復制粘貼下來。
var projection_3395 = new ol.proj.Projection({ code: 'EPSG:3395', extent:[-20026376.39,-15496570.74,20026376.39,18764656.23], units: 'm', axisOrientation: 'neu' }); //定義3395坐標系,且與其他4326,3857的互相轉換 proj4.defs("EPSG:3395","+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); 

二 坐標系轉換

說白了,其實是通過proj4對坐標系轉換,然后作為匿名回調重寫ol.proj的坐標轉換功能,以下代碼定義了3395轉4326,3857方法。

//結合proj4在ol3中自定義坐標系 ol.proj.addProjection(projection_3395); ol.proj.addCoordinateTransforms("EPSG:4326", "EPSG:3395", function(coordinate) { return proj4("EPSG:4326","EPSG:3395",coordinate); }, function(coordinate) { return proj4("EPSG:3395","EPSG:4326",coordinate);; } ); ol.proj.addCoordinateTransforms("EPSG:3857", "EPSG:3395", function(coordinate) { return proj4("EPSG:3857","EPSG:3395",coordinate); }, function(coordinate) { return proj4("EPSG:3395","EPSG:3857",coordinate);; } ); 

三 測試坐標系轉換

ol.proj.transform([118,32],'EPSG:4326','EPSG:3395'); //這種如果測試成功,代表定義成功了。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM