技術分享 | 新手入門-帶你使用Qt實現離線緩存地圖

file 相信很多使用Qt做界面開發的相關的人員都會想在自己得交互界面中使用地圖,雖然百度、高德地圖得功能都非常完善,但是使用Qt調用起來卻有些不方便,並且離線地圖更是需要一系列瓦片才能實現。這時就可以用到Qt中得QtLocation模塊了,由Qt5.4發佈技術預覽版,到Qt5.6基本成熟。但很多同志如果不搞地圖應用,可能用了很久的Qt都不知道有這個模塊。QtLocation依賴於QtPositioning模塊,提供定位機制、地圖和導航技術、位置搜索等功能的QML和C++的API。目前而言,使用QtLocation實現地圖得案例有輕量級的谷歌地圖源插件GoogleMaps和重量級的地面站軟件QGroundControl。

操作步驟:

1.在qmake當中在.pro文件中添加:

QT += positioning location

2.如果是cmake那麼在CMakeList.txt中添加如下內容:

find_package(Qt5 …… Quick)

set(……Qt5::Quick)

3.首先我們需要加載QtLocation模塊,添加下列語句到qml文件當中

import QtPositioning 5.15

import QtLocation 5.15

因爲QtLocation QML模塊依賴於上QtPositioning QML模塊。因此,每個導入QtLocation模塊的應用程序也必須始終導入QtPositioning模塊。

4.繼續完善qml文件

import QtQuick 2.0 import QtLocation 5.3 import QtPositioning 5.0 Item { Map { id: item_map anchors.fill: parent // anchors.topMargin: 20 plugin: Plugin { locales: "zh-CN" name: "esri" } activeMapType: supportedMapTypes[1] center: QtPositioning.coordinate(30.67, 104.04) zoomLevel: 17 maximumZoomLevel: 19 minimumZoomLevel: 1 color: "green"
} }

5.如果程序是qt_ros交互,即cmake編譯,如果遇到報錯:

module "QtPositioning" is not installed

那麼可以在終端使用運行下列命令來解決

sudo apt-get install qml-module-qtpositioning

6.將qml顯示出來有兩種方式, 一種以QWidget,另外一種以QQuickView顯示。 使用QWidget即使用QQuickWidget控件實現,這種方式交互非常單一不是非常方便。如果使用QQuickView方式,那麼qml與C++的交互方式就比較友好,相互調用也十分方便,這兩種使用網上都能找到方式,這裏就不詳細介紹使用方式了。 file

總結: 經過了上述的操作,真實地理地圖應該都顯示出來了,這種方式顯示地圖的方式也十分方便快捷。當然這只是最簡單的顯示,沒有任何交互,在Qt的官方文檔中關於這個模塊還有着非常豐富的API,可以通過這些API實現更多有趣的功能。

  • End -

技術發展的日新月異,阿木實驗室將緊跟技術的腳步,不斷把機器人行業最新的技術和硬件推薦給大家。看到經過我們培訓的學員在技術上突飛猛進,是我們培訓最大的價值。如果你在機器人行業,就請關注我們的公衆號,我們將持續發佈機器人行業最有價值的信息和技術。 阿木實驗室致力於爲機器人研發提供開源軟硬件工具和課程服務,讓研發更高效!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章