js不同地图坐标系经纬度转换(天地图,高德地图,百度地图,腾讯地图)
1.js转换代码
1 //转换常数
2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
3 var pi = 3.14159265358979324;
4 var a = 6378245.0;
5 var ee = 0.00669342162296594323;
6
7 function transformLon(x, y) {
8 var ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
9 ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
10 ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
11 ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
12 return ret;
13 };
14
15 function transformLat(x, y) {
16 var ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
17 ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
18 ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
19 ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
20 return ret;
21 }
22
23 function outOfChina(lat, lon) {
24 if (lon < 72.004 || lon > 137.8347)
25 return true;
26 if (lat < 0.8293 || lat > 55.8271)
27 return true;
28 return false;
29 }
30
31 /*
32 * WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块、天地图)
33 * GCJ-02:中国坐标偏移标准,Google Map、高德、腾讯使用
34 * BD-09:百度坐标偏移标准,Baidu Map使用
35 */
36
37 /**
38 * wgLat 纬度
39 * wgLon 经度
40 * WGS-84 到 GCJ-02 的转换(即 GPS 加偏)
41 * */
42 function wgs_gcj_encrypts(wgLat, wgLon) {
43 var point={};
44 if (outOfChina(wgLat, wgLon)) {
45 point.lat=wgLat;
46 point.lng=wgLon;
47 return point;
48 }
49 var dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
50 var dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
51 var radLat = wgLat / 180.0 * pi;
52 var magic = Math.sin(radLat);
53 magic = 1 - ee * magic * magic;
54 var sqrtMagic = Math.sqrt(magic);
55 dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
56 dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
57 var lat = wgLat + dLat;
58 var lon = wgLon + dLon;
59 point.lat=lat;
60 point.lon=lon;
61 return point;
62 };
63
64
65 /**
66 * wgLat 纬度
67 * wgLon 经度
68 * BD-09转换GCJ-02
69 * 百度转google
70 * */
71 function bd_google_encrypt(bd_lat, bd_lon){
72 var point={};
73 var x = bd_lon - 0.0065;
74 var y = bd_lat - 0.006;
75 var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
76 var theta =Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
77 var gg_lon = z * Math.cos(theta);
78 var gg_lat = z * Math.sin(theta);
79 point.lat=gg_lat;
80 point.lon=gg_lon;
81 return point;
82 };
83
84
85 /**
86 * gg_lat 纬度
87 * gg_lon 经度
88 * GCJ-02转换BD-09
89 * Google地图经纬度转百度地图经纬度
90 * */
91 function google_bd_encrypt(gg_lat, gg_lon){
92 var point={};
93 var x = gg_lon;
94 var y = gg_lat;
95 var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
96 var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
97 var bd_lon = z * Math.cos(theta) + 0.0065;
98 var bd_lat = z * Math.sin(theta) + 0.006;
99 point.lat=bd_lat;
100 point.lon=bd_lon;
101 return point;
102 };
2.实例
1 //从服务器获取的(硬件/谷歌)的经纬度
2 lngMy = Number(dataLocker.gps.lng);
3 latMy = Number(dataLocker.gps.lat);
4
5 //调用上面代码中的wgs_gcj_encrypts方法转成高德的经纬度
6 var point = wgs_gcj_encrypts(latMy,lngMy);
7
8 //刷新展示的手机端的高德地图上
9 latMy = point.lat.toFixed(6);
10 lngMy = point.lon.toFixed(6);
11 reLocate();
第二种:
转换插件:https://github.com/CntChen/tile-lnglat-transform
转载至: https://blog.csdn.net/baidu_40537062/article/details/102611713
js不同地图坐标系经纬度转换(天地图,高德地图,百度地图,腾讯地图)的更多相关文章
- JAVA 对接腾讯地图,经纬度转换
package com.lvjing.util; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.spr ...
- 高德地图根据经纬度转换成地址JS代码demo
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- C#实现地图坐标系的转换(WGS-84、GCJ-02、BD-09)
WGS-84坐标系:全球定位系统使用,GPS.北斗等 GCJ-02坐标系:中国地区使用,由WGS-84偏移而来 BD-09坐标系:百度专用,由GCJ-02偏移而来 (PS:源于项目需求,本来是想读图 ...
- GPS各种地图坐标系转换(转载)
http://my.oschina.net/fankun2013/blog/338100 地图供应商比较多,产生了许多地图坐标.地图坐标正确转换是个问题.在之前开发地图应用的时候发现从WGS84坐标系 ...
- gps各种地图坐标系转换
原文地址:https://my.oschina.net/fankun2013/blog/338100 地图供应商比较多,产生了许多地图坐标.地图坐标正确转换是个问题.在之前开发地图应用的时候发现从WG ...
- 百度地图api经纬度气死我了!
百度地图api经纬度气死我了! 百度地图官网api中例子的经纬度.我测试了2天才好用.一直是不能用.坑死我了.原来是获取的经纬度.和实际调用的经纬度尽然是反的.调转过来就好用了.气死我了.弄了两天 ...
- 微信小程序--百度地图坐标转换成腾讯地图坐标
最近开发小程序时出现一个问题,后台程序坐标采用的时百度地图的坐标,因为小程序地图时采用的腾讯地图的坐标系,两种坐标有一定的误差,导致位置信息显示不正确.现在需要一个可以转换两种坐标的方法,经过查询发现 ...
- php 腾讯地图和百度地图的相互转换
关于百度和腾讯地图坐标转换的问题,网上大多给的是JS实现的,而JS又是异步实现的,无法返回值,在有些应用场景下不好使用,这里我从腾讯论坛上找到了一个PHP转换的方法,贴出来分享给大家.经测试十分有效! ...
- uniapp H5引入腾讯地图
在网上搜索了许多关于uniapp引入腾讯地图的方法都以失败告终,我开发的应用主要使用于H5,小程序与H5是不同的sdk,就不在这说了,况且小程序有手把手教学,可参考腾讯地图官网https://lbs. ...
随机推荐
- Python 列表解析式竟然支持异步?
PEP原文:https://www.python.org/dev/peps/pep-0530 PEP标题:PEP 530 -- Asynchronous Comprehensions PEP作者:Yu ...
- js绕过-前端加密绕过
前端加密解密 目录 前端加密解密 前言 前端加密定位方法 加密绕过实例 其他情况 前言 日常我们在工作时做安全测试或者日常的漏洞挖掘中,往往会遇到请求加密,参数加密的情况,而且绝大部分都是前端加密的情 ...
- python 将Mnist数据集转为jpg,并按比例/标签拆分为多个子数据集
现有条件:Mnist数据集,下载地址:跳转 下载后的四个.gz文件解压后放到同一个文件夹下,如:/raw Step 1:将Mnist数据集转为jpg图片(代码来自这篇博客) 1 import os 2 ...
- rancher恢复kubecfg配置文件
docker run安装的单容器Rancher Server # 进入容器 docker exec -ti <容器ID> bash # 集群ID,可通过浏览器地址栏查询 cluster_i ...
- Linux线程简单介绍
1.进程与线程 2.使用线程的理由 3.有关线程操作的函数 4.线程之间的互斥 5.线程之间的同步 6.试题最终代码 1.进程与线程 进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构 ...
- 基于SpringBoot的药店管理系统java药房管理系统(源码+数据库文件+文档)
注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架:SpringBoot 前端技术:HTML+CSS+JavaScript+Bootstrap+jQue ...
- XML外部实体注入 安鸾 Writeup
XML外部实体注入01 XML外部实体注入,简称XXE 网站URL:http://www.whalwl.host:8016/ 提示:flag文件在服务器根目录下,文件名为flag XML用于标记电子文 ...
- 大数的快速幂模 Python实现
要求 实现模幂算法,通过服务器的检验. 访问http://2**.207.12.156:9012/step_04服务器会给你10个问题,每个问题包含三个数(a,b,c),请给出a^b%c的值.返回值写 ...
- Kerberos认证流程简述
摸鱼了很长一段时间,被大佬按在地上摩擦,一时间精神恍惚想不起来写点啥,正好回来碰巧给别人讲kerberos协议认证流程,结果讲来讲去把自己讲晕了,就非常尴尬 于是有了这篇文章(友情提示:无事莫装X,装 ...
- 如何快速排查发现redis的bigkey?4种方案一次性给到你!
本篇文章将以redis的bigkey为主题进行技术展开,通过从认识redis的高性能,bigkey的危害.存在原因.4种解决方案,到模拟实战演练的介绍方式,来跟大家一起认识.探讨和学习redis. 先 ...