JS版本源码

/**
* Created by Wandergis on 2015/7/8.
* 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和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)的转换
* 即 百度 转 谷歌、高德
* @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);}

火星坐标、百度坐标、WGS84坐标转换代码(JS)的更多相关文章

  1. 火星坐标、百度坐标、WGS84坐标转换代码(JS、python版)

    火星坐标.百度坐标.WGS84坐标转换代码(JS.python版) 一.JS版本源码 github:https://github.com/wandergis/coordTransform /** * ...

  2. 地球坐标-火星坐标-百度坐标及之间的转换算法 C#

    美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置.但在我国,出于国家安全考虑,国内所有导航电子地图必须使 用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密 ...

  3. 火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版

    火星坐标 火星坐标是国家测绘局为了国家安全在原始坐标的基础上进行偏移得到的坐标,基本国内的电子地图.导航设备都是采用的这一坐标系或在这一坐标的基础上进行二次加密得到的.火星坐标的真实名称应该是GCJ- ...

  4. 【转】火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版

    原文地址:https://www.cnblogs.com/fwc1994/p/5884115.html 火星坐标 火星坐标是国家测绘局为了国家安全在原始坐标的基础上进行偏移得到的坐标,基本国内的电子地 ...

  5. 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换(JS版代码)

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

  6. WGS84、Web墨卡托、火星坐标、百度坐标互转

    转自:1.http://blog.csdn.net/wildboy2001/article/details/12031351 2.http://kongxz.com/2013/10/wgs-cgj/ ...

  7. WGS84、GCJ-02(火星坐标)、百度坐标,Web墨卡托坐标

    GCJ-02坐标系统(火星坐标)简介:http://blog.csdn.net/giswens/article/details/8775121(存档:http://mapbd.com/cms/2012 ...

  8. BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换

    BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换 http://www.cnphp6.com/archives/24822 by root ⋅ Leave a ...

  9. 简谈百度坐标反转至WGS84的三种思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图 ...

随机推荐

  1. XXL-Job分布式任务调度

    分布式情况下定时任务会出现哪些问题? 分布式集群的情况下,怎么保证定时任务不被重复执行 分布式定时任务解决方案 ①使用zookeeper实现分布式锁 缺点(需要创建临时节点.和事件通知不易于扩展) ② ...

  2. 【转载】树链剖分.By.Xminh

    轻重链剖分 其实就是俗称的树链剖分. PS:树链剖分不止有轻重链剖分.但是大多数时候的树链剖分指的就是轻重链剖分. dfs序 给树的节点重新编号,使得任意一个节点满足子树的dfs序都比它要大,而且它子 ...

  3. spark HelloWorld程序(scala版)

    使用本地模式,不需要安装spark,引入相关JAR包即可: <dependency> <groupId>org.apache.spark</groupId> < ...

  4. 比较运算符in/instanceof/typeof 逻辑表达式||/&&

    1.比较运算符in in运算符希望它的左侧操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象, 如果右侧的对象拥有一个名为左侧操作数值的属性名,那么表达式返回true, eg:var a ...

  5. QT QMimeData类

    http://blog.csdn.net/xie376450483/article/details/5863810 QMimeData类提为数据提供一个容器,用来记录关于MIME类型数据的信息 QMi ...

  6. FMX.TTabControl_多行

    1. 重载 TTabControl.RealignTabs; 2. 3.

  7. Intel微处理结构.docx

    1. 段寄存器 CS(代码段),代码段是一个存储器区域,这里保存微处理器使用的代码(程序和过程).代码段寄存器定义了存放代码的存储器段的起始地址.在实模式下工作时,它定义一个64KB存储器段的起始地址 ...

  8. androidstudio与unity进行交互

    参考地址:http://blog.csdn.net/yangxuan0261/article/details/52427119 http://www.360doc.com/content/17/032 ...

  9. 如何显示u盘的隐藏的文件

    方法/步骤   从U盘属性可以看出,U盘的大量空间被占用,U盘内有很多文件.   点击查看选项卡下的“选项”按钮 切换到中间的“查看”选项卡 取消勾选“隐藏受保护的操作系统文件” 在弹出的警告对话框, ...

  10. 去掉标题栏的方法(使用requestWindowFeature(Window.FEATURE_NO_TITLE);为什么失效?不仅失效,可能会挂)

    使用requestWindowFeature(Window.FEATURE_NO_TITLE)隐藏标题栏失效的原因,不仅失效,可能会挂.可能是activity继承的是AppCompatActivity ...