坐标系介绍
概念转载来源:/s?id=1670725365482599052&wfr=spider&for=pc
EPSG: 4326
一个地理坐标系(也叫大地坐标系),用于描述WGS84坐标系,其是从1984年开始在GPS中使用的全球地理坐标系统;也就是通常说的经纬度坐标;
该坐标系是大地坐标系(Geodectic coordinate system),单位是度(角度单位),角度用来测量长度和面积是不合适的(尺子不好用啊),但可用于定位,而且它的范围又覆盖了全球,所以很适合全球定位(GPS卫星定位的坐标系用的就是它)
EPSG: 3857
EPSG:3857是一个投影坐标系(Projected coordinate system),在WGS84坐标系基础上进行了伪墨卡托投影(Pseudo-Mercator)。球形墨卡托地图、谷歌地图、osm地图、bing地图、ArcGIS、ESRI会常用该坐标系。
投影坐标系(Projected coordinate system)是在大地坐标系(Geodectic coordinate system)的基础上,经过数学运算,把大地坐标系的曲面坐标映射到平面上产生的一种平面坐标系。
虽然EPSG:3857是平面坐标系,单位是长度(米),但是他用了一个长度和面积都不靠谱的投影坐标系:Pseudo-Mercator(伪墨卡托投影,该投影是正轴等角切圆柱投影,在高纬度地区形变的非常严重)。原来高德地图和谷歌地图上面画的东东都是变形的!!没错,就是变形的,你看到的这些互联网地图用的都是类似的投影,他们在高纬度地区都是拉伸严重的,远比他的实地面积要大。但是正轴墨卡托投影有个优点:投影后角度不变形,所以用来导航和定位非常合适。
实现
转载来源:/semian7633/article/details/109258717
4326转3857
function WGS84ToMercator(lonlat){
const coord = {
lat:0,
lng:0
};
const earthRad = 6378137.0; //地球半径
coord.lat = lonlat.lng * Math.PI / 180 * earthRad;
const param = lonlat.lat * Math.PI / 180;
coord.lng = earthRad / 2 * Math.log((1.0 + Math.sin(param)) / (1.0 - Math.sin(param)));
return coord;
}
3857转4326
function mercatorToWGS84(lonlat){
const coord = {
lat:0,
lng:0
};
const lat = lonlat.lat/20037508.34*180;
let lng = lonlat.lng/20037508.34*180;
lng = 180/Math.PI*(2*Math.atan(Math.exp(lng*Math.PI/180))-Math.PI/2);
coord.lat = lat;
coord.lng = lng;
return coord;
}