三种坐标系经纬度转化小工具
- 国际定位标准: WGS84 公用转化的坐标系,一般保存在后端数据库
- 火星坐标系: GCJ-02 国测局标准,中国使用,在国际定位标准上加密生成的. 高德地图,腾讯地图以及谷歌中国区地图使用该坐标系
- 百度坐标系: BD-09 百度坐标系,在火星坐标系上再次加密生成的. 百度地图使用该坐标系
同一个地点在不同坐标系的经纬度是不一样的,所以需要转化坐标系
wgs84 ---》 gcj02 ---》 bd09 三种坐标系只能一层一层转化,百度和国际要通过火星坐标系转化
小工具代码如下(html文件):
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>经纬度转换</title><!-- 引入vue --><script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script><!-- 引入样式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"><!-- 引入组件库 --><script src="https://unpkg.com/element-ui/lib/index.js"></script><style>.el-button{margin: 5px !important;}.el-form-item{margin-bottom: 8px;}</style>
</head><body>
<div id="main"><el-form ref="form" :model="form" label-width="88px"><el-form-item label="转换前经度"><el-input type="number" v-model="form.lng"></el-input></el-form-item><el-form-item label="转换前纬度"><el-input type="number" v-model="form.lat"></el-input></el-form-item><el-form-item><el-button type="primary" size="small" @click="change(1)">百度转高德</el-button><el-button type="primary" size="small" @click="change(2)">高德转百度</el-button><el-button type="primary" size="small" @click="change(3)">高德转国际</el-button><el-button type="primary" size="small" @click="change(4)">国际转高德</el-button><el-button type="primary" size="small" @click="change(5)">百度转国际</el-button><el-button type="primary" size="small" @click="change(6)">国际转百度</el-button></el-form-item><el-form-item label="转换后经度"><el-input type="number" v-model="form.rlng"></el-input></el-form-item><el-form-item label="转换后纬度"><el-input type="number" v-model="form.rlat"></el-input></el-form-item></el-form><div class="tips"><br /><br />国际定位标准: WGS84 公用转化的坐标系,一般保存在后端数据库<br /><br />火星坐标系: GCJ-02 国测局标准,中国使用,在国际定位标准上加密生成的. 高德地图,腾讯地图以及谷歌中国区地图使用该坐标系<br /><br />百度坐标系: BD-09 百度坐标系,在火星坐标系上再次加密生成的. 百度地图使用该坐标系</div>
</div>
</body>
<script>/*** 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 {*[]}*/var bd09togcj02 = 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 {*[]}*/var gcj02tobd09 = 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 {*[]}*/var wgs84togcj02 = 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 {*[]}*/var gcj02towgs84 = 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);var mglat = lat + dlat;var mglng = lng + dlng;return [lng * 2 - mglng, lat * 2 - mglat]}};var transformlat = 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};var transformlng = 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}*/var out_of_china = function out_of_china(lng, lat) {return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false);};var vm = new Vue({el: "#main",data() {return{form:{lng:'',lat:'',rlng:'',rlat:'',}}},methods: {change(t){let form=this.formif(t==1){let arr=bd09togcj02(form.lng*1,form.lat*1)form.rlng=arr[0]form.rlat=arr[1]}else if(t==2){let arr=gcj02tobd09(form.lng*1,form.lat*1)form.rlng=arr[0]form.rlat=arr[1]}else if(t==3){let arr=gcj02towgs84(form.lng*1,form.lat*1)form.rlng=arr[0]form.rlat=arr[1]}else if(t==4){let arr=wgs84togcj02(form.lng*1,form.lat*1)form.rlng=arr[0]form.rlat=arr[1]}else if(t==5){let ary=bd09togcj02(form.lng*1,form.lat*1)let arr=gcj02towgs84(ary[0]*1,ary[1]*1)form.rlng=arr[0]form.rlat=arr[1]}else if(t==6){let ary=wgs84togcj02(form.lng*1,form.lat*1)let arr=gcj02tobd09(ary[0]*1,ary[1]*1)form.rlng=arr[0]form.rlat=arr[1]}},}})
</script></html>
三种坐标系经纬度转化小工具相关推荐
- 三种web性能压力测试工具
三种web性能压力测试工具http_load webbench ab小结 题记:压力和性能测试工具很多,下文讨论的是我觉得比较容易上手,用的比较多的三种 http_load 下载地址:http://w ...
- 三种web性能压力测试工具http_load webbench apache benc
题记:压力和性能测试工具很多,下文讨论的是我觉得比较容易上手,用的比较多的三种 http_load 下载地址:http://www.acme.com/software/http_load/http_l ...
- Spark不是唯一,三种新兴的开源数据分析工具
2019独角兽企业重金招聘Python工程师标准>>> 物联网带来了众多传感器及其他设备,它们在生成源源不断的数据流,而物联网只是推动市场需要新型分析工具的重大趋势之一.比如需要流数 ...
- 安装软件包的三种方法rpm包rpm工具yum工具
7.1 安装软件包的三种方法 rpm工具 rpm(Redhat Package Manager)RPM软件包管理器,是以一种数据库记录的方式来将我们所需要的套件安装到Linux主机的一套管理程序.rp ...
- 3.2 三种灵活的套索选择工具 [Ps教程]
原文:http://coolketang.com/staticPhotoshop/5a98d382ee920a7880871d8c.html 1. 本节课将使用三种套索选择工具,来优化图片中的玉石的色 ...
- C、C++、C# 三种汇编语言之间的小故事
转载原创作者[关于编程哪些事]:https://zhuanlan.zhihu.com/p/130360966 故事1:把大象装到冰箱里 ● C C语言是一个极其高冷的人,因此回答都是冷冷的: 我:你好 ...
- QTranslate 3.1.1:整合7种在线翻译的小工具
QTranslate 更新至3.1.1,此次更新和往常一样QTranslate在先前已经整合了6种在线翻译的情况下又增加了Babylon在线翻译服务,现在 QTranslate是一款一共整合了7种在线 ...
- Windows的三种坐标系:屏幕坐标系,非客户区坐标系,客户区坐标系
1. 屏幕坐标系:以屏幕的左上角为原点,如图所示 GetWindowRect() 函数获得的 RECT 就是以屏幕坐标系算的. 2. 非客户区坐标系(窗口坐标系) 包括标题栏的部分.GetWindow ...
- python中multiply函数_python中numpy库内multiply()、dot()和 * 三种乘法运算的区别小计...
首先,导入函数包: import numpy as np 1.np.multiply()函数: 数组:(点对点)对应位置元素相乘 矩阵:对应位置元素相乘 示例: A = np.array([[1,2] ...
- hibernate 的三种状态 如何转化的。
1. 临时状态 由 new命令开辟内存空间的java对象,例如: User user=new User(); 临 时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系. 2. ...
最新文章
- 如何实现一个可复用的分布式事务消息架构方案?
- JQuery 文本框高亮显示插件
- 小米手环4 NFC版将全渠道开售:垃圾分类超智能
- ~~求欧拉函数(附模板题)
- MongoDB 凉了?
- 32位存储字长存储double_1GB多大?1GB与1MB的关系?详细数据存储单位转换来了...
- [OpenJDK]native.java.lang.UNIXProcess_md.c
- 视频教程-思科CCNP专题系列②:EIGRP路由协议-思科认证
- 离线强化学习(Offline RL)系列3: (算法篇) TD3+BC 算法详解与实现(经验篇)
- 普歌-码上鸿鹄团队:在Nuxt(vue)渲染模板中使用mock.js随机生成数据
- excel表格怎么换行?单元格内换行的4个方法
- python pyd_python pyd 加密相关
- Unity Json存档读档操作
- 一台计算机有两个用户怎样共享,两台计算机如何共享一台打印机?
- Css3实现背景毛玻璃效果
- python读书心得体会范文_读书心得体会范文(通用3篇)
- python编程大数据_学习Python编程挨着大数据什么事
- 2天3夜开发了一个微信小程序,用它挣了10.7万
- 入侵oracle数据库时常用的操作命令整理
- Python爬虫实战: 爬取网易云歌单