coordtransform 是一个提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具模块。
百度坐标系对应的就是百度地图,国测局坐标系对应的是高德地图,谷歌地图,ios地图等。wgs84是国际标准,是从专业gps设备中取出的数据坐标系。
这里要说一下百度坐标系,因为之前用在app时,准是会出现几百米的固定误差。是因为百度地图为保护个人的隐私,在获取坐标系时首先通过国测局坐标系进行了一次加密,之后又通过百度坐标系进行了二次加密。所以获得的坐标系不是gps设备定位到的准确的坐标系。要经过转换才可以使用。下面我提供了nodejs坐标系转换的方法,希望能帮到有此困扰的博友:
安装:
首先在你的项目上安装模块:
npm install coordtransform
之后:
//国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标) var coordtransform=require('coordtransform'); //百度经纬度坐标转国测局坐标 var bd09togcj02=coordtransform.bd09togcj02(116.404, 39.915); //国测局坐标转百度经纬度坐标 var gcj02tobd09=coordtransform.gcj02tobd09(116.404, 39.915); //wgs84转国测局坐标 var wgs84togcj02=coordtransform.wgs84togcj02(116.404, 39.915); //国测局坐标转wgs84坐标 var gcj02towgs84=coordtransform.gcj02towgs84(116.404, 39.915); console.log(bd09togcj02); console.log(gcj02tobd09); console.log(wgs84togcj02); console.log(gcj02towgs84); //result //bd09togcj02: [ 116.39762729119315, 39.90865673957631 ] //gcj02tobd09: [ 116.41036949371029, 39.92133699351021 ] //wgs84togcj02: [ 116.41024449916938, 39.91640428150164 ] //gcj02towgs84: [ 116.39775550083061, 39.91359571849836 ]