地图坐标系转换(4326与3857转换)

坐标系介绍

概念转载来源:https://baijiahao.baidu.com/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(伪墨卡托投影,该投影是正轴等角切圆柱投影,在高纬度地区形变的非常严重)。原来高德地图和谷歌地图上面画的东东都是变形的!!没错,就是变形的,你看到的这些互联网地图用的都是类似的投影,他们在高纬度地区都是拉伸严重的,远比他的实地面积要大。但是正轴墨卡托投影有个优点:投影后角度不变形,所以用来导航和定位非常合适。

实现

转载来源:https://blog.csdn.net/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;
}
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值