侧边栏壁纸
博主头像
优吉斯空间 - YouGIS.COM.CN博主等级

行动起来,活在当下

  • 累计撰写 6 篇文章
  • 累计创建 17 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

经纬度与网络墨卡托(Web Mercator)投影坐标的转换

Administrator
2024-08-11 / 0 评论 / 4 点赞 / 269 阅读 / 2564 字 / 正在检测是否收录...

欢迎关注优吉斯(武汉)空间信息

> 公众号:yougis

> 主页:yougis.com.cn

> 工具:yougis.cn

yougis_wx_ewm.jpg

经纬度坐标和网络墨卡托投影坐标是WebGIS开发中最常见的两种坐标形式,下面以JavaScript对两者相互转换的实现进行说明。

一、经纬度转网络墨卡托

方法1和方法2转换的结果有极小的差别,但都是正确的。

//方法一
latLng2WebMercator: function(lng, lat) {//[114.32894, 30.585748]
    var earthRad = 6378137.0;
    var x = lng * Math.PI / 180 * earthRad;
    var a = lat * Math.PI / 180;
    var y = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));
    return [x, y]; //[12727039.383734727, 3579066.6894065146]
}
//方法二
latLng2WebMercator2 : function(lng, lat)
{
    var x = lng *20037508.34/180;
    var y = Math.log(Math.tan((90+lat)*Math.PI/360))/(Math.PI/180);
    y = y *20037508.34/180;
    return [x, y];
}

二、网络墨卡托转经纬度

webMercator2LngLat: function(x, y) {//[12727039.383734727, 3579066.6894065146]
    var lng = x / 20037508.34 * 180;
    var lat = y / 20037508.34 * 180;
    lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180)) - Math.PI / 2);
    return [lng, lat]; //[114.32894001591471, 30.58574800385281]
}

以上转换方法的结果经实测都是正确的,只需根据需要用其他语言实现即可。

4

评论区