项目场景:

项目中使用gps上传经纬度,经纬度在用百度地图进行定位时,却发现行驶轨迹的路线定到海里面去了,发现gps使用的是WGS-84原始坐标系,而百度坐标系:bd-09,是在GCJ-02坐标系的基础上再次加密偏移后形成的坐标系,只适用于百度地图


解决方案:

这是js处理方案,另附Java版处理方案[https://blog.csdn.net/ardo_pass/article/details/86084134](https://blog.csdn.net/ardo_pass/article/details/86084134)

function Convertor() {this.stepCount = 100;this.pointCount = [];this.Result = [];this.NoisIndex = [];this.Time = new Date();this.M_PI = 3.14159265358979324;this.A = 6378245.0;this.EE = 0.00669342162296594323;this.X_PI = this.M_PI * 3000.0 / 180.0;
}Convertor.prototype.outofChine = function(p) {if (p.lng < 72.004 || p.lng > 137.8347) {return true;}if (p.lat < 0.8293 || p.lat > 55.8271) {return true;}return false;
};Convertor.prototype.WGS2GCJ_lat = function(x, y) {var ret1 = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));ret1 += (20.0 * Math.sin(6.0 * x * this.M_PI) + 20.0 * Math.sin(2.0 * x * this.M_PI)) * 2.0 / 3.0;ret1 += (20.0 * Math.sin(y * this.M_PI) + 40.0 * Math.sin(y / 3.0 * this.M_PI)) * 2.0 / 3.0;ret1 += (160.0 * Math.sin(y / 12.0 * this.M_PI) + 320 * Math.sin(y * this.M_PI / 30.0)) * 2.0 / 3.0;return ret1;
};Convertor.prototype.WGS2GCJ_lng = function(x, y) {var ret2 = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));ret2 += (20.0 * Math.sin(6.0 * x * this.M_PI) + 20.0 * Math.sin(2.0 * x * this.M_PI)) * 2.0 / 3.0;ret2 += (20.0 * Math.sin(x * this.M_PI) + 40.0 * Math.sin(x / 3.0 * this.M_PI)) * 2.0 / 3.0;ret2 += (150.0 * Math.sin(x / 12.0 * this.M_PI) + 300.0 * Math.sin(x / 30.0 * this.M_PI)) * 2.0 / 3.0;return ret2;
};Convertor.prototype.WGS2GCJ = function(poi) {if (this.outofChine(poi)) {return;}var gcjPoi = {};var dLat = this.WGS2GCJ_lat(poi.lng - 105.0, poi.lat - 35.0);var dLon = this.WGS2GCJ_lng(poi.lng - 105.0, poi.lat - 35.0);var radLat = poi.lat / 180.0 * this.M_PI;var magic = Math.sin(radLat);magic = 1 - this.EE * magic * magic;var sqrtMagic = Math.sqrt(magic);dLat = (dLat * 180.0) / ((this.A * (1 - this.EE)) / (magic * sqrtMagic) * this.M_PI);dLon = (dLon * 180.0) / (this.A / sqrtMagic * Math.cos(radLat) * this.M_PI);//Number转换是因为我在使用时出现NaN,发现是此步JS不计算,应该是传入类型问题gcjPoi .lat = Number(poi.lat) + Number(dLat) ;gcjPoi .lng = Number(poi.lng)  + Number(dLon) ;return gcjPoi ;
};Convertor.prototype.GCJ2BD09 = function(poi) {var bdo9Poi = {};var x = poi.lng, y = poi.lat;var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * this.X_PI);var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * this.X_PI);bdo9Poi .lng = z * Math.cos(theta) + 0.0065;bdo9Poi .lat = z * Math.sin(theta) + 0.006;return bdo9Poi ;
};
/**
* WGS->百度坐标系
*/
Convertor.prototype.WGS2BD09 = function(poi) {//WGS->GCJvar gcjPoi = this.WGS2GCJ(poi);if (typeof poi2 === "undefined") {return;}//GCJ->百度坐标系return this.GCJ2BD09(gcjPoi );
}

使用js对WGS-84 ,GCJ-02与BD-09的坐标进行转换相关推荐

  1. 【GIS - 地理信息系统】WGS 84 坐标系和 GCJ-02 坐标加密偏移 ( 大地坐标系 和 加密坐标系 | WGS 84 坐标体系简介 | GCJ-02 坐标加密偏移 )

    文章目录 一.WGS 84 坐标系和 GCJ-02 坐标加密偏移 1.大地坐标系 和 加密坐标系 大地坐标系 加密坐标系 2.WGS 84 坐标体系简介 坐标加密 WGS 84 由来 经度和纬度 WG ...

  2. 地球坐标系(WGS - 84)转火星坐标系(GCJ)

    地球坐标系(WGS - 84)转火星坐标系(GCJ) package com.tdt.convert.utils;import java.math.BigDecimal;/*** @author Mr ...

  3. GIS中墨卡托与WGS 84的瓦片编号计算方法

    GIS中墨卡托与WGS 84的瓦片编号计算方法   在GIS中计算瓦片的编号,墨卡托与WGS 84的计算方法与瓦片行列号是不一样的,为什么会有这样的差异呢?主要是因为我们的墨卡托是投影坐标系,WGS ...

  4. 各系地图坐标互相转换【JS版和Java版】

    各系地图坐标互相转换[JS版和Java版] 坐标说明 1.(地球坐标)美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置. 2.(火星坐标)我国,出于国家安全考虑,国内 ...

  5. JS 使用正则匹配字符串中所有大括号包含的数据,转换成数组形式

    JS 使用正则匹配字符串中所有大括号包含的数据,转换成数组形式 .match(/{[^}{]*?}/g)

  6. JS模块化工具requirejs教程02

    基本API require会定义三个变量:define,require,requirejs,其中require === requirejs,一般使用require更简短 define 从名字就可以看出 ...

  7. Js整理备忘(02)——运算符

    1.运算符的表示以及优先级 Javascript(以下简写为Js)的大部分运算符与C或Java是类似的. 记得刚学C语言时老师讲的优先级口诀,非常好记:"括.单.算.移.关"&qu ...

  8. 开发js插件之所遇--02[DOM]

    http://blog.csdn.net/mujsmj/archive/2009/06/19/4282841.aspx

  9. js转Java的list_JS之JSON字符串到后台用Java转换成List实体类

    重点:JAVA之JSON字符串转换LIST实体类 ​​​​​​​Listlist = new ArrayList(); list = JSONObject.parseArray(strResult, ...

最新文章

  1. 新概念英语(1-137)A pleasant dream
  2. js 嵌入php_PHP快速入门第一讲:什么是PHP
  3. Zjnu Stadium HDU - 304 加权并查集
  4. selenium的安装实操-0223
  5. 译文 | 与TensorFlow的第一次接触 第五章:多层神经网络
  6. 采用开源技术的好处_采用开源的6个技巧
  7. 从中关村的小小柜台,但目前市值千亿元的公司
  8. 独门绝技:一招克死所有病毒(转贴,没有用过)
  9. Android工具HierarchyViewer 代码导读(1) -- 功能实现演示
  10. idea 页面改了 网页没_如何做出高大上的PPT?试试美得令人窒息的网页风格!
  11. v9更新系统后为何显示服务器连接,红伞V9升级不能……报告里说好多文件无法与服务器建立连接……...
  12. 东北大学数理统计 2019-2020 年试题答案
  13. 4矩阵键盘c语言程序,4×4矩阵键盘数码管显示按键值程序
  14. 输入等值线参数绘制等值线图python_专题复习:等值线(上)
  15. 2022-2027年中国洗发水行业市场全景评估及发展战略规划报告
  16. 15分钟带你入门Pandas
  17. 软件服务化:管理当先
  18. 根据State筛选数据表格
  19. 查看、管理和修饰数码照片的利器:Windows照片库
  20. 图:国行HTC 8X修改市场区域

热门文章

  1. PVE+软路由+黑群晖[卒]
  2. 锂电池标3.7V或4.2V的区别
  3. ardl模型stata命令_Stata新命令快讯: 有向无环图、模糊倍分法等
  4. IOS 字符串转时间时12小时制24小时制的处理。
  5. dropwizard常用属性注解
  6. Python——特点(优点缺点)
  7. 图论相关题-pta-个人整理-含有解析
  8. 过360云查杀vc++代码
  9. 史上最简单的composer使用教程
  10. node.js毕业设计联影医疗器械管理系统小程序(源码+程序+LW+部署)