门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
账号
自动登录
找回密码
密码
登录
立即注册
请绘制轨迹完成人机验证
由vaptcha提供技术支持
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
精品文章(Qter团队原创教程)
›
基础教程
›
Qt地图gis软件开发经验总结/为什么建议选用天地图 ...
发布主题
返回列表
Qt地图gis软件开发经验总结/为什么建议选用天地图
0
回复
31
查看
[复制链接]
liudianwu
当前离线
积分
2817
liudianwu
累计签到:7 天
连续签到:1 天
来源:
3 天前
显示全部楼层
|
阅读模式
## 一、前言说明
搞地图相关软件或者功能开发很多年,最开始搞得是百度地图,把官网对应的API接口都实现了一遍,好用肯定是好用,但是缺点也挺多,最大缺点就是坐标系需要转换,现在很多的设备传过来的要么是地球坐标系,要么是国家标准的坐标系,而百度地图是自己的坐标系,在国标上又加了自己的偏移,搞得很不兼容,比如其他地图的瓦片也不兼容百度地图,所以杂交起来也难搞,以上缺点也都能将就着用,现在最大缺点来了,就是收费了,直接在瓦片图片上显示未授权字样,而且收费巨贵,个人完全无法承担。
怎么办,转向了高德地图和腾讯地图,用下来也还行,慢慢的高德地图也收费了,心情又是拔凉拔凉的,尽管谷歌地图好用,但是国内的网络环境都懂的,绝大部分的用户都无法打开,要么用离线的,但是下载离线的瓦片也是需要联网的。实在没辙了,最后尝试了下天地图,使用下来效果非常好,关键是天地图还是标准的地球坐标系,gps坐标传过来完全吻合,这都不是重点,重点是天地图是国家队的,永久免费开放,属于公共基础服务,这就放了一万个心,放心大胆的使用,目前只是限制了每天访问瓦片数量,个人的好像只能下载几千张,企业的有十万张,还是够用的,不够就后台多申请几个应用,每个应用的秘钥交替着来,比如限制了3000张,那就申请10个应用,对应有10个秘钥,就可以做到一天30000张的访问量。
天地图还有个优势就是卫星图可以精确到18级别,除了谷歌地图可以做到,其他地图都做不到,其他地图一般是大城市的卫星图能够精确到18级别,其他小地方几乎到了16级就没了,这对很多应用来说是不够的,尤其是无人机行业。而且天地图提供了一个高级绘图组件,里面各种形状绘制非常多,里面的代码也都具有很大参考价值,可以自行参考绘制自定义的图形。
## 二、效果图
## 三、总结说明
1. 受限于浏览器控件对web的支持程度,不同浏览器控件加载对应的地图网页,可能会出现部分特性不支持的情况,比如miniblink内核不支持地图设置旋转角度和倾斜角度,webkit内核不支持webgl的网页。个人推荐使用最新的Qt套件对应的msvc版本,一般会自带最新webengine内核,特性比较新。
2. 不同的地图内核有不同的优缺点,一般国内使用比较多的是百度地图、高德地图、天地图三种,谷歌由于需要翻墙才能使用,导致国内用户数很低。综合使用对比下来看,高德地图在api接口和文档示例方面最丰富的,应用场景也最全;百度地图在周边附近搜索方面最详细;天地图在地图精度和完整性方面最好。
3. 高德地图和谷歌地图,在国内都是采用国家标准的GCJ-02坐标系(也叫火星坐标系),这个标准是在全球标准WGS-84坐标系(也叫地球坐标系,GPS用)基础上加密的。天地图采用的是CGCS2000坐标系(也叫大地坐标系),和WGS-84坐标系(也叫地球坐标系)几乎无偏差,一般GPS设备和谷歌国际地图使用。 百度地图用的是BD-09坐标系,是在国家标准坐标系上又加密的。一般建议用国家标准的GCJ-02坐标系。如果对接的是WGS-84坐标,则建议用天地图。
4. **常规应用场景建议用高德地图,无人机相关场景以及测绘测量行业建议用天地图,对周边生活搜索要求高的场景建议用百度地图,海外地图场景建议用谷歌地图。天地图对浏览器的兼容性最好,而且地图切换流畅度最好。天地图的卫星图最全,精度最高。而且天地图坐标系可以和地球坐标系完美兼容,无偏差。**
5. 高德地图在不同版本之间的兼容性最好,绝大部分接口通用。百度地图对应的webgl版本主要就是将原来的对象BMap改成BMapGL。天地图是旧版本TMap改成T.Map。
6. 总体感觉天地图的API结构和命名方面是借鉴的百度地图的,腾讯地图借鉴的谷歌地图的,极大的雷同,这样也好,方便程序员。
7. 无论是百度地图还是高德地图或者天地图等,都多多少少存在bug,比如不少的情况是,通过new的时候构造函数传参数是可以的,而调用setxxx接口去设置确失败,可能对应接口还没测试好。所以在使用这些类的时候,尽量用构造函数传参数,就算不填实际性的内容,也要传个空数据,避免解析失败而导致后续的功能全无。
8. 百度地图gl版本的路书js文件中,生成了3个marker标注,完全重复多余,不知道是有人故意为之还是。后面发现是github的被人恶意改了,而官方地址
http://api.map.baidu.com/library/LuShu/gl/src/LuShu_min.js
是正确的。
9. 经过大量的模拟测试发现,对覆盖物的删除和清空clearoverlay等,高德地图和谷歌地图会在合适的时机释放内存,而其他地图几乎不会去主动释放,所以如果遇到需要很多覆盖物的场景,建议生成一次后,后面只是去改变该覆盖物的属性比如坐标位置和路径,而不是清空后再次去生成。这样就可以极力避免内存泄漏,这可能也是web的缺陷,没有手动释放机制,说是内部有垃圾自动回收,但是内部很可能判断失败,导致一直无法释放。
10. 腾讯地图的坐标是纬度经度,谷歌地图也是纬度经度,而百度地图、高德地图、天地图都是经度纬度,顺序有区别。
11. 瓦片地图的格式一般的规则是,街道图png、卫星图jpg、叠加层png。
12. 通过地图示例中的指定同一个经纬度坐标来添加标注,对照各种地图内核,可以看到,高德地图、腾讯地图、谷歌地图(中国区)这三个地图位置完全一致,因为都采用了国家标准的GCJ-02坐标系,而百度地图采用的加密的坐标系不一样,天地图采用的CGCS2000坐标系(和WGS-84坐标系几乎一致)。
13. 百度地图、腾讯地图没有提供绘制矩形覆盖物,可以通过绘制多边形覆盖物来实现。
14. 天地图的矩形区域,编辑状态下可以拖动位置,谷歌地图的所有覆盖物都支持拖动位置,其他地图内核目前没有看到如何支持拖动。
15. 天地图的符号标绘,有些是通过长按结束绘制,有些是通过双击结束绘制。
## 四、相关地址
1. 国内站点:[
https://gitee.com/feiyangqingyun
](
https://gitee.com/feiyangqingyun
)
2. 国际站点:[
https://github.com/feiyangqingyun
](
https://github.com/feiyangqingyun
)
3. 个人作品:[
https://blog.csdn.net/feiyangqingyun/article/details/97565652
](
https://blog.csdn.net/feiyangqingyun/article/details/97565652
)
4. 文件地址:[
https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A
](
https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A
) 提取码:o05q 文件名:bin_map.zip
## 五、功能特点
### 5.1 地图功能
1. 支持多种地图内核,默认采用百度地图,可选高德地图、天地图、腾讯地图、谷歌地图等。
2. 同时支持在线地图和离线地图两种模式,离线地图方便在不联网的场景中使用。
3. 支持各种地图控件的启用,比如地图导航、地图类型、缩略图、比例尺、全景导航、实时路况、绘图工具、结果面板等。
4. 支持多种地图功能的动态启用禁用,比如地图拖曳、键盘操作、滚轮缩放、双击放大、连续缩放、地图测距等。
5. 提供众多js函数接口用于交互,参数极其丰富,能够想到的应用场景需求都有。
6. 统一的信号槽机制,地图中的结果统一信号发送出去,收到后根据type类型区分。
7. 支持地图交互,比如鼠标按下获取对应位置的经纬度。单击标注点弹出对应点的信息。
8. 支持添加标注、删除标注、移动标注、清空标注。
9. 标注点可以指定图标图片和尺寸,支持gif动图,支持指定以图片中心对齐还是底部中心对齐。可以设置旋转角度,带富文本提示信息。
10. 标注点事件支持单击发信号通知和自己弹框显示信息。
11. 提供地址转坐标和坐标转地址接口。
12. 支持各种图形绘制,包括折线图、多边形、矩形、圆形、弧线等。
13. 可显示悬浮的绘图工具栏,直接在地图上划线、标注点、矩形、圆形等。
14. 支持各种区域搜索,比如矩形区域、圆形区域,可以按照关键字匹配将搜索结果显示在地图中。
15. 可动态添加离线的行政区边界点数据。可以搜索行政区划并获取该区域的边界点数据。数据可以保存到文件以便离线使用。
16. 支持点聚合功能,多个小标注点合并到一个大标注点,防止点密集导致交互不友好。
17. 可以添加海量点,每个点都可以单击获取对应坐标和信息。
18. 所有的覆盖物信息比如标注点、矩形、多边形、折线图等,都可以主动获取对应的信息比如坐标点和路径等。
19. 支持路径规划,支持公交路线、自驾路线、步行路线、骑行路线,不同查询支持不同策略,可选最少时间、最少换乘、不走高架等。
20. 路径规划结果可以显示在地图中,也可以获取到路径点坐标集合。这个数据可以保存到文件,以便发给机器人或者无人机做导航用来轨迹移动。
21. 可以设置不同的地图视图比如街道图、卫星图、混合图。
22. 可以设置不同的样式,比如午夜蓝、青草绿等样式风格。
23. 可以设置地图的旋转角度和倾斜角度。
24. 提供经纬度坐标纠偏转换功能,比如传入的GPS坐标需要转换到百度地图坐标或者高德地图坐标。各种坐标系转换全部离线函数,支持地球坐标系WGS-84、火星坐标系GCJ-02、百度坐标系BD-09之间的互相转换,涵盖了各种地图的坐标系。
25. 提供动态轨迹点移动功能,按照给定的经纬度坐标集合平滑移动。
26. 同时支持qwidget和qml,支持编译到安卓系统运行。
### 5.2 其他功能
1. 提供离线地图下载模块,可以选择不同的地图内核比如百度地图或者谷歌地图,不同的地图类型比如下载街道图还是卫星图,不同的地图层级,多线程极速下载。
2. 表格行实时显示对应的瓦片下载进度,有下载超时时间,重试次数,每个瓦片下载完成都发送信号通知,参数包括下载用时。
3. 提供省市轮廓图下载模块,自动下载各个地区的轮廓图,保存到脚本文件或者文本文件。
4. 支持手动调整不同区域的轮廓边界,调整后可以主动获取调整后的边界点集合。
5. 提供动态点位示例,手动在地图上选点并添加标注,附带自定义的信息比如速度和时间等。
6. 提供海量点位示例,批量添加标注点、点聚合、海量点。用于测试环境中支持的最大点位性能。
7. 提供动态轨迹示例,在地图上鼠标按下选择起点和终点后,查询路线,获取路径轨迹点,模拟轨迹平滑移动。可以筛选数据将过多的路径点筛选到设定的点数。
8. 提供轨迹回放示例,按照指定的轨迹点列表回放,也可以导入轨迹点数据进行回放。同时支持在街道图、卫星图、混合图中回放轨迹。
9. 提供省市区域地图示例,采用echart组件,同时支持闪烁点图、迁徙图、区域地图、世界地图、仪表盘等。可以设置标题、提示信息、背景颜色、文字颜色、线条颜色、区域颜色等各种颜色。
10. 省市区域地图示例,内置世界地图、全国地图、省份地图、地区地图,可以精确到县,所有地图全部离线使用。可设置城市的名称、值、经纬度集合。
11. 内置通用浏览器组件,同时支持webkit/webengine/miniblink等内核。提供网页控件示例,演示打开网页和本地网页文件。
12. 支持任意Qt版本、任意系统、任意编译器。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
x
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了