由于目前世界上只有美国才有全球定位系统(GPS),当我们实际做项目时,得到的坐标数据往往都是为GPS全球定位系统使用而建立的坐标系统,即我们所说的84坐标。而基于我国国情,这些真实坐标都是已经进行人为的加偏处理过后,才能进行出版和发布。所以,后台返回的是84坐标,想要在地图上显示正确的位置,就需要进行坐标转换。

先附上一段代码。这是网上当下来的。网友提供的一份坐标转换函数。直接调用即可。

/*** Created by Wandergis on 2015/7/8.* 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换*///定义一些常量
const x_PI = 3.14159265358979324 * 3000.0 / 180.0;
const PI = 3.1415926535897932384626;
const a = 6378245.0;
const ee = 0.00669342162296594323;/*** 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换* 即 百度 转 谷歌、高德* @param bd_lon* @param bd_lat* @returns {*[]}*/
function bd09togcj02(bd_lon, bd_lat) {let x_pi = 3.14159265358979324 * 3000.0 / 180.0;let x = bd_lon - 0.0065;let y = bd_lat - 0.006;let z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);let theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);let gg_lng = z * Math.cos(theta);let gg_lat = z * Math.sin(theta);return [gg_lng, gg_lat]
}/*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换* 即谷歌、高德 转 百度* @param lng* @param lat* @returns {*[]}*/
function gcj02tobd09(lng, lat) {let z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);let theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);let bd_lng = z * Math.cos(theta) + 0.0065;let 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 {let dlat = transformlat(lng - 105.0, lat - 35.0);let dlng = transformlng(lng - 105.0, lat - 35.0);let radlat = lat / 180.0 * PI;let magic = Math.sin(radlat);magic = 1 - ee * magic * magic;let sqrtmagic = Math.sqrt(magic);dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);let mglat = lat + dlat;let 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 {let dlat = transformlat(lng - 105.0, lat - 35.0);let dlng = transformlng(lng - 105.0, lat - 35.0);let radlat = lat / 180.0 * PI;let magic = Math.sin(radlat);magic = 1 - ee * magic * magic;let 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) {let 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) {let 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);
}

用法举例:84坐标转国测局02坐标(即火星坐标)

  let val = {lng: '113.2394600',lat: '22.153278'};let coordinate = wgs84togcj02(val.lng, val.lat)val.lng = coordinate[0]val.lat = coordinate[1]

可以发现,这行代码并没有提供84坐标转百度坐标的方法。此时可以参照百度地图开发文档,使用百度地图API进行转换。

  let val = {lng: '113.2394600',lat: '22.153278'};let pointArr = []let point = new BMap.Point(val.lng, val.lat)pointArr.push(point)new BMap.Convertor().translate(pointArr, 1, 5, (res) => {if (res.status === 0) {val.lng = res.points[0].lng;val.lat = res.points[0].lat;// 此时的val即是正确的坐标信息}})

地图坐标转换(84坐标、百度坐标、国测局坐标)相关推荐

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

    关于三种坐标系的介绍 WGS84:一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系. GCJ02:由中国国家测绘局制订的地理信息系统的坐标系统,是由WGS84坐标系经过加密后的坐标 ...

  2. 火星坐标(gcj02)、国测局坐标(GPS)和百度坐标(bd0911)互转

    火星坐标转百度坐标 /*** 火星转百度* * @param bd_lat 百度坐标纬度* @param bd_lon 百度坐标经度*/ public void bd_encrypt(double g ...

  3. gps坐标转百度坐标 java_BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换...

    为什么不统一用WGS84地理坐标系这就是国家地理测绘总局对于出版地图的要求,出版地图必须符合GCJ02坐标系标准了,也就是国家规定不能直接使用WGS84地理坐标系.所以定位大家感觉不准确很多又叫出版地 ...

  4. 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系互转

    为什么写这个模块 随着移动互联网的兴起,几乎每一个app都会去收集用户位置,如果恰好你在处理与地理定位相关的代码,并且不了解地理坐标系的话,肯定要被我大天朝各种坐标系搞晕.写这个模块的目的也是因为项目 ...

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

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

  6. 前端javascript百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换

    /*** * 提供了百度坐标(BD09).国测局坐标(火星坐标,GCJ02).和WGS84坐标系之间的转换*/ // UMD魔法代码 // if the module has no dependenc ...

  7. gps84转换gcj02公式_百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换...

    //定义一些常量 var x_PI = 3.14159265358979324 * 3000.0 / 180.0; var PI = 3.1415926535897932384626; var a = ...

  8. 百度BD09加密经纬度转国测局GCJ02经纬度

    正在做的一个微信公众号的项目要求根据用户输入的地址获取经纬度, 并导航到指定位置, 之前头脑一热用了百度的API做定位, 现在要做导航需要调用微信的SDK, 发现百度获取的经纬度是加密过的BD09格式 ...

  9. GIS数据格式坐标转换(地球坐标WGS84、GCJ-02、火星坐标、百度坐标BD-09、国家大地坐标系CGCS2000)

    文章目录 前言 一.坐标系 1.地球坐标 (WGS84) 2.国测局坐标系(GCJ-02.火星坐标系) 3.百度坐标(BD-09) 4.国家大地2000坐标系(CGCS2000) 二.百度坐标系(BD ...

最新文章

  1. w3 html网页元素,HTML Object 元素
  2. php先分组后排序,PHP数组分组排序实例代码
  3. POCO:InvalidOperationError:Mapping and metadata information could not be found for Entity Type
  4. python数据框元素的性质_python-如何在熊猫数据框中设置某个字段的值?
  5. java分割面板_Split 面板分割
  6. mysql sql组合_详解mysql 组合查询
  7. linux——客户端服务器文件传输
  8. Ajax基础知识梳理 1
  9. 消息称字节跳动正在开发一款类Clubhouse应用
  10. 大数据分析,利用向外扩展技术深入挖掘商业价值
  11. 快捷键调出计算机桌面小工具,win7桌面怎么快速创建便签小工具
  12. 零基础H5小游戏傻瓜教程_教您如何制作微信小游戏
  13. 超级简单理解工厂模式
  14. [转]下载安装IDM Integration Module和其使用方法
  15. 山中无甲子,寒尽不知年
  16. php发送邮件二种方法 php使用smtp发送邮件
  17. OpenGL学习脚印:伽马校正(Gamma Correction)
  18. 【Sofice小司笔记】2 算法与数据结构,各类基础及常用高级数据结构、各种搜索方法、动态规划、字符串、数论、编码学、排序等,大部分都基于java实现
  19. 他打算上计算机课程 英文翻译,计算机专业课程名称英文翻译
  20. 优秀课件笔记之决策支持系统

热门文章

  1. civil 3d 计算机配置,Civil 3D技巧:如果做到设计文件的高效出图?
  2. 企业网站制作多少钱、企业网站需要多少钱、建立网站需要花多少钱
  3. pandas DataFrame 直接生成plot图片 pandas.DataFrame.plot()
  4. Pedestrian Detection paper
  5. Unity与讯飞的aiui交互
  6. tftp linux 配置管理
  7. IntelliJ IDEA CE 2019.2 发布
  8. 3D建模京东商品3D展示怎么做?
  9. PINGTELNET
  10. MinIO: Console endpoint is listening on a dynamic port , please use --console-address