1 模块获得定位数据

模块装上gps天线,使用usb线连接电脑。安装模块usb驱动,成功后打开设备管理器,可以看见模块虚拟了3个串口。主要使用到AT和NMEA两个串口(本设备为COM10和COM9)。

使用串口调试助手连接COM10,波特率115200,发送指令:AT+QGPS=1(回车),返回OK打开定位。然后打开COM9,可以看见模块发送上来的定位数据,需要等一段时间才能得到稳定的数据。也可以返回COM10,发送指令:AT+QGPSLOC?(回车),模块会返回一条定位数据:

+QGPSLOC:151219.0,2934.525787N,11413.135641E,0.7,188.0,2,208.25,0.0,0.0,050520,07

参考文章:EC20Demo。

注:本文所用数据是以百度给出例子生成的假数据,仅作示例使用。

上述数据有效坐标信息为  2934.525787N,11413.135641E,这个为NMEA的坐标表示形式,需要转换为标准格式,转换代码如下:

/** NMEA to 国际WGS-84 nm_lat:NMEA纬度,nm_lon:NMEA经度*/private double[] NMEAToWGS84(double nm_lat, double nm_lon){double[] WG_lat_lon = new double[2];int laH = (int)Math.Floor(nm_lat / 100);double laL = (nm_lat - laH * 100) / 60;int loH = (int)Math.Floor(nm_lon / 100);double loL = (nm_lon - loH * 100) / 60;WG_lat_lon[0] = laH + laL;//标准纬度WG_lat_lon[1] = loH + loL;//标准经度return WG_lat_lon;}

得到经度为:114.21892734521,纬度为:29.575429778924,这个就是国际标准WGS-84坐标。

2 坐标转换

百度坐标和国际坐标不同,直接使用国际坐标定位有很大的偏差,我们需要使用百度API转换,API接口如下:

https://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924&from=1&to=5&ak=你的密钥 //GET请求

其中coords=114.21892734521,29.575429778924就是上一步得到的经纬度,from1&to&5表示从WGS84坐标转换为百度坐标,具体数字见下表。ak为开发者密钥,申请方法见下一节。

返回结果:

{"status":0,"result":[{"x":114.2307519546763,"y":29.57908428837437}]}

其中x即百度地图经度:114.2307519546763,y即百度地图纬度:29.57908428837437。

得到百度坐标后可以用百度坐标拾取系统或者地球在线输入坐标,查看地图上的定位点。

延申阅读:关于GPS坐标系和地图定位偏差、WGS84转高德(火星)、高德转百度。

注:民间未经审批的测量纠偏是违法行为。

3 地图API示例

使用百度地图API应先在百度地图开发平台注册为开发者,然后进入控制台,创建一个应用,得到密钥(AK)。

打开百度地图JS API示例,示例提供了各种应用场景的代码,最简单的显示地图代码如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="utf-8"><title>地图展示</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="initial-scale=1.0, user-scalable=no"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><style>body,html,#container {overflow: hidden;width: 100%;height: 100%;margin: 0;font-family: "微软雅黑";}.info {z-index: 999;width: auto;min-width: 22rem;padding: .75rem 1.25rem;margin-left: 1.25rem;position: fixed;top: 1rem;background-color: #fff;border-radius: .25rem;font-size: 14px;color: #666;box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5);}</style><script src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=您的密钥"></script>
</head>
<body><div class = "info">最新版GL地图命名空间为BMapGL, 可按住鼠标右键控制地图旋转、修改倾斜角度。</div><div id="container"></div>
</body>
</html>
<script>
var map = new BMapGL.Map('container'); // 创建Map实例
map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 12); // 初始化地图,设置中心点坐标和地图级别
map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
</script>

新建一个txt文档(例如Map.txt)将代码复制粘贴进去,保存,把后缀txt改成html(Map.html)再用浏览器打开即可显示地图。

需要注意的是,百度原示例中:

<script src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=您的密钥"></script>

这条没有https:,直接写成src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=您的密钥",这样会导致部分设备无法加载地图,打开为空白页。

可以使用其他程序载入这个地图,例如C#中可以用webBrowser控件:

string str_url = Application.StartupPath + "\\Map.html";
Uri url = new Uri(str_url);
webBrowser1.Url = url;

参考文章:C#调用百度地图API经验分享

总结

坑1:输入AT命令时记得加回车,不然不会有回应

坑2:模块返回来的坐标是必须转换才能用在百度地图上,不然偏差很大

坑3:不要试图自己测量纠偏,不然滴滴就是你的前车之鉴

坑4:src后网址要加https: 不然无法加载

EC20定位模块+百度地图API使用踩坑相关推荐

  1. React + fetch API + 百度地图api + 跨域 填坑

    做项目遇到一个百度地图api 的跨域问题.由于使用fetch ,在调用类似 http://api.map.baidu.com/geocoder/v2/callback=renderReverse&am ...

  2. Android中应用百度地图API开发地图APP实例-显示百度地图

    场景 效果 在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY http://lbsyun.baidu.com/index.php 申请API_KEY 登录百度开放平台后找到控制台下 ...

  3. android应用控制百度地图,Android中应用百度地图API开发地图APP实例-显示百度地图...

    场景 效果 在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY 申请API_KEY 登录百度开放平台后找到控制台下的应用管理-创建应用 依次输入应用名,应用类型选择Android S ...

  4. 让百度地图API支持HTTPS

    近期给旧项目做协议升级,刚好碰到引用的百度地图API的坑,踩完坑记一记,或许也能帮到其他小伙伴呢,哈哈哈~ 站点协议升级 页面引用由 http://api.map.baidu.com/getscrip ...

  5. python 百度地图api_使用Python玩转百度地图Api

    前言 最近新接了一个需求(感觉其实就是在帮业务研发填坑==!),需要将订单表中的各种地址解析为经纬度数据,然后提供给算法团队进行高大上的建模等工作.通过相关资料的了解,感觉百度地图api刚好可以帮助实 ...

  6. vue3引入百度地图API组件的办法:

    第一种 全局引入 VueCli3引入百度地图Api详细步骤+宽高自动页面自适应(踩坑+源代码)_BBBling的博客-CSDN博客 第二种 组件化引入: 第一步 安装百度地图依赖包 npm i vue ...

  7. react-native 接百度地图API(显示周边poi)

    react-native 接百度地图API (显示周边poi) 目的:显示周边poi及搜索poi功能(给自己的笔记,省去了很多基础步骤,有问题的可以先去了解RN跟android以及Ios原生的通信) ...

  8. html5 geolocation 百度地图,html5 geolocation配合百度地图api实现定位

    1.了解html5 geolocation HTML5 Geolocation(地理定位)用于定位用户的位置. 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的.=> 使用 ...

  9. JAVA百度鹰眼 API 遇到的坑 APP SN校验失败

    JAVA百度鹰眼 API 遇到的坑 APP SN校验失败 声明:这不是原创,只是刚好遇到,找了好久,写下来方便以后查询,代码都是复制过来的 1.总是返回sn校验失败,原因是 coords的参数有逗号, ...

最新文章

  1. 实际开发中,有时没有异常发生,但是执行结果不是我们期望的情况,需要手动让事务回滚
  2. Material Master
  3. Ubuntu tensorflow自定义GPU版本op节点
  4. C++ Primer 5th笔记(7)chapter7 类:字面值常量类
  5. HDU_4014 Discont (water~)
  6. python使用telnet远程连接linux系统读取信息_Linux服务笔记之一:Telnet 远程登录
  7. 前端学习(2330):angular之二级路由
  8. 上下定高 中间自适应_上下固定中间自适应布局
  9. Android蓝牙服务
  10. Flutter实战视频-移动电商-18.首页_火爆专区后台接口调试
  11. Ubuntu上安装QQ,无法显示图片和头像
  12. 怎样找自己研究领域的论文
  13. 宝塔实测-PHP网页版在线客服系统源码
  14. 首席新媒体黎想教程:活动推广提升线下活动转化率?
  15. 汇编代码入门 ATT指令格式
  16. wordpress表单数据验证_手拉手搭建 lnmp 环境及安装 wordpress
  17. 次世代3D游戏角色模型制作:低模制作(三)
  18. 网格员计算机应用基础知识,社区工作者考试之网格管理员知识经验参考
  19. 浙江教师计算机职称考试,浙江今年不再组织职称外语统一考试 计算机照考
  20. c#大作业——围棋(单机版)

热门文章

  1. 再快一点?动态内容如何加速
  2. piinyin4j的使用 把中文转成拼音
  3. 计算机大学考试操作题ppt,大学计算机一级考试操作题考试要点.ppt
  4. 来了老弟,Layui树形菜单tree
  5. python自动化运维与开发岗位_新课 | 运维开发工程师必学的Python自动化运维课程,学完后悔没早点学!...
  6. 【SSM】框架整合基于maven(笔记一)
  7. 编程高手成长的六个阶段,你处于哪一阶段?
  8. spring-boot-starter-encrypt
  9. from skimage.measure import compare_ssim as sk_cpt_ssim error,从skimage导入compare_ssim出错。
  10. EDiary.exe 诡西游 空之境界 花田少年史