1. 程式人生 > 實用技巧 >openlayer 座標系轉換

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 };