本文实例讲述了js中火星坐标,百度坐标,WGS84坐标转换实现方法。分享给大家供大家参考,具体如下:
//定义一些常量 var x_PI=3.14159265358979324 * 3000.0/180.0; varπ=3.1415926535897932384626; var=6378245.0; var ee=0.00669342162296594323;/* * *百度坐标系(BD-09)与火星坐标系(GCJ-02)的转换 *即百度转谷歌,高德 */函数bd09togcj02 (bd_lon bd_lat) { var x_pi=3.14159265358979324 * 3000.0/180.0; var x=bd_lon - 0.0065; var y=bd_lat - 0.006; var z=数学。√x * x + y * y - 0.00002 *数学。罪(y * x_pi); varθ=数学。量化(y、x) - 0.000003 *数学。cos (x * x_pi); var gg_lng=z * Math.cos(θ); var gg_lat=z * sin(θ); 返回(gg_lng, gg_lat) }/* * *火星坐标系(GCJ-02)与百度坐标系(BD-09)的转换 *即谷歌,高德转百度 */函数gcj02tobd09(液化天然气,lat) { var z=数学。sqrt(液化天然气液化天然气* + lat * lat) + 0.00002 *数学。罪(lat * x_PI); varθ=数学。量化(lat,液化天然气)+ 0.000003 *数学。* x_PI cos(液化天然气); var bd_lng=z * Math.cos(θ)+ 0.0065; var bd_lat=z * sin(θ)+ 0.006; 返回(bd_lng, bd_lat) }/* * * WGS84转GCj02 */函数wgs84togcj02(液化天然气,lat) { 如果(out_of_china(液化天然气,lat)) { 返回(液化天然气,lat) } 其他{ var dlat=transformlat(液化天然气- 105.0,lat - 35.0); var dlng=transformlng(液化天然气- 105.0,lat - 35.0); var radlat=lat/180.0 *π; 魔法var=sin (radlat); 神奇=1 - ee * *魔法; var sqrtmagic=Math.sqrt(魔法); dlat=(dlat * 180.0)/((* (1 - ee))/(魔法* sqrtmagic) *π); dlng=(dlng * 180.0)/(/sqrtmagic * Math.cos (radlat) * PI); var mglat=lat + dlat; var mglng=液化天然气+ dlng; 返回(mglng, mglat) } }/* * * GCJ02转换为WGS84 */函数gcj02towgs84(液化天然气,lat) { 如果(out_of_china(液化天然气,lat)) { 返回(液化天然气,lat) } 其他{ var dlat=transformlat(液化天然气- 105.0,lat - 35.0); var dlng=transformlng(液化天然气- 105.0,lat - 35.0); var radlat=lat/180.0 *π; 魔法var=sin (radlat); 神奇=1 - ee * *魔法; var sqrtmagic=Math.sqrt(魔法); dlat=(dlat * 180.0)/((* (1 - ee))/(魔法* sqrtmagic) *π); dlng=(dlng * 180.0)/(/sqrtmagic * Math.cos (radlat) * PI); mglat=lat + dlat; mglng=液化天然气+ dlng; 返回(液化天然气* 2 - mglng, lat * 2 - mglat] } } 函数transformlat(液化天然气,lat) { var ret=-100.0 + 2.0 *液化天然气+ 3.0 * lat + 0.2 * lat * lat + 0.1 *液化天然气* lat + 0.2 * Math.sqrt (Math.abs (lng)); ret +=(20.0 * sin(6.0 *液化天然气*π)+ 20.0 * sin(2.0 *液化天然气*π))* 2.0/3.0; ret +=(20.0 *数学。罪(lat *π)+ 40.0 *数学。罪(lat/3.0 *π))* 2.0/3.0; ret +=(160.0 *数学。罪(lat/12.0 * PI) + 320 *数学。罪(lat *π/30.0))* 2.0/3.0; 返回受潮湿腐烂 } 函数transformlng(液化天然气,lat) { var ret=300.0 +液化天然气液化天然气+ 2.0 * lat + 0.1 * *液化天然气液化天然气+ 0.1 * * lat + 0.1 * Math.sqrt (Math.abs (lng)); ret +=(20.0 * sin(6.0 *液化天然气*π)+ 20.0 * sin(2.0 *液化天然气*π))* 2.0/3.0; ret +=(20.0 *数学。罪(液化天然气*π)+ 40.0 *数学。罪(液化天然气/3.0 *π))* 2.0/3.0; ret +=(150.0 *数学。罪(液化天然气/12.0 *π)+ 300.0 *数学。罪(液化天然气/30.0 *π))* 2.0/3.0; 返回受潮湿腐烂 }/* * *判断是否在国内,不在国内则不做偏移 */函数out_of_china(液化天然气,lat) { 返回(液化天然气& lt;72.004 | |液化天然气比;137.8347)| | (lat & lt;0.8293 | | lat祝辞55.8271)| |假); } >之前更多关于JavaScript相关内容还可查看本站专题:《JavaScript数学运算用法总结》,《JavaScript数据结构与算法技巧总结》,《JavaScript数组操作技巧总结》及《JavaScript字符与字符串操作技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
js中火星坐标,百度坐标,WGS84坐标转换实现方法示例