Skip to content
泠泠彻夜的笔记
Main Navigation首页笔记
HTML
CSS
JavaScript
TypeScript
Node.js
Vue3
uniapp
插件
算法题

外观

blogs

地图坐标系转换

怡然

610字约2分钟

地图

2024-07-17

相关信息

在地图开发中的散点图出现,地图打点位置与实际位置出现偏差的情况,从整体情况来看,打点位置与实际位置相比偏西南方法,确定为不同坐标使用的坐标系不同导致的偏差。该偏差很难通过几个点的位置计算得出转换方式,需要地图方提供正确的转换方式。 地球上同一个地理位置的经纬度,在不同的坐标系中,会有少于偏移,国内目前常见的坐标系主要分为三种:

  1. 地球坐标系——WGS84:常见于 GPS 设备,Google 地图等国际标准的坐标体系。
  2. 火星坐标系——GCJ-02:中国国内使用的被强制加密后的坐标体系,高德坐标就属于该种坐标体系。
  3. 百度坐标系——BD-09:百度地图所使用的坐标体系,是在火星坐标系的基础上又进行了一次加密处理。
  • 高德地图中将其他坐标转换为高德坐标AMap.convertFrom(lnglat,type,cbk)
var gps = [116.3, 39.9]; //需要转换的gps类型的坐标
//参数说明:需要转换的坐标,需要转换的坐标类型,转换成功后的回调函数
AMap.convertFrom(gps, "gps", function (status, result) {
  //status:complete 表示查询成功,no_data 为查询无结果,error 代表查询错误
  //查询成功时,result.locations 即为转换后的高德坐标系
  if (status === "complete" && result.info === "ok") {
    var lnglats = result.locations; //转换后的高德坐标 Array.<LngLat>
    console.log(lnglats);
  }
});
参数说明
lnglat转换的坐标或者坐标组。
type支持"gps":GPS 原始坐标、"baidu":百度经纬度坐标、"mapbar":图吧经纬度坐标。
cbk转换成功后的回调函数。
  • 百度地图中坐标转换方法
var convertor = new BMapGL.Convertor();
var pointArr = [116.3, 39.9];
convertor.translate(pointArr, COORDINATES_GCJ02, COORDINATES_BD09, translateCallback)
/**
 * 坐标常量说明:
 * COORDINATES_WGS84 = 1, WGS84坐标
 * COORDINATES_WGS84_MC = 2, WGS84的平面墨卡托坐标
 * COORDINATES_GCJ02 = 3,GCJ02坐标
 * COORDINATES_GCJ02_MC = 4, GCJ02的平面墨卡托坐标
 * COORDINATES_BD09 = 5, 百度bd09经纬度坐标
 * COORDINATES_BD09_MC = 6,百度bd09墨卡托坐标
 * COORDINATES_MAPBAR = 7,mapbar地图坐标
 * COORDINATES_51 = 8,51地图坐标
*/
translateCallback = function (data){
  if(data.status === 0) {
    var marker = new BMapGL.Marker(data.points[0]);
    bm.addOverlay(marker);
    var label = new BMapGL.Label("转换后的百度标注(正确)",{offset:new BMapGL.Size(20,-10)});
    marker.setLabel(label); //添加百度label
    bm.setCenter(data.points[0]);
  }
}
贡献者: tsxwslk
上一页echarts实现3D饼图
下一页水球图

Power by VuePress & vuepress-theme-plume