前言
从此文章开始将进行一系列的QtLocation 开发的教程,由于在国内几乎很难找到用Qtlocation做地图应用开发文章,而且本身这段时间也在做这块的内容,就想记录一下过程,另一个也是希望能对其它想使用Qt原生地图做应用的同学有所帮助
本教程默认大家会C++/qt/qml的基本使用,还有了解gis开发的基础
个人目前能力有限,如有错误或不足的,希望大家留言提醒,以便更正
一、为什么要使用QtLocation
目前市面上能在c++平台做地图开发的应用有很多,如鼎鼎大名的ArcGis, osgearth,qgis.或者是基于浏览器做在线地图开发,这种国内地图都可以,还有cesium等等
我选择Qtlocation的原因是项目本身是基于Qt做的,能用Qt所有的功能,就不打算增加其它库,特别是UI这块,常常因为其它库的渲染与Qt自身渲染不同,导致不能进行控件叠加等问题,…另一个是Qtlocation所占资源小,在性能比较低的机器上可以完美运行.
如果不使用3D地图,只使用平面地图,只是需要在地图进行一些图标的绘制,地理信息的获取等,且工程是使用的quick界面,那使用qtlocation是绝佳的选择
二、参考资料
- QGC:http://qgroundcontrol.com/ 源码:https://github.com/mavlink/qgroundcontrol
- github 上发现的高德地图插件:https://github.com/SindenDev/amap
- Qt 官方文档及案例:https://doc.qt.io/qt-5/qtlocation-index.html
- Qt 官方Qtlocation 各插件源码
遇到问题最有效的方法是看已有项目的源码和官方文档,官方案例,各搜索工具只能是辅助
二、使用方法
1.显示一个地图
新建一个quick应用
其中pro文件中需包含以下内容
QT += quick positioning location
main.qml
import QtQuick 2.0
import QtQuick.Window 2.14
import QtLocation 5.6
import QtPositioning 5.6
Window {
visible: true
width: 800
height: 600
Plugin {
id: mapPlugin
name: "esri" // "mapboxgl", "esri", ...
}
Map {
anchors.fill: parent
plugin: mapPlugin
center: QtPositioning.coordinate(59.91, 10.75) // Oslo
zoomLevel: 14
}
}
运行后即可以简单的显示地图:
2.Qt location 自带插件介绍
其中esri支持卫星图
Qt 官方有个案例:Map Viewer(QML)可以查看各个插件,直接在Qt Creator 里搜索,运行即可,可以选择显示各个插件,同时各个插件也可以选择他们的图源
结束
本文章先对Qt 地图有一个大概的了解,后续将详细介绍地图操作及绘图,后续还会讲到如何做一个对天地图的支持,其中包含如何显示卫星图与信息标注的叠加