//定义一些常量

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)的转换 * 即 百度 转 谷歌、高德 *

*

* @param bd_lon *

* @param bd_lat *

* @returns {*[]}

*/

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) 的转换 即谷歌、高德 转 百度

*

* @param lng

* @param lat

* @returns {*[]}

*/

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

*

* @param lng

* @param lat

* @returns {*[]}

*/

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

*

* @param lng

* @param lat

* @returns {*[]}

*/

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

}

/**

* 判断是否在国内,不在国内则不做偏移

*

* @param lng

* @param lat

* @returns {boolean}

*/

function out_of_china(lng, lat) {

return (lng < 72.004 || lng > 137.8347)

|| ((lat < 0.8293 || lat > 55.8271) || false);

}

//使用示例

//标准gps坐标转火星坐标

var lng_lat_1 = wgs84togcj02(113.912743,22.497629);

//alert('火星坐标:'+lng_lat_1);

java 火星坐标转wgs84_火星坐标系与WGS84坐标系转换相关推荐

  1. 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的相互转换

    /*** Created by Wandergis on 2015/7/8.* 提供了百度坐标(BD09).国测局坐标(火星坐标,GCJ02).和WGS84坐标系之间的转换*///定义一些常量 var ...

  2. 前端javascript百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换

    /*** * 提供了百度坐标(BD09).国测局坐标(火星坐标,GCJ02).和WGS84坐标系之间的转换*/ // UMD魔法代码 // if the module has no dependenc ...

  3. gps84转换gcj02公式_百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换...

    //定义一些常量 var x_PI = 3.14159265358979324 * 3000.0 / 180.0; var PI = 3.1415926535897932384626; var a = ...

  4. 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系互转

    为什么写这个模块 随着移动互联网的兴起,几乎每一个app都会去收集用户位置,如果恰好你在处理与地理定位相关的代码,并且不了解地理坐标系的话,肯定要被我大天朝各种坐标系搞晕.写这个模块的目的也是因为项目 ...

  5. GCJ-02火星坐标系、BD-09百度坐标系和WGS-84坐标系转换

    WGS-84:GPS坐标系 GCJ-02:火星坐标系,国测局02年发布的坐标体系,高德,腾讯等使用. BD-09:百度坐标系 GCJ-02火星坐标系和WGS-84坐标系转换关系 var pi = 3. ...

  6. 基于Postgresql和PostGIS实现火星坐标系、百度坐标系、WGS84坐标系、CGCS2000坐标系互转

    背景 最近有一个需求,需要将WGS84转成火星坐标系.个人觉得在代码中逐个点坐标进行转换,太麻烦,而且效率低.PostGIS的st_transform虽然可以进行坐标转换,但是不支持国内这些坐标系.最 ...

  7. CGCS2000坐标系和WGS84坐标系的区别与联系

    01 概述 由于历史原因,业内普遍对WGS84坐标系存在一定程度的误解,诸多文献对WGS84坐标系的解释也比较含糊,给测绘.导航.遥感.地信等工作带来一定困扰.本文重点对CGCS2000坐标系与WGS ...

  8. 【WebGIS】JavaScript地理坐标的转换:GCJ-02火星坐标系和WGS-84坐标系转换关系

    目录 说明 JS代码 演示 说明 最近需要将Web端openlayer画出的点面的地理信息放到微信小程序的Map上展示,使用微信小程序的腾讯地图功能,发现使用了GCJ-02火星坐标系,与我Web端使用 ...

  9. 关于J2000.0坐标系与WGS84坐标系的理解

    目录 一.基础知识 1.1 岁差 1.2 章动 1.3 极移 1.4 基础知识小结 二.坐标系 2.1 J2000.0坐标系 2.2 WGS84坐标系 一.基础知识 在理解坐标系之前需要对地球岁差(进 ...

  10. 百度坐标系与WGS84坐标系互转

    *百度坐标系(BD09)与火星坐标系(GCJ-02)的转换*即 百度 转 高德 .谷歌*/var bd09togcj02 =function bd09togcj02(bd_lon,bd_lat){va ...

最新文章

  1. yii2.0使用ueditior完成上传单张,多张图片,上传视频等操作
  2. 贴一段数组动态扩容的代码
  3. java导出csv文件使用Excel打开乱码问题
  4. Linux驱动学习笔记之并发控制
  5. 创建一个dynamics CRM workflow (二) - Build in Workflows
  6. MediatR 知多少
  7. 这五部关于宇宙的神级纪录片,带你探索未知的外太空世界
  8. 拓端tecdat|python图工具中基于随机块模型动态网络社团检测网络图
  9. 行政边界矢量地图—县级
  10. 基于稀疏表示的图像超分辨
  11. 有趣有用的PCA——PCA压缩图片
  12. ubuntu如何安装rpm
  13. 台式计算机diy,DIY组装台式电脑经验分享学习篇
  14. 32位系统和64位区别
  15. 美联航客机门被冻坏无法起飞 乘客困机上约16小时
  16. linux无法运行sssverify,Synopsys Design Compiler在fedora Core 9下面的安装
  17. html5如何快速选择工具,PS快速选择工具怎么使用?快捷键是什么?
  18. 推荐十款推荐十款超赞的Googleamp;nbs…
  19. Day2作业:购物商城
  20. 学java能打开大脑思维_脑科学:一句“去你的吧”,就可以判断出你是左脑型思维还是右脑型思维!...

热门文章

  1. 关于window10系统找不到Realtek高清晰音频管理器解决方法
  2. 印象笔记 网易云笔记 腾讯文档 对比
  3. 微信公众号调用扫一扫
  4. FL Studio20.9.1新版新功能介绍详解
  5. 毕业论文中计算机代码重复吗,知网查重程序代码算重复吗?
  6. vue打包后hbuilder和cordova模拟器运行一片空白
  7. USTC高级软件工程课程学习心得
  8. iOS模拟器录屏视频
  9. 小米便签类间关系图绘制方法
  10. 我的海淀驾校考驾照之路