地图经纬度转换(百度,高德,谷歌,Leaflet)
-----因项目需求,要把GPS的经纬度转换GCJ02t经纬度
常用地图的经纬度一般为这几种格式:GCJ02、BD09、WGS84(既EPSG:4326)、EPSG:3857(基于墨卡托坐标系)
高德、腾讯(使用GCJ02)
GCJ-02坐标系,也称火星坐标系,由中国国家测绘局在02年发布,是在GPS坐标(WGS-84坐标系)基础上经加密后而来。
谷歌(使用GCJ02和WGS84)
谷歌国内版经纬度用的 GCJ02(又名 国测局 或 火星坐标 )。
安装
通过npm安装:
npm install gcoord --save
或者直接在页面中通过 script 标签引入:
<script src="https://unpkg.com/gcoord/dist/gcoord.global.prod.js"></script>
注意:通过 script 标签引入时请务必指定版本号
引入
CommonJS:
const gcoord = require('gcoord');
ES Module:
import gcoord from 'gcoord';
通过 script 标签引入可以直接使用全局变量 gcoord
或 window.gcoord
使用
例如从手机的GPS得到一个经纬度坐标,需要将其展示在百度地图上,则应该将当前坐标从WGS-84坐标系转换为BD-09坐标系
var result = gcoord.transform( [116.403988, 39.914266], // 经纬度坐标 gcoord.WGS84, // 当前坐标系 gcoord.BD09 // 目标坐标系 ); console.log(result); // [116.41661560068297, 39.92196580126834]
同时gcoord还可以转换GeoJSON对象的坐标系,详细使用方式可以参考API
API
transform(input, from, to)
进行坐标转换
参数
返回值
示例
// 将GCJ02坐标转换为WGS84坐标 var result = gcoord.transform([123, 45], gcoord.GCJ02, gcoord.WGS84); console.log(result); // [122.99395597, 44.99804071]
// 转换GeoJSON坐标 var geojson = { "type": "Point", "coordinates": [123, 45] } gcoord.transform(geojson, gcoord.GCJ02, gcoord.WGS84); console.log(geojson.coordinates); // [122.99395597, 44.99804071]
返回数组或GeoJSON对象(由输入决定),注意:当输入为GeoJSON时,transform会改变输入对象
注:[插件github地址](GitHub - hujiulong/gcoord: 地理坐标系转换工具