博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百度地图坐标转换
阅读量:7090 次
发布时间:2019-06-28

本文共 1141 字,大约阅读时间需要 3 分钟。

首先, 我们了解一下为什么要坐标转换

国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。

其次, 我们在网上搜到有通过http://api.map.baidu.com/ag/coord/convert?from=[0/2]&to=4&x=纬度&y=经度这个URL来进行转换的, 其中0代表WGS-84即标准GPS设备返回的坐标, 2代表国测局的标准, 显然4就是百度地图认的坐标了. 但我遍搜网络, 这个接口是没有文档的(但是确实可用). 因为会碰到跨域的问题(CORS), 所以就用了jQuery中script标签跨域的方式来执行, 结果这个脚本也被百度”回收”了, 当然, 网上还是有痕迹的, 我把它保存了一下, . 我没在这上面花太多时间, 并没有测它支不支持批量转换(看网友写了一个transMore, 是必须批量送入, 但底层还是一次次分别请求, 不合我意).

而事实上, 百度已经提供了文档化的, 并且原生就支持批量请求. 显然, 我们应该用文档化的方法, 只是这种用法需要申请成为一个开发者, 添加一个应用. 这不是小事么, 于是我小包装了一下, 见此.

仅仅有一点小要求, 就是传入的坐标, 键名分别是lon(经度)和lat和(纬度), 并且可以传入一个(传入一个, 返回也是一个), 或者一组

转换一个坐标:

BMap.Convertor.translate({lon:lon, lat:lat}, 1, 5, bdkey, function (point, status, message) {    if(status) return show(message || "转换坐标出错:"+status, true);    var curmarker = new BMap.Marker(point);    baidumap.addOverlay(curmarker);});

一组坐标:

BMap.Convertor.translate([{lon:lon, lat:lat},...], 1, 5, bdkey, function (points, status, message) {    if(status) return show(message || "转换坐标出错:"+status, true);    // 遍历points});

转载于:https://www.cnblogs.com/walkerwang/p/5313708.html

你可能感兴趣的文章
curl myip.ipip.net curl ip.cn curl cip.cc
查看>>
png24是支持Alpha透明的。。。。。。
查看>>
关于WebGIS开源解决方案的探讨(转)
查看>>
OO第三次博客作业
查看>>
Linux--sed命令
查看>>
Java基本语法-----java数据类型的转换
查看>>
MM模块表大全简单介绍
查看>>
Recursive
查看>>
android sqlite 图片保存和读出
查看>>
Android开机自启动程序
查看>>
C++ PAT乙 1080. MOOC期终成绩 (25)
查看>>
关于layoutparam 请铭记。。。。
查看>>
DevExpress_Report 主从报表绑定数据,分页打印
查看>>
小强的HTML5移动开发之路(3)——HTML5与HTML4比较
查看>>
使用unity3D开发同时打开手机前后摄像头实例程序
查看>>
装饰器
查看>>
转: C# 根据当前时间获取,本周,本月,本季度等时间段 .Net中Exception
查看>>
Java语言基础相关问题
查看>>
spring boot集成swagger2
查看>>
写代码的三重境界
查看>>