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
}
*/