墨卡托坐标系与经纬度坐标系互相转换

1.墨卡托转经纬度

PI:3.1415926535897932384626;
mercatorTolonlat(mercator){
    let lonlat={lon:0,lat:0};
    
    let x = mercator.x/20037508.34*180;
    let y = mercator.y/20037508.34*180;
    
    y= 180/Math.PI*(2*Math.atan(Math.exp(y*Math.PI/180))-Math.PI/2);
    
    lonlat.lon = x;
    lonlat.lat = y;

    return lonlat;
};

2.经纬度转墨卡托

lonlatToMercator(lonlat){
    var mercator = {};
    
    let x = lonLat.lon * 20037508.34 / 180;
    let y = Math.log(Math.tan((90 + lonLat.lat) * Math.PI / 360)) / (Math.PI / 180);
    
    y = y * 20037508.34 / 180;
    
    mercator.x = x;
    mercator.y = y;
    
    return mercator;
}

案例

// 1.墨卡托转经纬度
var mercator = {
    x:12607101.238338,
    y:2648567.8723786
}
var lonlat = mercatorTolonlat(mercator);
console.log(lonlat);
/*
    {
        lon:113.25151732418,
        lat:23.136776742416
    }
*/

// 2.经纬度转墨卡托
var lonlat = {
    lon:113.25151732418,
    lat:23.136776742416
}
var mercator = lonlatToMercator(lonlat);
console.log(mercator);
/*
    {
        x:12607101.238338396,
        y:2648567.872378624
    }
*/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。