翻譯|使用教程|編輯:鮑佳佳|2021-08-17 09:56:12.153|閱讀 632 次
概述:示例演示了如何使用MapItemView在地圖上搜索和顯示地點(diǎn)列表。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Qt是一個(gè)跨平臺(tái)框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應(yīng)用程序中非常有用。而且它也可以在三種主要的臺(tái)式機(jī)操作系統(tǒng)以及移動(dòng)操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設(shè)備,Android(Necessitas)和iOS的端口上運(yùn)行。現(xiàn)在我們?yōu)槟闾峁┝嗣赓M(fèi)的試用版。
Qt組件推薦:
Places Map 示例演示了如何使用MapItemView在地圖上搜索和顯示地點(diǎn)列表。
該示例顯示當(dāng)前位置的地圖,如果沒有可用位置,則使用布里斯班/澳大利亞。隨后,搜索與術(shù)語“比薩”匹配的地方,并在地圖上顯示每個(gè)結(jié)果。
要從Qt Creator中運(yùn)行這個(gè)例子,請(qǐng)打開Welcome模式,從Examples中選擇這個(gè)例子。更多信息,請(qǐng)?jiān)L問構(gòu)建和運(yùn)行一個(gè)例子。
要編寫將在地圖上顯示地點(diǎn)的 QML 應(yīng)用程序,我們首先進(jìn)行以下導(dǎo)入聲明。
import QtQuick 2.0 import QtPositioning 5.5 import QtLocation 5.6
實(shí)例化一個(gè)Plugin實(shí)例。該插件實(shí)際上是從那里的地方是從來源后端。根據(jù)選擇的插件,可能需要一些強(qiáng)制參數(shù)。在這種情況下,選擇了沒有任何強(qiáng)制參數(shù)的OSM 插件。
Plugin { id: myPlugin name: "osm" // "mapboxgl", "esri", ... //specify plugin parameters if necessary //PluginParameter {...} //PluginParameter {...} //... }
接下來,我們實(shí)例化一個(gè)PlaceSearchModel,我們可以使用它來指定搜索參數(shù)并執(zhí)行地點(diǎn)搜索操作。出于說明目的,一旦模型構(gòu)建完成,就會(huì)調(diào)用update()。通常,update()將被調(diào)用以響應(yīng)用戶操作,例如按鈕單擊。
daimaproperty variant locationOslo: QtPositioning.coordinate( 59.93, 10.76) PlaceSearchModel { id: searchModel plugin: myPlugin searchTerm: "Pizza" searchArea: QtPositioning.circle(locationOslo) Component.onCompleted: update() }
地圖是通過使用地圖類型來顯示的,在里面我們聲明了MapItemView并提供了搜索模型和一個(gè)委托。我們使用了一個(gè)內(nèi)聯(lián)的委托,并且假定每個(gè)搜索結(jié)果都是PlaceSerachesult類型的。因此,我們假定我們總是可以訪問地方角色,其他搜索結(jié)果類型可能沒有地方角色。
Map { id: map anchors.fill: parent plugin: myPlugin; center: locationOslo zoomLevel: 13 MapItemView { model: searchModel delegate: MapQuickItem { coordinate: place.location.coordinate anchorPoint.x: image.width * 0.5 anchorPoint.y: image.height sourceItem: Column { Image { id: image; source: "marker.png" } Text { text: title; font.bold: true } } } } }
最后, aPositionSource用于將地圖重置為當(dāng)前位置并在新區(qū)域中查找“披薩”地點(diǎn)。位置信息每 2 分鐘更新一次,如果新位置距離上一個(gè)比薩搜索區(qū)域超過 500 米,則重新觸發(fā)位置搜索。
PositionSource { id: positionSource property variant lastSearchPosition: locationOslo active: true updateInterval: 120000 // 2 mins onPositionChanged: { var currentPosition = positionSource.position.coordinate map.center = currentPosition var distance = currentPosition.distanceTo(lastSearchPosition) if (distance > 500) { // 500m from last performed pizza search lastSearchPosition = currentPosition searchModel.searchArea = QtPositioning.circle(currentPosition) searchModel.update() } } }
====================================================
想要了解或購買Qt正版授權(quán)的朋友,歡迎
Qt技術(shù)交流群現(xiàn)已開通,QQ搜索群號(hào)“765444821”或者掃描下方二維碼即可加入
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: