Qt Location
Qt Location 模块可帮助您利用OpenStreetMap等主流位置服务提供商提供的数据来创建地图解决方案。
Qt Location API 使您能够:
- 访问并展示地图数据。
- 支持在地图的特定区域上进行触控手势操作。
- 查询特定地理位置和路线。
- 在地图上叠加额外图层,例如折线和圆形。
- 搜索地点及相关图片。
使用该模块
QML API
要使用这些类型,请在您的.qml 文件中添加以下导入语句:
import QtPositioning
import QtLocation注意:许多 Qt Location QML 模块 API 都使用了来自Qt Positioning 模块的类型。例如,要将坐标定义为地图中心,就需要使用来自Qt Positioning 模块的类型。
C++ API
对于 C++ 项目,请包含适用于当前用例的头文件;例如,使用路线功能的应用程序可使用:
#include <QGeoRoute>要使用 Qt 模块的 C++ API,需要与该模块库进行链接,可以是直接链接,也可以通过其他依赖项间接链接。包括CMake和qmake 在内的多种构建工具都对此提供了专门支持。
使用 CMake 构建
使用find_package() 命令在Qt6 包中定位所需的模块组件:
find_package(Qt6 REQUIRED COMPONENTS Location)
target_link_libraries(mytarget PRIVATE Qt6::Location)更多详细信息,请参阅“使用 CMake 构建”概述。
使用 qmake 构建
要配置模块以便使用 qmake 进行构建,请在项目的 .pro 文件中将该模块作为QT 变量的值添加:
QT += location子模块
该 API 分为多个子模块,这些子模块针对特定用途提供了 QML 和 C++ 接口。它们主要专注于地图和地点信息。所需的位置数据可通过QtPositioning 模块获取。
地点
“地点”子模块是“定位”功能的自然补充,提供有关兴趣点(POI)的地理数据源。除了来源信息外,该 API 还提供有关兴趣点的位置、大小及其他相关信息。地点 API 还可以检索与地点相关的图片、评论及其他内容。
地图与导航
该模块为地图和导航功能提供了 QML 和 C++ 两种实现方案。C++ 方案提供了用于获取地理编码(根据街道地址查找地理坐标)和导航(包括驾车及步行路线)信息的实用类,而其对应的 QML 方案则提供了用于呈现这些信息的 UI 组件。
示例
API 参考
以下列出了该模块提供的类和 UI 组件,并附有演示其使用方法的示例应用程序:
| QML API Reference | Qt Location API 中 QML 组件的完整列表 |
| 按领域划分的 C++ API 参考 | 按领域分类的Qt Location API中C++类和方法的完整列表 |
| C++ API Reference | Qt Location API 中 C++ 类和方法的完整列表 |
插件参考与参数
有关插件的信息、使用注意事项,以及可用于影响其行为的参数。
提供一张空地图,旨在作为地图项叠加层的背景。 | |
使用 OpenStreetMap 及相关服务。 |
实现新后端和移植
面向系统集成商和分销商,提供有关将Qt Location 部署到新平台的相关信息。
| GeoServices | 有关Qt Location GeoServices 插件的信息 |
| 地点 | 面向地点后端实现者的信息 |
| API 变更 | 关于从 Qt 5 移植到 Qt 6 的信息 |
许可证
Qt Location 由The Qt Company 提供商业许可。此外,它还遵循GNU 较宽松通用公共许可证第 3 版或 GNU 通用公共许可证第 2 版。更多详情请参阅Qt 许可。
© 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.