1.js转换代码

  1. 1 //转换常数
  2. 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
  3. 3 var pi = 3.14159265358979324;
  4. 4 var a = 6378245.0;
  5. 5 var ee = 0.00669342162296594323;
  6. 6
  7. 7 function transformLon(x, y) {
  8. 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. 9 ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
  10. 10 ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
  11. 11 ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
  12. 12 return ret;
  13. 13 };
  14. 14
  15. 15 function transformLat(x, y) {
  16. 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. 17 ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
  18. 18 ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
  19. 19 ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
  20. 20 return ret;
  21. 21 }
  22. 22
  23. 23 function outOfChina(lat, lon) {
  24. 24 if (lon < 72.004 || lon > 137.8347)
  25. 25 return true;
  26. 26 if (lat < 0.8293 || lat > 55.8271)
  27. 27 return true;
  28. 28 return false;
  29. 29 }
  30. 30
  31. 31 /*
  32. 32 * WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块、天地图)
  33. 33 * GCJ-02:中国坐标偏移标准,Google Map、高德、腾讯使用
  34. 34 * BD-09:百度坐标偏移标准,Baidu Map使用
  35. 35 */
  36. 36
  37. 37 /**
  38. 38 * wgLat 纬度
  39. 39 * wgLon 经度
  40. 40 * WGS-84 到 GCJ-02 的转换(即 GPS 加偏)
  41. 41 * */
  42. 42 function wgs_gcj_encrypts(wgLat, wgLon) {
  43. 43 var point={};
  44. 44 if (outOfChina(wgLat, wgLon)) {
  45. 45 point.lat=wgLat;
  46. 46 point.lng=wgLon;
  47. 47 return point;
  48. 48 }
  49. 49 var dLat = transformLat(wgLon - 105.0, wgLat - 35.0);
  50. 50 var dLon = transformLon(wgLon - 105.0, wgLat - 35.0);
  51. 51 var radLat = wgLat / 180.0 * pi;
  52. 52 var magic = Math.sin(radLat);
  53. 53 magic = 1 - ee * magic * magic;
  54. 54 var sqrtMagic = Math.sqrt(magic);
  55. 55 dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
  56. 56 dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
  57. 57 var lat = wgLat + dLat;
  58. 58 var lon = wgLon + dLon;
  59. 59 point.lat=lat;
  60. 60 point.lon=lon;
  61. 61 return point;
  62. 62 };
  63. 63
  64. 64
  65. 65 /**
  66. 66 * wgLat 纬度
  67. 67 * wgLon 经度
  68. 68 * BD-09转换GCJ-02
  69. 69 * 百度转google
  70. 70 * */
  71. 71 function bd_google_encrypt(bd_lat, bd_lon){
  72. 72 var point={};
  73. 73 var x = bd_lon - 0.0065;
  74. 74 var y = bd_lat - 0.006;
  75. 75 var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
  76. 76 var theta =Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
  77. 77 var gg_lon = z * Math.cos(theta);
  78. 78 var gg_lat = z * Math.sin(theta);
  79. 79 point.lat=gg_lat;
  80. 80 point.lon=gg_lon;
  81. 81 return point;
  82. 82 };
  83. 83
  84. 84
  85. 85 /**
  86. 86 * gg_lat 纬度
  87. 87 * gg_lon 经度
  88. 88 * GCJ-02转换BD-09
  89. 89 * Google地图经纬度转百度地图经纬度
  90. 90 * */
  91. 91 function google_bd_encrypt(gg_lat, gg_lon){
  92. 92 var point={};
  93. 93 var x = gg_lon;
  94. 94 var y = gg_lat;
  95. 95 var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
  96. 96 var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
  97. 97 var bd_lon = z * Math.cos(theta) + 0.0065;
  98. 98 var bd_lat = z * Math.sin(theta) + 0.006;
  99. 99 point.lat=bd_lat;
  100. 100 point.lon=bd_lon;
  101. 101 return point;
  102. 102 };

2.实例

  1. 1 //从服务器获取的(硬件/谷歌)的经纬度
  2. 2 lngMy = Number(dataLocker.gps.lng);
  3. 3 latMy = Number(dataLocker.gps.lat);
  4. 4
  5. 5 //调用上面代码中的wgs_gcj_encrypts方法转成高德的经纬度
  6. 6 var point = wgs_gcj_encrypts(latMy,lngMy);
  7. 7
  8. 8 //刷新展示的手机端的高德地图上
  9. 9 latMy = point.lat.toFixed(6);
  10. 10 lngMy = point.lon.toFixed(6);
  11. 11 reLocate();

第二种:

转换插件:https://github.com/CntChen/tile-lnglat-transform

转载至: https://blog.csdn.net/baidu_40537062/article/details/102611713

js不同地图坐标系经纬度转换(天地图,高德地图,百度地图,腾讯地图)的更多相关文章

  1. JAVA 对接腾讯地图,经纬度转换

    package com.lvjing.util; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.spr ...

  2. 高德地图根据经纬度转换成地址JS代码demo

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  3. C#实现地图坐标系的转换(WGS-84、GCJ-02、BD-09)

     WGS-84坐标系:全球定位系统使用,GPS.北斗等 GCJ-02坐标系:中国地区使用,由WGS-84偏移而来 BD-09坐标系:百度专用,由GCJ-02偏移而来 (PS:源于项目需求,本来是想读图 ...

  4. GPS各种地图坐标系转换(转载)

    http://my.oschina.net/fankun2013/blog/338100 地图供应商比较多,产生了许多地图坐标.地图坐标正确转换是个问题.在之前开发地图应用的时候发现从WGS84坐标系 ...

  5. gps各种地图坐标系转换

    原文地址:https://my.oschina.net/fankun2013/blog/338100 地图供应商比较多,产生了许多地图坐标.地图坐标正确转换是个问题.在之前开发地图应用的时候发现从WG ...

  6. 百度地图api经纬度气死我了!

      百度地图api经纬度气死我了! 百度地图官网api中例子的经纬度.我测试了2天才好用.一直是不能用.坑死我了.原来是获取的经纬度.和实际调用的经纬度尽然是反的.调转过来就好用了.气死我了.弄了两天 ...

  7. 微信小程序--百度地图坐标转换成腾讯地图坐标

    最近开发小程序时出现一个问题,后台程序坐标采用的时百度地图的坐标,因为小程序地图时采用的腾讯地图的坐标系,两种坐标有一定的误差,导致位置信息显示不正确.现在需要一个可以转换两种坐标的方法,经过查询发现 ...

  8. php 腾讯地图和百度地图的相互转换

    关于百度和腾讯地图坐标转换的问题,网上大多给的是JS实现的,而JS又是异步实现的,无法返回值,在有些应用场景下不好使用,这里我从腾讯论坛上找到了一个PHP转换的方法,贴出来分享给大家.经测试十分有效! ...

  9. uniapp H5引入腾讯地图

    在网上搜索了许多关于uniapp引入腾讯地图的方法都以失败告终,我开发的应用主要使用于H5,小程序与H5是不同的sdk,就不在这说了,况且小程序有手把手教学,可参考腾讯地图官网https://lbs. ...

随机推荐

  1. Java集合框架和数组的排序(转载)

    Java集合框架(*Collection)*和数组的排序 ​ 根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一个排序的方法,或者框架,但是有几个人能写得比JDK里的还 ...

  2. asp .net core中swagger的简单使用

    相信swagger大家不太陌生,简单来说就是把web api接口以ui的形式呈现到页面上,供方便调用和展示.这边文章就带大家初步简单使用swagger. (1)首先需要安装包:Swashbuckle. ...

  3. NodeJS 中的事件循环,读了这篇就全懂了

    事件循环是 NodeJS 处理非阻塞 I/O 操作的和核心机制.NodeJS 的事件循环脱胎于 libuv 的事件循环,因此,要搞清楚 NodeJS 的事件循环,还需要先了解 libuv 的事件循环是 ...

  4. 常见的嵌入式linux学习和如何选择ARM芯片问答

    常见的ARM嵌入式学习问答,设计者和学习者最关心的11个问题: 1.          ARM嵌入式是学习硬件好还是学习软件好? 2.          嵌入式软件和硬件,哪一种职位待遇更高?或者说, ...

  5. 北航面向对象OO第三单元——JML

    简介 本单元借助JML(Java Modeling Language),训练了我们关于的"规格(specification)"的意识和思想 本单元代码难度较低,简单来讲就是给你规定 ...

  6. selenium处理:您的连接不是私密连接的网站(https ssl 证书)

    当前我们遇到这样的问题,就要通过代码的层面去解决 requests的话verify参数设置为False selenium的话添加参数:--ignore-certificate-errors 测试代码: ...

  7. WPF 附件路由事件

    public class Person { public static readonly RoutedEvent NameChangedEvent = EventManager.RegisterRou ...

  8. WPF 中TextBox 增加输入检测,错误提示

    先来总结下实现错误提示功能的几个要点 1:binding 的ValidationRules 2 :Validation.ErrorTemplate 首先我们在界面添加一个TextBox, Text绑定 ...

  9. C# wpf中关于binding的converter无效的情况

    最近碰到bingding设置了convert转换无效的问题.困扰了我好久.这里记录分析一下. 先说下现象 我把TextBox的text属性  绑定到了对应的 convert.代码如下 希望吧pd_no ...

  10. vsftpd - FTP 服务器安装

    由于要将本地程序上传至云服务器中,所以需要给云服务器端安装ftp服务器.记录一下ftp的安装过程,以便以后使用.服务器端所用系统为Ubuntu16.04. 1. 安装ftp服务器, apt-get i ...