EC20定位模块+百度地图API使用踩坑
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使用踩坑相关推荐
- React + fetch API + 百度地图api + 跨域 填坑
做项目遇到一个百度地图api 的跨域问题.由于使用fetch ,在调用类似 http://api.map.baidu.com/geocoder/v2/callback=renderReverse&am ...
- Android中应用百度地图API开发地图APP实例-显示百度地图
场景 效果 在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY http://lbsyun.baidu.com/index.php 申请API_KEY 登录百度开放平台后找到控制台下 ...
- android应用控制百度地图,Android中应用百度地图API开发地图APP实例-显示百度地图...
场景 效果 在使用百度地图API之前需要先在百度地图开放平台中申请API_KEY 申请API_KEY 登录百度开放平台后找到控制台下的应用管理-创建应用 依次输入应用名,应用类型选择Android S ...
- 让百度地图API支持HTTPS
近期给旧项目做协议升级,刚好碰到引用的百度地图API的坑,踩完坑记一记,或许也能帮到其他小伙伴呢,哈哈哈~ 站点协议升级 页面引用由 http://api.map.baidu.com/getscrip ...
- python 百度地图api_使用Python玩转百度地图Api
前言 最近新接了一个需求(感觉其实就是在帮业务研发填坑==!),需要将订单表中的各种地址解析为经纬度数据,然后提供给算法团队进行高大上的建模等工作.通过相关资料的了解,感觉百度地图api刚好可以帮助实 ...
- vue3引入百度地图API组件的办法:
第一种 全局引入 VueCli3引入百度地图Api详细步骤+宽高自动页面自适应(踩坑+源代码)_BBBling的博客-CSDN博客 第二种 组件化引入: 第一步 安装百度地图依赖包 npm i vue ...
- react-native 接百度地图API(显示周边poi)
react-native 接百度地图API (显示周边poi) 目的:显示周边poi及搜索poi功能(给自己的笔记,省去了很多基础步骤,有问题的可以先去了解RN跟android以及Ios原生的通信) ...
- html5 geolocation 百度地图,html5 geolocation配合百度地图api实现定位
1.了解html5 geolocation HTML5 Geolocation(地理定位)用于定位用户的位置. 鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的.=> 使用 ...
- JAVA百度鹰眼 API 遇到的坑 APP SN校验失败
JAVA百度鹰眼 API 遇到的坑 APP SN校验失败 声明:这不是原创,只是刚好遇到,找了好久,写下来方便以后查询,代码都是复制过来的 1.总是返回sn校验失败,原因是 coords的参数有逗号, ...
最新文章
- 实际开发中,有时没有异常发生,但是执行结果不是我们期望的情况,需要手动让事务回滚
- Material Master
- Ubuntu tensorflow自定义GPU版本op节点
- C++ Primer 5th笔记(7)chapter7 类:字面值常量类
- HDU_4014 Discont (water~)
- python使用telnet远程连接linux系统读取信息_Linux服务笔记之一:Telnet 远程登录
- 前端学习(2330):angular之二级路由
- 上下定高 中间自适应_上下固定中间自适应布局
- Android蓝牙服务
- Flutter实战视频-移动电商-18.首页_火爆专区后台接口调试
- Ubuntu上安装QQ,无法显示图片和头像
- 怎样找自己研究领域的论文
- 宝塔实测-PHP网页版在线客服系统源码
- 首席新媒体黎想教程:活动推广提升线下活动转化率?
- 汇编代码入门 ATT指令格式
- wordpress表单数据验证_手拉手搭建 lnmp 环境及安装 wordpress
- 次世代3D游戏角色模型制作:低模制作(三)
- 网格员计算机应用基础知识,社区工作者考试之网格管理员知识经验参考
- 浙江教师计算机职称考试,浙江今年不再组织职称外语统一考试 计算机照考
- c#大作业——围棋(单机版)
热门文章
- 再快一点?动态内容如何加速
- piinyin4j的使用 把中文转成拼音
- 计算机大学考试操作题ppt,大学计算机一级考试操作题考试要点.ppt
- 来了老弟,Layui树形菜单tree
- python自动化运维与开发岗位_新课 | 运维开发工程师必学的Python自动化运维课程,学完后悔没早点学!...
- 【SSM】框架整合基于maven(笔记一)
- 编程高手成长的六个阶段,你处于哪一阶段?
- spring-boot-starter-encrypt
- from skimage.measure import compare_ssim as sk_cpt_ssim error,从skimage导入compare_ssim出错。
- EDiary.exe 诡西游 空之境界 花田少年史