首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js经纬度转gps坐标系

JavaScript 中将经纬度转换为 GPS 坐标系的过程通常涉及到 WGS84 坐标系(World Geodetic System 1984),这是 GPS 使用的标准坐标系。WGS84 坐标系中的经纬度已经是 GPS 坐标系的一部分,因此如果你有一个 WGS84 坐标系的经纬度值,那么它已经是 GPS 坐标系中的坐标了。

然而,如果你需要将其他坐标系(如 GCJ-02,也称为火星坐标系,中国国内使用的加密坐标系)转换为 WGS84 坐标系,那么你需要进行坐标转换。以下是一个简单的 JavaScript 函数,用于将 GCJ-02 坐标系转换为 WGS84 坐标系:

代码语言:txt
复制
function transformFromGCJToWGS(gcjLat, gcjLng) {
    var a = 6378245.0;
    var ee = 0.00669342162296594323;
    var pi = Math.PI;

    function outOfChina(lat, lng) {
        return lng < 72.004 || lng > 137.8347 || lat < 0.8293 || lat > 55.8271;
    }

    function transformLat(x, y) {
        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));
        ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
        ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
        ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
        return ret;
    }

    function transformLng(x, y) {
        var ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
        ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
        ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
        ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
        return ret;
    }

    if (outOfChina(gcjLat, gcjLng)) {
        return { lat: gcjLat, lng: gcjLng };
    }
    var dLat = transformLat(gcjLng - 105.0, gcjLat - 35.0);
    var dLng = transformLng(gcjLng - 105.0, gcjLat - 35.0);
    var radLat = gcjLat / 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 wgsLat = gcjLat - dLat;
    var wgsLng = gcjLng - dLng;
    return { lat: wgsLat, lng: wgsLng };
}

基础概念

  • WGS84: 国际标准的地球参考椭球体,广泛用于 GPS 定位。
  • GCJ-02: 中国国家测绘局制定的地理坐标系统,也称为火星坐标系,是对 WGS84 坐标系进行加密后的坐标系。

优势

  • WGS84: 全球通用,精度高,适用于国际间的定位服务。
  • GCJ-02: 在中国境内使用更为广泛,因为其考虑了中国的地理特点。

类型

  • 地理坐标系主要分为大地坐标系和空间直角坐标系。

应用场景

  • 导航系统: GPS 定位服务。
  • 地图服务: 如地图展示、路径规划等。
  • 地理信息系统 (GIS): 数据分析和可视化。

遇到的问题及解决方法

如果你在转换过程中遇到精度问题,可能是因为转换算法本身的局限性或者输入数据的准确性。解决方法包括:

  • 使用更精确的转换算法。
  • 确保输入的经纬度数据准确无误。
  • 在必要时,可以考虑使用专业的地理信息系统软件进行坐标转换。

请注意,坐标转换涉及到复杂的数学计算和地理知识,因此在实际应用中可能需要根据具体情况进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

高德,百度,Google地图定位偏移以及坐标系转换

一、在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系 一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度...= {tempLat,tempLon}; return gps; } /**将gps84转为bd09 * @param lat * @param lon * @return...,然后在国外网络下显示也会发生偏移(谷歌和高德会依据网络的情况选择使用WGS-84坐标还是GCJ-02坐标,百度地图则一直使用bd-02坐标系) 3.定位方式,在iOS定位的经纬度是通过GPS获取的,...在Android则可以通过网络或GPS获取经纬度。...文章转自高德,百度,Google地图定位偏移以及坐标系转换

7.4K32

hybird,关于地理定位

首先我们了解一下地理定位的基本知识: 手机定位方式 定位即获取用户当前经纬度,手机定位方式常见有三种: GPS/北斗:根据系统GPS/北斗模块通过与卫星通信实时计算获取经纬度,精度10-100米左右,限制是容易受环境影响...现有的高德定位插件,大多不维护了,使用的第三方库都是2年或以上,比较旧,所以我造了个轮子:cordova-location-amap——但我也没有维护了…… 数据偏移之互联网地图坐标系 有时候通过定位获取的经纬度并不是适用所有地图的...,如高德定位获取到的经纬度是不能在百度地图上正确打点的,因为地图使用了不同的坐标系,常见的互联网地图坐标系有下面三种: WGS84(GPS) 国际标准,一般从国际标准的GPS设备获取的坐标都是WGS84...比如谷歌中国、高德、腾讯都在用这个坐标系。 BD09 百度标准。 除了火星坐标系统,不同的地图数据商也可能使用自己的坐标系统。百度就在“GCJ02”的基础上进行二次加密。...-- UI组件库 1.0 --> js?

1.8K30
  • WebGis技术汇总

    因为GPS得到的经纬度直接在 GCJ-02 坐标系下会定位到错误的地点,有种到了⽕星的感觉,因此在坊间也将 GCJ-02 戏称为火星坐标系。...使用对象 高德地图、腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系 百度地图使用的是BD-09坐标系 底层接口(HTML5 Geolocation或iOS、安卓API)通过GPS设备获取的坐标使用的是...EPSG:4326(地理):使用此坐标系会导致页面变形。 经纬度存储计算用EPSG:4326也就是WGS84,数据展示用EPSG:3857。...JS转换 var GPS = { PI: 3.14159265358979324, x_pi: 3.14159265358979324 * 3000.0 / 180.0, delta.../index'); //百度经纬度坐标转国测局坐标 var bd09togcj02 = coordtransform.bd09togcj02(116.404, 39.915); //国测局坐标转百度经纬度坐标

    84230

    GIS坐标系:WGS84,GCJ02,BD09,火星坐标,大地坐标等解析说与转换

    在我朝,地理坐标转换有:WGS84转GCJ02、GCJ02转BD009、BD09转GCJ02。WGS84大地坐标系GPS全球定位系统使用的坐标系统,GPS设备直接返回的坐标即为WGS84。...为什么叫火星坐标据说说是为了国家安全保密需要,要求全部国内地图测绘单位必须使用这套坐标系统,对GPS的坐标系统进行调整,所以会导致使用国内测绘的地理地图数据对不上使用GPS坐标测绘的地图数据,甚至是卫星地图...国内地图坐标使用注意事项火星坐标与地球通用坐标系WGS84,偏差一般为 300~500 米。也就是说,你手机GPS获取的坐标,直接叠加到这个“火星坐标系”的地图上,会有 300~500 米的偏差。..., 39.9158)经纬度转坐标geographic-coordinate-converter  https://www.npmjs.com/package/geographic-coordinate-converterimport...CoordinateConverter.fromDegreeMinutes("36º 00.607' S 002º 20.914' W").toDecimalArray() //[-36.01012, -2.34857]经纬度转坐标轻量库

    2.7K10

    WGS84,GCJ02,BD09,火星坐标,大地坐标等解析说明与转换

    WGS84大地坐标系 GPS全球定位系统使用的坐标系统,GPS设备直接返回的坐标即为WGS84。随GPS通用,能正确套到现在大部分基于这套坐标建立的卫星地图上。...为什么叫火星坐标 据说说是为了国家安全保密需要,要求全部国内地图测绘单位必须使用这套坐标系统,对GPS的坐标系统进行调整,所以会导致使用国内测绘的地理地图数据对不上使用GPS坐标测绘的地图数据,甚至是卫星地图...国内地图坐标使用注意事项 火星坐标与地球通用坐标系WGS84,偏差一般为 300~500 米。也就是说,你手机GPS获取的坐标,直接叠加到这个“火星坐标系”的地图上,会有 300~500 米的偏差。...coord = CoordinateConvert.wgc2gcj(116.3997, 39.9158) ● 经纬度转坐标geographic-coordinate-converter https:...CoordinateConverter.fromDegreeMinutes("36º 00.607' S 002º 20.914' W") .toDecimalArray() //[-36.01012, -2.34857] ● 经纬度转坐标轻量库

    7K40

    FreeJTS部标视频平台:车载坐标系与地图坐标系转换

    背景 最近在开发部标平台中进行轨迹回放的定位接口中,返发现回的是WSG-84坐标系下的经纬度信息,但项目前端使用的是高德地图,发现位置有偏移。经了解,需要进行车载坐标系和地图坐标系进行转换。...常见坐标系 WGS84坐标系 地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系。...GCJ02坐标系 火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。 BD09坐标系 百度地图使用坐标系,GCJ02坐标系经加密后的坐标系。...gg_lon = z * cos(theta); gg_lat = z * sin(theta); } 借用其他博客的图片做个简要说明: 国际做法: 百度做法: 总结 经过上述过程后,车载GPS...在地图上绘制后即可不会偏移 规划车辆路线时,同理需要将GCJ02转成WGS84才能发给设备

    92020

    大地经纬度坐标系与Web墨卡托坐标系的转换

    概述 我在《大地经纬度坐标与地心地固坐标的的转换》这篇文章中已经论述了大地坐标系/地理坐标系的概念,简单来说就是由经度、纬度以及高程(BLH)确定的坐标系,它是一种曲面坐标。...所以就产生了从曲面到平面的转换,这个过程也叫做投影,转换的结果也就是投影平面坐标系。...我在《GDAL坐标转换》这篇文章中详细论述了我们国内常用的三种投影平面坐标系:横轴墨卡托投影,高斯-克吕格投影和UTM投影。...最后,通过墨卡托投影公式进行反算,得到的经纬度范围就是[-85.05112877980659,85.05112877980659]。也就是这种投影方式,大于这个范围是失效的。...113.6; double y = 38.8; double z = 100; printf("%.10lf\n", maximumLatitude * r2d); printf("原大地经纬度坐标

    3.6K60

    从零打造一个Web地图引擎

    说到地图,大家一定很熟悉,平时应该都使用过百度地图、地图、腾讯地图等,如果涉及到地图相关的开发需求,也有很多选择,比如前面的几个地图都会提供一套js API,此外也有一些开源地图框架可以使用,比如OpenLayers...坐标系简介 地图使用的是GCJ-02坐标系,也称火星坐标系,由中国国家测绘局在02年发布,是在GPS坐标(WGS-84坐标系)基础上经加密后而来,也就是增加了非线性的偏移,让你摸不准真实位置,为了国家安全...WGS-84坐标系是国际通用的标准,EPSG编号为EPSG:4326,通常GPS设备获取到的原始经纬度和国外的地图厂商使用的都是WGS-84坐标系。...经纬度定位行列号 上一节里我们简单介绍了一下坐标系,按照Web地图的标准,我们的地图引擎也选择支持EPSG:3857投影,但是我们通过工具获取到的是火星坐标系的经纬度坐标,所以第一步要把经纬度坐标转换为...坐标系转换 前面还遗留了一个小问题,即我们把工具上选出的经纬度直接当做4326经纬度,前面也讲过,它们之间是存在偏移的,比如手机GPS获取到的经纬度一般都是84坐标,直接在地图显示,会发现和你实际位置不一样

    4K10

    python实现地理位置类数据爬取与geohash应用初探

    而设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系。 所以我们要根据得到的经纬度的坐标类型和地图厂商类型在地图上标点,否则会出现获取的位置误差。...title=coordinate 2.1 我们常说的坐标系 WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。...(GCJ-02)转百度坐标系(BD-09) 谷歌、高德——>百度 :param lng:火星坐标经度 :param lat:火星坐标纬度 :return: """...(BD-09)转火星坐标系(GCJ-02) 百度——>谷歌、高德 :param bd_lat:百度坐标纬度 :param bd_lon:百度坐标经度 :return:转换后的坐标列表形式...)转GPS84 :param lng:火星坐标系的经度 :param lat:火星坐标系纬度 :return: """ if out_of_china(lng,

    3.6K40

    地理位置研发二三事

    GPS坐标系 火星坐标系 IP地址定位 image.png 如果你要开发一个基于 GPS 甚至 IP 地址进行地址定位的功能时,你需要了解一下这些基本知识点,本人对真正的测绘专业不在行,如有疏漏欢迎指正...GPS 常用坐标系 #1 WGS-84 国际标准: Google Earth、或者GPS模块使用该标准 目前 GPS 的国际标准坐标系统, GPS 所发布的星历参数就是基于此坐标系统的。...WGS-84 坐标系统由美国国防部制图局建立,于1987 年取代了当时GPS所采用的坐标系统―WGS-72坐标系统而成为GPS 的所使用的坐标系统。...---- 做个小实验,以东方明珠为参照物,对比下百度地图,腾讯地图,Google Map和Google Earth的经纬度偏差: 百度拾取坐标系统 直接搜索东方明珠,显示的经纬度值在右上角: 121.506271,31.245414...-02标准,谷歌Earth是国标的原始GPS经纬度。

    1.8K20

    GCJ-02(高德) BD-09(百度) WGS-84(谷歌)坐标系之间的转换

    WGS-84、GCJ-02、BD-09 坐标系 先了解一下WGS-84、GCJ-02、BD-09 坐标系分别是什么 WGS84(World Geodetic System 1984):是 GPS...全球定位系统建立的坐标系统,通过GPS定位拿到的原始经纬度。...GCJ-02(国家测量局02号标准):GCJ-02 是由中国国家测绘局(G表示Guojia国家,C表示Cehui测绘,J表示Ju局)制订的地理信息系统的坐标系统,是在WGS84经纬度的基础上执行加密算法而成...因为GPS得到的经纬度直接在 GCJ-02 坐标系下会定位到错误的地点,有种到了火星的感觉,因此在坊间也将 GCJ-02 戏称为火星坐标系。...从百度产品中得到的坐标都是BD-09坐标系。 WGS-84、GCJ-02、BD-09 坐标系之间的转换 新建一个 js 文件,直接把下面的代码copy进去。

    11.6K10

    投影坐标系转地理坐标系的GDAL实现

    在之前的博客中,我们曾多次介绍过将图层的地理坐标系转为投影坐标系的方法,也就是投影操作——例如ArcGIS矢量图层投影与地理坐标系转为投影坐标系——ArcMap,以及Google Earth Engine...谷歌地球引擎地理坐标系、投影坐标系的变换与重投影,还有ArcMap通过模型构建器导出地理与投影坐标系转换的Python代码等。...而在本文中,我们将反过来,介绍把一个栅格图像原本的投影坐标系转为地理坐标系的方法。   ...我们希望将其的投影坐标系转换为地理坐标系,本文就以将其转换为GCS_WGS_1984,也就是WGS84坐标系为例,来介绍具体的方法;如果大家需要转换为其他的地理坐标系,只需要修改下述代码中的参数就好。...其中,在ArcMap软件打开它,可以看到其坐标系已经被修改为GCS_WGS_1984了,也就是完成了由投影坐标系到地理坐标系的转换;如下图所示。   至此,大功告成。

    38410

    基于 ArcGIS 的坐标系转换

    坐标系 我们常用到的坐标系一般分为两大类 地理坐标系(GCS) 投影坐标系(PCS) 地理坐标系就是把地球当成一个球体来看,以球心为参照点,通过经纬度来定位某个坐标点。...比较常见的转换,例如WGS-84转百度BD09坐标系、转大地2000坐标系等网上都有很多实现,国内的地图服务商(如百度、腾讯等)也有提供转换接口可供使用,但当你遇到一些比较特别的坐标系的时候,就需要自己来转换了...(如果单纯转坐标系,可以选择,GeoTools 只需引入包即可进行转换,很方便) ArcGIS:由ESRI出品的一个地理信息系统系列软件。...考虑到后续可能要转 GIS 地图,所以这里选了 ArcGIS 的方式来转换坐标系。 java8 最高可使用100.4.0版本,如果是 java11 可以自己填最新的 ArcGIS 版本号。...(gps84ToBd09[0], gps84ToBd09[1]); } } 自己 build 用的 dockerfile # 这里填写中间件版本,不填版本号默认最新版 FROM tomcat:

    2.7K20

    高德百度坐标系转换方法

    大家都知道,美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际共识。...但在我国,出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标,我们在业内将前者称之为地球坐标,后者称之为火星坐标,具体的说明可以参看百度百科中关于火星坐标系统的解释...百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。...(WGS-84) 到火星坐标系 (GCJ-02) 的转换算法 WGS-84 到 GCJ-02 的转换(即 GPS 加偏)算法是一个普通青年轻易无法接触到的“公开”的秘密。...至于 GCJ-02 到 WGS-84 的转换(即 GPS 纠偏),可以使用二分法。

    7K20
    领券