js中火星坐标、百度坐标、WGS84坐标转换实现方法
网络编程 2021-07-04 15:02www.168986.cn编程入门
这篇文章主要介绍了js中火星坐标、百度坐标、WGS84坐标转换实现方法,涉及JavaScript数值计算相关操作技巧,需要的朋友可以参考下
本文实例讲述了js中火星坐标、百度坐标、WGS84坐标转换实现方法。分享给大家供大家参考,具体如下
//定义一些常量 var x_PI = 3.14159265358979324 3000.0 / 180.0; var PI = 3.1415926535897932384626; var a = 6378245.0; var ee = 0.00669342162296594323; / 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换 即 百度 转 谷歌、高德 / function 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 = Math.sqrt(x x + y y) - 0.00002 Math.sin(y x_pi); var theta = Math.atan2(y, x) - 0.000003 Math.cos(x x_pi); var gg_lng = z Math.cos(theta); var gg_lat = z Math.sin(theta); return [gg_lng, gg_lat] } / 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换 即谷歌、高德 转 百度 / function gcj02tobd09(lng, lat) { var z = Math.sqrt(lng lng + lat lat) + 0.00002 Math.sin(lat x_PI); var theta = Math.atan2(lat, lng) + 0.000003 Math.cos(lng x_PI); var bd_lng = z Math.cos(theta) + 0.0065; var bd_lat = z Math.sin(theta) + 0.006; return [bd_lng, bd_lat] } / WGS84转GCj02 / function wgs84togcj02(lng, lat) { if (out_of_china(lng, lat)) { return [lng, lat] } else { var dlat = transformlat(lng - 105.0, lat - 35.0); var dlng = transformlng(lng - 105.0, lat - 35.0); var radlat = lat / 180.0 PI; var magic = Math.sin(radlat); magic = 1 - ee magic magic; var sqrtmagic = Math.sqrt(magic); dlat = (dlat 180.0) / ((a (1 - ee)) / (magic sqrtmagic) PI); dlng = (dlng 180.0) / (a / sqrtmagic Math.cos(radlat) PI); var mglat = lat + dlat; var mglng = lng + dlng; return [mglng, mglat] } } / GCJ02 转换为 WGS84 / function gcj02towgs84(lng, lat) { if (out_of_china(lng, lat)) { return [lng, lat] } else { var dlat = transformlat(lng - 105.0, lat - 35.0); var dlng = transformlng(lng - 105.0, lat - 35.0); var radlat = lat / 180.0 PI; var magic = Math.sin(radlat); magic = 1 - ee magic magic; var sqrtmagic = Math.sqrt(magic); dlat = (dlat 180.0) / ((a (1 - ee)) / (magic sqrtmagic) PI); dlng = (dlng 180.0) / (a / sqrtmagic Math.cos(radlat) PI); mglat = lat + dlat; mglng = lng + dlng; return [lng 2 - mglng, lat 2 - mglat] } } function transformlat(lng, lat) { var ret = -100.0 + 2.0 lng + 3.0 lat + 0.2 lat lat + 0.1 lng lat + 0.2 Math.sqrt(Math.abs(lng)); ret += (20.0 Math.sin(6.0 lng PI) + 20.0 Math.sin(2.0 lng PI)) 2.0 / 3.0; ret += (20.0 Math.sin(lat PI) + 40.0 Math.sin(lat / 3.0 PI)) 2.0 / 3.0; ret += (160.0 Math.sin(lat / 12.0 PI) + 320 Math.sin(lat PI / 30.0)) 2.0 / 3.0; return ret } function transformlng(lng, lat) { var ret = 300.0 + lng + 2.0 lat + 0.1 lng lng + 0.1 lng lat + 0.1 Math.sqrt(Math.abs(lng)); ret += (20.0 Math.sin(6.0 lng PI) + 20.0 Math.sin(2.0 lng PI)) 2.0 / 3.0; ret += (20.0 Math.sin(lng PI) + 40.0 Math.sin(lng / 3.0 PI)) 2.0 / 3.0; ret += (150.0 Math.sin(lng / 12.0 PI) + 300.0 Math.sin(lng / 30.0 PI)) 2.0 / 3.0; return ret } / 判断是否在国内,不在国内则不做偏移 / function out_of_china(lng, lat) { return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false); }
更多关于JavaScript相关内容还可查看本站专题《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
上一篇:原生js实现日历效果
下一篇:详解Vue中的Props与Data细微差别
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南