openlayer 坐標系轉換


常用坐標系

'EPSG:4326':WGS84經緯度球面坐標系,GPS坐標就是這種,如 118 32是南京。
'EPSG:3857':WGS84的墨卡托投影坐標系。

//相互之間可以轉換。請注意ol版本,看看是否支持該方法 ol.proj.fromLonLat([118,32])=[13135699.913606284, 3763310.6271446524]; ol.proj.toLonLat([13135699.913606284, 3763310.6271446524])=[118,32];
平常webgis中幾乎都是用墨卡托投影的,如百度,高德,谷歌的地圖都是墨卡托投影的地圖。


 1 /**
 2  * 墨卡托轉經緯度,墨卡托投影坐標系(米)
 3  * @param {*} mercator  mercator={x,y} x就是lon ,y 應該是 lat 
 4  *  PI:3.1415926535897932384626;
 5  */
 6 const mercatorTolonlat = function(mercator) {
 7     let lonlat = { lon: 0, lat: 0 };
 8     let x = (mercator.x / 20037508.34) * 180;
 9     let y = (mercator.y / 20037508.34) * 180;
10     y = (180 / Math.PI) * (2 * Math.atan(Math.exp((y * Math.PI) / 180)) - Math.PI / 2);
11     lonlat.lon = x;
12     lonlat.lat = y;
13     return lonlat;
14 };
15 /**
16  * 經緯度轉墨卡托
17  * @param {*} lonlat lonlat = {lon,lat}
18  */
19 const lonlatToMercator = function(lonlat) {
20     var mercator = {};
21     let x = (lonlat.lon * 20037508.34) / 180;
22     let y = Math.log(Math.tan(((90 + lonlat.lat) * Math.PI) / 360)) / (Math.PI / 180);
23     y = (y * 20037508.34) / 180;
24     mercator.x = x;
25     mercator.y = y;
26     return mercator;
27 };

 

 


免責聲明!

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



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