龙空技术网

使用JavaScript实现的WGS84坐标到GCJ-02坐标转换的示例代码

触心语录 40

前言:

现时咱们对“js代码转换html”大致比较关怀,各位老铁们都想要分析一些“js代码转换html”的相关知识。那么小编同时在网络上搜集了一些对于“js代码转换html””的相关文章,希望看官们能喜欢,朋友们快快来了解一下吧!

#挑战30天在头条写日记#

以下是一个简单的JavaScript函数,用于将WGS84坐标(经度和纬度)转换为GCJ-02坐标(火星坐标系,也称为中国国家坐标系):

function wgs84ToGcj02(wgs84) {

var dLat = transformLat(wgs84.latitude);

var dLon = transformLong(wgs84.longitude);

var radLat = wgs84.latitude / 180 * Math.PI;

var magic = Math.sin(radLat);

var magic = 1 -magic * magic;

var sqrtMagic = Math.sqrt(magic);

dLat = (dLat * 180) / ((magic == 0) ? (1) : (magic));

var u = Math.atan((1 / Math.cos(radLat)) * (wgs84.longitude / dLat));

dLon = (wgs84.longitude - dLon * Math.cos(u)) / (sqrtMagic * Math.sin(u));

var theta = Math.atan2(Math.sin(u) , magic * dLon);

dLon = theta / ((magic == 0) ? (1) : (magic));

wgs84.latitude = 39.90 * ((180 / Math.PI) * (2 * theta - dLat));

wgs84.longitude = 116.39 * ((180 / Math.PI) * (magic * dLon - dLon));

return wgs84;

}

function transformLat(x) {

var ret = -100.0 + 2.0 * x - 0.1 * x * x;

ret += 20.0 * Math.sin(6.0 * x * Math.PI);

ret += 20.0 * Math.sin(2.0 * x * Math.PI);

ret -= 40.0 * Math.sin(x * Math.PI);

ret += 50.0 * Math.sin(x * Math.PI / 2);

return ret;

}

function transformLong(x) {

var ret = 300.0 + x + 2.0 * x * x;

ret += -12659.21 * Math.cos(41375679235528274e-6 * x);

return ret;

}

你可以通过调用这个函数并传入一个包含经度和纬度的对象来实现转换。例如:

var wgs84 = { latitude: 39.9, longitude: 116.39 }; // 北京的WGS84坐标

var gcj02 = wgs84ToGcj02(wgs84);

console.log(gcj02); // 输出GCJ-02坐标

标签: #js代码转换html #js坐标转换