WebEngine 组件地图示例[#]

演示了如何处理地理位置请求。

../_images/maps-example.png

地图演示了如何处理从QWebEnginePage 发起的地理位置请求。

地理位置 API 是一个 JavaScript API,web 应用可以使用它来确定用户的物理位置,例如在地图上显示。由于 Qt WebEngine 依赖于 Qt Positioning 模块来驱动此 API,因此需要为目标平台提供一个可行的位置后端。

为了避免意外将位置信息发送给第三方,地理位置请求默认被拒绝。此示例演示了应用程序必须采取的步骤以开始接收这些请求。

注意

在 Windows 11 上,启用设置以允许应用程序访问 Windows 位置服务。在设置应用下,选择“隐私与安全”>“位置”,然后启用“位置服务”、“允许应用访问您的位置”和“允许桌面应用访问您的位置”。

运行示例[#]

要从 Qt Creator 运行示例,打开欢迎模式并从示例中选择示例。有关更多信息,请访问《构建和运行示例》。

代码[#]

示例程序由一个继承自 QMainWindow 的单一类 MainWindow 组成

在构造函数中,我们首先设置 QWebEngineView 为中央小部件

然后我们将 lambda 函数连接到 featurePermissionRequested 信号

每当网页请求使用某些功能或设备时,包括但不限于位置服务、音频捕获设备或鼠标锁定等,都会发射此信号。在此示例中,我们仅处理位置服务的请求。

现在是我们请求用户许可的部分

请注意,问题中包括网站 URI 的主机部分(securityOrigin),以告知用户确切哪个网站将接收他们的位置数据。

我们使用 setFeaturePermission 方法将用户的回答传达给网页。

最后,我们请求 QWebEnginePage 加载可能希望使用位置服务的网页

示例项目 @ code.qt.io