地图与导航 (QML)
“地图与导航”提供了QtQuick 用户界面类型,用于在地图上显示地理信息,并允许用户与地图叠加对象及地图显示本身进行交互。它还包含用于地理编码(根据街道地址查找地理坐标)和导航(包括驾车和步行路线)的实用工具。
要执行导航,我们需要从起点到目的地的route。这些路线由路段组成,其中每个routeSegment 都可以视为一个导航子任务;例如,“行驶100米”或“左转”。每个路段的起始点和终点都是一个路点,即旅程中的一段。
该 API 的典型用例是用户搜索特定类型的场所,例如餐厅;用户在地图应用中输入搜索词后,系统会显示设备“附近”的餐厅结果列表。 随后,应用程序可利用根据可能有助于或阻碍行程的环境特征所优化的路线,引导用户导航至选定的目的地。导航过程中,系统会通过当前位置实时监测用户的行进进度。
这些类型基于QML 定位 API 中的 API 概念和类型构建。有关地图和导航类型的更实操性介绍,请参阅地图和导航教程。
地图
显示地图
地图的显示通过Map QML类型实现。Map类型通过MapView QML类型支持用户交互。Map对象使用OpenGL (ES)在屏幕上绘制地图,在支持的情况下可实现硬件加速渲染。
关键类型
| Plugin | 基于位置的服务插件提供包括地图数据在内的各类数据,这些数据随后会在 Map 对象中显示。 |
| Map | QtQuick 用于在屏幕上显示地图的项。 |
| MapView | 用于在 Map 上实现平移、轻扫和捏合缩放手势的交互辅助类。 |
请注意,客户端必须在使用 `Map ` 类型之前创建一个 `Plugin ` 对象,才能访问待显示的地图数据。
在地图上放置对象(地图叠加层对象)
地图还可以包含地图叠加对象,这些对象用于在其表面上显示信息。有一组预定义的基本地图叠加对象,此外还可以使用MapQuickItem 类型实现自定义地图叠加对象,该对象可以包含任何标准的QtQuick 项。
关键类型
| MapCircle | 地理圆(所有点均位于距中心点一定距离处),可选边框。 |
| MapRectangle | 一个矩形,其左上角和右下角点被指定为geoCoordinate 类型,可选边框。 |
| MapPolygon | 由任意coordinates 列表组成的多边形。 |
| MapPolyline | 由任意coordinates 列表组成的折线。 |
| MapQuickItem | 将任意QtQuick 项转换为地图叠加对象。MapQuickItem 是用于指定自定义地图叠加对象的启用器。 |
基于地图叠加对象的模型-视图设计
若要根据QtQuick 模型的内容(例如ListModel 项)自动生成地图叠加对象,可使用MapItemView 类型。该类型接受任何地图叠加对象作为其委托,且只能在Map 内创建。
关键类型
| MapItemView | 根据模型提供的数据,将地图叠加层对象填充到地图中。 |
与地图叠加对象的交互
影响地图叠加对象在显示中外观的属性可随时更改,其中许多属性还可用于动画效果。目前尚不支持对基于坐标的地图叠加对象(如MapPolygon 和MapPolyline )进行动画处理。
地理编码——地址到坐标及反向转换
地理编码是指将地理坐标转换为地址,或反之。此类转换通常涉及将源数据发送至服务器,由服务器执行转换并返回结果,尽管某些基于位置的服务提供商(如plugins )可能无需将数据发送至远程服务器即可提供部分地理编码功能。 转换的可用性和准确性通常取决于待转换的位置或地址,因为地球不同区域的地图绘制精度各不相同。
在 QML 中,地理编码查询通过GeocodeModel 类型执行。对于地址到坐标的查询,其query 属性可设置为Address 对象,或设置为包含待搜索地址文本形式的字符串。若要执行反向查询,则可将该属性设置为geoCoordinate 。查询结果将存储在模型的内容中。
键类型
| Plugin | 基于位置的服务插件提供包括地理编码转换结果在内的数据,这些数据通过GeocodeModel 向客户端公开。 |
| GeocodeModel | 向插件查询地理编码转换结果,并通过模型中的索引提供对结果的访问。 |
| Address | 用于地理编码查询和结果中的结构化地址。 |
请注意,客户端在使用GeocodeModel 对象之前,必须先创建一个Plugin 对象。这将启用对地理编码转换服务的访问,从而获取要显示的数据。
路线规划与导航
路线规划是指确定地图上从一个点到另一个点的可导航路径。 假设有一张地图,其中包含有助于或阻碍导航的特征(如桥梁、水道等),则可以构建出一系列构成行程的路段。如果这些routeSegment是简单的,那么我们可以在路段之间的连接点(即routeManeuver)上添加导航信息。
关键类型
| route | 待导航的完整路径。 |
| routeSegment | 路线的各个组成部分。 |
| routeManeuver | 连接路段的导航信息。 |
| RouteModel | 向后端发送请求以获取路线信息的手段。 |
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.