彩票走势图

Qt开发示例 (QML):地图

翻译|使用教程|编辑:鲍佳佳|2021-08-17 09:56:12.153|阅读 632 次

概述:示例演示了如何使用MapItemView在地图上搜索和显示地点列表。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Qt是一个跨平台框架,通常用作图形工具包,它不仅创建CLI应用程序中非常有用。而且它也可以在三种主要的台式机操作系统以及移动操作系统(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式设备,Android(Necessitas)和iOS的端口上运行。现在我们为你提供了免费的试用版。

下载Qt6最新试用版

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.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()将被调用以响应用户操作,例如按钮单击。

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”或者扫描下方二维码即可加入

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP