示例演示了如何使用MapItemView在地图上搜索和显示地点列表。
Qt组件推荐:
- QtitanRibbon| 下载试用: 遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
- QtitanChart | 下载试用 :是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。并且支持所有主要的桌面
Places Map 示例演示了如何使用MapItemView在地图上搜索和显示地点列表。

该示例显示当前位置的地图,如果没有可用位置,则使用布里斯班/澳大利亚。随后,搜索与术语“比萨”匹配的地方,并在地图上显示每个结果。
运行示例
要从Qt Creator中运行这个例子,请打开Welcome模式,从Examples中选择这个例子。更多信息,请访问构建和运行一个例子。
本地搜索
要编写将在地图上显示地点的 QML 应用程序,我们首先进行以下导入声明。
import QtQuick 2.0import QtPositioning 5.5import QtLocation 5.6
Plugin { id: myPlugin name: "osm" // "mapboxgl", "esri", ... //specify plugin parameters if necessary //PluginParameter {...} //PluginParameter {...} //...}
接下来,我们实例化一个PlaceSearchModel,我们可以使用它来指定搜索参数并执行地点搜索操作。出于说明目的,一旦模型构建完成,就会调用update()。通常,update()将被调用以响应用户操作,例如按钮单击。
daima
property 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”或者扫描下方二维码即可加入


标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!