// 定义一些常量
const x_PI = (3.14159265358979324 * 3000.0) / 180.0
const PI = 3.1415926535897932384626
const a = 6378245.0
const ee = 0.00669342162296594323/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换 / 即百度转谷歌、高德* @param { Number } bd_lon* @param { Number } bd_lat*/
export function bd09togcj02 (bd_lon, bd_lat) {var x_pi = (3.14159265358979324 * 3000.0) / 180.0var x = bd_lon - 0.0065var y = bd_lat - 0.006var 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 { Number } lng* @param { Number } lat*/
export 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.0065var bd_lat = z * Math.sin(theta) + 0.006return [bd_lng, bd_lat]
}/*** WGS84坐标系转火星坐标系GCj02 / 即WGS84 转谷歌、高德* @param { Number } lng* @param { Number } lat*/
export function wgs84togcj02 (lng, lat) {if (outOfChina(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) * PIvar magic = Math.sin(radlat)magic = 1 - ee * magic * magicvar sqrtmagic = Math.sqrt(magic)dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI)dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI)const mglat = lat + dlatconst mglng = lng + dlngreturn [mglng, mglat]}
}/*** GCJ02(火星坐标系) 转换为 WGS84 / 即谷歌高德转WGS84* @param { Number } lng* @param { Number } lat*/
export function gcj02towgs84 (lng, lat) {if (outOfChina(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) * PIvar magic = Math.sin(radlat)magic = 1 - ee * magic * magicvar sqrtmagic = Math.sqrt(magic)dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI)dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI)const mglat = lat + dlatconst mglng = lng + dlngreturn [lng * 2 - mglng, lat * 2 - mglat]}
}/*** 百度坐标系转wgs84坐标系* @param {*} lng* @param {*} lat*/
export function bd09towgs84 (lng, lat) {// 百度坐标系先转为火星坐标系const gcj02 = bd09togcj02(lng, lat)// 火星坐标系转wgs84坐标系const result = gcj02towgs84(gcj02[0], gcj02[1])return result
}/*** wgs84坐标系转百度坐标系* @param {*} lng* @param {*} lat*/
export function wgs84tobd09 (lng, lat) {// wgs84先转为火星坐标系const gcj02 = wgs84togcj02(lng, lat)// 火星坐标系转百度坐标系const result = gcj02tobd09(gcj02[0], gcj02[1])return result
}/*** 经度转换* @param { Number } lng* @param { Number } lat*/
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.0ret +=((20.0 * Math.sin(lat * PI) + 40.0 * Math.sin((lat / 3.0) * PI)) * 2.0) /3.0ret +=((160.0 * Math.sin((lat / 12.0) * PI) + 320 * Math.sin((lat * PI) / 30.0)) *2.0) /3.0return ret
}/*** 纬度转换* @param { Number } lng* @param { Number } lat*/
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.0ret +=((20.0 * Math.sin(lng * PI) + 40.0 * Math.sin((lng / 3.0) * PI)) * 2.0) /3.0ret +=((150.0 * Math.sin((lng / 12.0) * PI) +300.0 * Math.sin((lng / 30.0) * PI)) *2.0) /3.0return ret
}/*** 判断是否在国内,不在国内则不做偏移* @param {*} lng* @param {*} lat*/
function outOfChina (lng, lat) {return (lng < 72.004 || lng > 137.8347 || lat < 0.8293 || lat > 55.8271 || false)
}

WGS84坐标 火星坐标 BD09坐标转换相关推荐

  1. php 经纬度坐标转换 WGS84、火星坐标 (GCJ-02)、百度坐标 (BD-09)

    项目有gps上报的功能, 由于前端插件问题导致大量gps定位数据转换百度坐标(BD-09)时产生极大偏移, 故需要后端做经纬度坐标转换, 看到一篇java的相关技术帖, 拿来做了修改 Ps: 坐标转换 ...

  2. java 经纬度坐标转换 WGS84、火星坐标 (GCJ-02)、百度坐标 (BD-09)

    会有偏移,但是还能接受 WGS84 国际标准,从 GPS 设备中取出的数据的坐标系 国际地图提供商使用的坐标系 火星坐标 (GCJ-02) 中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系 ...

  3. IOS 地球坐标-火星坐标-百度坐标 转换

    如果你正需要这样的工具,保证拿过去就能用 如果你还不知道这是什么工具,我保证以后的iOS开发中肯定会用 如果你是iOS大牛,期待您能指点一下 ^_^ 好了,废话不多说了.上干货 坐标系介绍 首先介绍一 ...

  4. [转]地球坐标 火星坐标 百度坐标 相互转换

    在开始这个题目之前,先给大家再次扫扫盲,扫的不是坐标系统的盲,而是我们国家所使用的坐标系统.大家都知道,美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际 ...

  5. 地球坐标 火星坐标 百度坐标 相互转换

    在开始这个题目之前,先给大家再次扫扫盲,扫的不是坐标系统的盲,而是我们国家所使用的坐标系统.大家都知道,美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际 ...

  6. WGS84,GCJ02, BD09坐标转换

    来源:http://www.cnblogs.com/94cool/p/4266907.html public class Gps {private double wgLat;private doubl ...

  7. 百度坐标 火星坐标 相互转换

    private static final double X_PI = 3.14159265358979324 * 3000.0 / 180.0; private static final double ...

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

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

  9. B站/博客园/CSDN/知乎:@秋意正寒 地球坐标系(WGS84),火星坐标系(GCJ02), 百度坐标系(BD09)坐标转换

    https://blog.csdn.net/skh2015java/article/details/68486756 聊聊GIS中那些坐标系 转载请声明到标题. B站/博客园/CSDN/知乎:@秋意正 ...

最新文章

  1. python编程单词排序_python 统计单词个数,并按个数与字母排序
  2. Symantec防病毒企业版10.1部署方法一
  3. React 性能优化之批量处理 unstable_batchedUpdates
  4. 关于ECMAScript6 的学习01-ES6 的六种变量声明方式===关于常量const
  5. bzoj4602 [Sdoi2016]齿轮 边权并查集
  6. 【英语学习】【English L06】U06 Banking L4 I'd like to transfer some money
  7. Shell循环输入符合条件为止
  8. 计算机技术在音乐专业中的应用与探索,计算机技术在音乐教学中的应用与研究...
  9. HTML 网页自动刷新
  10. Golang获取时间戳并增加一天
  11. 【软件工程导论】习题集
  12. Unity 创建Sprite导致的内存溢出奔溃问题
  13. 文件已经删除,但是空间没有释放的异常
  14. 【NLP】第1章 什么是Transformers?
  15. Nordic Thingy:52 Android App 源码及APK
  16. Vue SPA工作原理
  17. 手把手教你从零跑一个Skynet
  18. 电子数据如何进行数据存证保全?
  19. 英文SEO采集伪原创软件Kontent Machine注册使用实战教程!
  20. POJ 1087 A Plug for UNIX 会议室插座问题 构图+最大流

热门文章

  1. python两种方法读取、修改文件的创建时间、修改时间、访问时间
  2. Winform最基础的DBHelper类
  3. maven打jar包,并将依赖jar打入外部lib文件中
  4. 怎样测试你前世是男是女的软件,缘分测试:测你与TA前世的关系是什么
  5. 2015 Xcode7 真机调试(开发者)以及P12配置
  6. SonarQube 9.x集成阿里p3c代码规范检测java代码;
  7. SQL Server设置周一为每周第一天
  8. iOS CI自动化构建:FastLane+企业重签+上传fir+jenkins
  9. 锐浪(Grid++Report)报表脚本通过某些字段隐藏控件
  10. python刷今日头条阅读量_用python3.5逛看今日头条