地图和导航(QML)

地图和导航 提供了用于在地图上显示地理信息和允许用户与地图叠加对象和显示本身交互的 QtQuick 用户界面类型。它还包括用于地理编码(从街道地址查找地理坐标)和导航(包括驾驶和步行方向)的实用程序。

要执行导航,我们需要从起点到目的地的 路线。这些路线由段组成,其中每个 routeSegment 可以视为一个导航子任务;例如,“行驶100米”,或“向左转”。每个段的开始和结束是一个 waypoint,即旅程的一部分。

API 的典型用例是用户寻找特定类型的场所,例如餐馆;用户在地图应用中输入搜索字符串,并呈现设备附近餐馆的结果列表。然后,可以使用根据环境中可能有助于或阻碍旅程的特性进行优化的路线导航到所选目的地。然后,通过当前位置的方式跟踪用户的进度。

这些类型基于 QML Positioning API 中的概念和类型。有关地图和导航类型的更深入介绍,请参阅 地图和导航教程

地图

显示地图

显示地图是通过使用 Map QML 类型来完成的。Map 类型支持通过 MapView QML 类型进行用户交互。Map 对象使用 OpenGL (ES) 在屏幕上绘制地图,允许在可用的情况下进行硬件加速渲染。

主要类型

插件基于位置的服务插件提供包括地图数据在内的数据,然后在该地图对象中显示。
地图QtQuick 项目用于在屏幕上显示地图。
MapView用于在地图上执行平移、快速翻动和捏合缩放手势的交互辅助器。

请注意,在创建 Plugin 对象之前,必须创建一个 Map 类型,以便能够访问显示所需的地数据。

在地图上放置对象(地图叠加对象)

地图还可以包含地图叠加对象,用于在其表面上显示信息。有一组基本预定义的地图叠加对象,以及使用 MapQuickItem 类型实现自定义地图叠加对象的能力,它可以包含任何标准的 QtQuick 项目。

主要类型

MapCircle地理圆(距离中心点一定距离的所有点),可选带有边框。
MapRectangle指定为坐标类型的右上角和右下角的点矩形,可选带有边框。
MapPolygon由任意列表的坐标构成的多边形。
MapPolyline由任意列表的坐标构成的折线。
MapQuickItem将任意QtQuick Item转换为地图叠加对象。 MapQuickItem 是指定自定义地图叠加对象的启用者。

带有地图叠加对象的面板-视图设计

要基于QtQuick 模型(例如ListModel项)的内容自动生成地图叠加对象,可以使用MapItemView类型。它可以接受任何地图叠加对象作为其代理,并且只能在Map中创建。

主要类型

MapItemView根据模型提供的数据填充地图中的地图叠加对象。

与地图叠加对象的交互

影响地图叠加对象在显示中外观的属性可以在任何时候更改,并且许多也可以用于动画。目前尚不支持基于坐标的地图叠加对象(如MapPolygonMapPolyline)的动画。

地理编码 - 地址到坐标及其相反

地理编码是将地理坐标转换为地址,或反之。这种转换通常涉及将源数据发送到服务器,然后服务器执行转换并返回结果,尽管某些基于位置的服务提供者插件可能能够在不将数据发送到远程服务器的情况下提供某些地理编码功能。翻译的可用性和准确性通常取决于被翻译的位置或地址,因为地球的不同地区映射到的精确程度不同。

在QML中执行地理编码查询使用GeocodeModel类型。对于地址到坐标查询,其query属性可以设置为Address对象或包含要搜索的地址文本形式的字符串。要执行反向,可以将相同的属性设置为坐标。结果将在模型的内容中提供。

主要类型

插件基于位置的服务插件提供包括地理编码翻译结果在内的数据,这些数据通过GeocodeModel暴露给客户端。
GeocodeModel查询插件进行地理编码翻译,并通过模型中的索引提供对结果的访问。
Address用于查询和地理编码结果的结构的地址。

请注意,在使用GeocodeModel对象之前,客户端必须创建Plugin对象。这将启用访问地理编码翻译服务以及显示所需的数据。

路线和导航

路由是在地图上从一个点到另一个点的可导航路径的确定。给定一张知道有助于或阻碍导航的特征,如桥梁、水道等的地图,可以构建出构成旅途的一系列段。如果这些路由段很简单,我们就可以在段之间的连接点添加导航信息,即路线操纵

主要类型

路由整个可导航路径。
路由段路线的个别组成部分。
路线操纵连接段的导航信息。
RouteModel在后台发出请求以提供路线信息的方法。

© 2024 Qt公司有限公司。本文档中的文档贡献属于其各自所有者的版权。本文档根据由自由软件开发基金会发布的GNU自由文档许可协议第1.3版许可。Qt及其相应标志是芬兰及/或其他国家的Qt公司商标。所有其他商标均为其各自所有者的财产。