地图坐标系
目前国内在用的主要地图坐标系有以下几种:
WGS84
:大地坐标系,也就是GPS
标准坐标系,国外用的比较多。GCJ02
:火星坐标系,由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84
坐标系加密后所得,常用的有高德地图
、腾讯地图
。BD09
:百度坐标系,在GCJ02
坐标系基础上再次加密所得。其中BD09LL
表示百度经纬度坐标,BD09MC
表示百度墨卡托米制坐标。
坐标系转换
这边介绍两种通过百度地图 API 进行坐标系转换的方案。
注意:要使用百度地图接口前提,必须先申请开发者密钥(AK)【传送门】
通过百度 Web 服务 API 转换
接口访问:
请求:
https://api.map.baidu.com/geoconv/v1/?coords=经度,纬度;经度,纬度&from=源坐标类型&to=目标坐标类型&ak=你的密钥 // GET 请求
响应:
{"status":访问状态,"result":[{"x":经度,"y":纬度},{"x":经度,"y":纬度}]}
请求参数:
参数 | 说明 | 类型 | 可选值 | 默认值 | 是否必填 |
---|---|---|---|---|---|
coords | 需转换的源坐标(经度,纬度),多组坐标以“;”分隔 | string | — | — | 是 |
from | 源坐标类型 | int | 1:GPS标准坐标; 2:搜狗地图坐标; 3:火星坐标(gcj02),即高德地图、腾讯地图和MapABC等地图使用的坐标; 4:3中列举的地图坐标对应的墨卡托平面坐标; 5:百度地图采用的经纬度坐标(bd09ll); 6:百度地图采用的墨卡托平面坐标(bd09mc); 7:图吧地图坐标; 8:51地图坐标; | 1 | 否 |
to | 目标坐标类型 | int | 3:火星坐标(gcj02),即高德地图、腾讯地图及MapABC等地图使用的坐标; 5:百度地图采用的经纬度坐标(bd09ll); 6:百度地图采用的墨卡托平面坐标(bd09mc); | 5 | 否 |
ak | 开发者密钥,申请 | string | — | — | 是 |
返回数据:
参数 | 说明 | 类型 |
---|---|---|
status | 访问状态,成功返回 0,其他为失败 | int |
result | 转换结果数组 | array |
x | 经度 | float |
y | 纬度 | float |
通过 JS API 转换
引入 JS 库:
<script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=你的密钥"></script>
使用示例(GPS 转 BD09LL):
let pointArr = []
pointArr.push(new BMap.Point(116.32715863448607, 39.990912172420714))
new BMap.Convertor().translate(pointArr, 1, 5, data => {
console.info(data)
})
输出:
{
"status": 0,
"points": [
{
"lng": 116.33993794567915,
"lat": 39.99790821949972
}
]
}
知识点:
Convertor()
:创建一个坐标转换的实例;translate(points: Array<BMap.Point>, from: number, to: number, callback: function)
:对指定的点数组进行坐标转换,转换规则为从 from 到 to,转换完成后调用 callback。一次最多 10 个点;
注意:根据相关法律规定,不支持将任何一种坐标系坐标转换为 GPS 标准坐标。
参考文档:
1、https://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition
2、https://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference_3_0.html#a7b55
版权属于:瞭月
本文链接:https://www.lervor.com/archives/266/
版权声明:本文为瞭月原创文章,转载请附上原文出处链接和本声明。
2 条评论
博主是Giser吗
不是,就是搞的东西比较杂