翻譯|使用教程|編輯:鮑佳佳|2021-08-17 09:56:12.153|閱讀 632 次
概述:示例演示了如何使用MapItemView在地圖上搜索和顯示地點列表。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt是一個跨平臺框架,通常用作圖形工具包,它不僅創建CLI應用程序中非常有用。而且它也可以在三種主要的臺式機操作系統以及移動操作系統(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設備,Android(Necessitas)和iOS的端口上運行。現在我們為你提供了免費的試用版。
Qt組件推薦:
Places Map 示例演示了如何使用MapItemView在地圖上搜索和顯示地點列表。
該示例顯示當前位置的地圖,如果沒有可用位置,則使用布里斯班/澳大利亞。隨后,搜索與術語“比薩”匹配的地方,并在地圖上顯示每個結果。
要從Qt Creator中運行這個例子,請打開Welcome模式,從Examples中選擇這個例子。更多信息,請訪問構建和運行一個例子。
要編寫將在地圖上顯示地點的 QML 應用程序,我們首先進行以下導入聲明。
import QtQuick 2.0 import QtPositioning 5.5 import QtLocation 5.6
實例化一個Plugin實例。該插件實際上是從那里的地方是從來源后端。根據選擇的插件,可能需要一些強制參數。在這種情況下,選擇了沒有任何強制參數的OSM 插件。
Plugin { id: myPlugin name: "osm" // "mapboxgl", "esri", ... //specify plugin parameters if necessary //PluginParameter {...} //PluginParameter {...} //... }
接下來,我們實例化一個PlaceSearchModel,我們可以使用它來指定搜索參數并執行地點搜索操作。出于說明目的,一旦模型構建完成,就會調用update()。通常,update()將被調用以響應用戶操作,例如按鈕單擊。
daimaproperty variant locationOslo: QtPositioning.coordinate( 59.93, 10.76) PlaceSearchModel { id: searchModel plugin: myPlugin searchTerm: "Pizza" searchArea: QtPositioning.circle(locationOslo) Component.onCompleted: update() }
地圖是通過使用地圖類型來顯示的,在里面我們聲明了MapItemView并提供了搜索模型和一個委托。我們使用了一個內聯的委托,并且假定每個搜索結果都是PlaceSerachesult類型的。因此,我們假定我們總是可以訪問地方角色,其他搜索結果類型可能沒有地方角色。
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用于將地圖重置為當前位置并在新區域中查找“披薩”地點。位置信息每 2 分鐘更新一次,如果新位置距離上一個比薩搜索區域超過 500 米,則重新觸發位置搜索。
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正版授權的朋友,歡迎
Qt技術交流群現已開通,QQ搜索群號“765444821”或者掃描下方二維碼即可加入
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: