一、Js方法
墨卡托转经度
function getMercatorLon(x){
return x/20037508.34*180;
}
墨卡托转纬度
function getMercatorLat(y){
y = y/20037508.34*180;
return 180/Math.PI*(2*Math.atan(Math.exp(y*Math.PI/180))-Math.PI/2);
}
经度转墨卡托
function getMercatorLon(x){
return x * 20037508.34 / 180;
}
纬度转墨卡托
function getMercatorLat(y){
y = Math.log(Math.tan((90 + y) * Math.PI / 360)) / (Math.PI / 180);;
return y* 20037508.34 / 180;
}
二、Java方法
/**
* 经度转墨卡托
* @param x 经度
* @return 墨卡托经度
*/
public static double getMercatorLon(double x) {
try {
double mx = x * 20037508.34 / 180;
return mx;
}
catch (BaseException e) {
throw new BaseException(e, LOG);
}
}
/**
* 纬度转墨卡托
* @param y 纬度
* @return 墨卡托纬度
*/
public static double getMercatorLat(double y) {
try {
double my = Math.log(Math.tan((90 + y) * Math.PI / 360)) / (Math.PI / 180);
my = my * 20037508.34 / 180;
return my;
}
catch (BaseException e) {
throw new BaseException(e, LOG);
}
}
/**
* 墨卡转托经度
* @param x 墨卡托经度
* @return 经度
*/
public static double getLonMercator(double x) {
try {
// double mx = x * 20037508.34 / 180;
double mx = x / 20037508.34 * 180;
return mx;
}
catch (BaseException e) {
throw new BaseException(e, LOG);
}
}
/**
* 墨卡托转纬度
* @param y 墨卡托纬度
* @return 纬度
*/
public static double getLatMercator(double y) {
try {
double my = y / 20037508.34 * 180;
my = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);
// double my = Math.log(Math.tan((90 + y) * Math.PI / 360)) / (Math.PI / 180);
// my = my * 20037508.34 / 180;
return my;
}
catch (BaseException e) {
throw new BaseException(e, LOG);
}
}
网友评论