是否可以在计算机上使用 GPS 设备向浏览器提供位置信息?

use*_*740 8 browser gps geolocation

我有两台 GPS 设备,一台来自 NMEA,另一台来自 Garmin。我想知道是否可以使用它们中的任何一个来为浏览器(Chrome、Firefox)提供更准确的位置。

我的网络应用程序在带有集成 GPS 的平板电脑上运行良好,但不适用于笔记本电脑。

all*_*tic 6

为了在笔记本电脑上实现这一点,您需要“整个堆栈”支持,如下所示:

  • 驱动程序支持- 笔记本电脑必须具有硬件驱动程序,可以识别 GPS 设备并与之交互,无论是通过 USB 还是其他协议。驱动程序通常在内核中实现,但如果你知道你有正确的驱动程序,那么实现对你来说并不重要。
  • 使用驱动程序的用户空间 API - 无论驱动程序接口是什么或它如何工作,用户空间堆栈必须知道硬件 GPS 设备的存在,并且必须知道如何通过编程接口访问硬件。如果你有 GPS 设备的驱动程序,那么你可能也有一个用户空间编程接口......但是你有下一部分吗?
  • 使用用户空间 API 的应用程序 - 您的客户端应用程序(可能是 Web 浏览器)必须了解用户空间驱动程序 API,并且能够有效地使用它来支持定位服务。
  • 应用程序必须支持与查询它的 Web 应用程序兼容的位置协议——端点地理定位的 W3C 标准是W3C 地理定位 API,因此这是一个很好的起点。浏览器必须基本上理解,当 Web 服务器请求位置时,浏览器“理解”该请求足够好,知道它需要从用户那里获取地理定位数据。
  • 应用程序必须将驱动程序集成到位置协议中作为受支持的后端

所以你最终会得到一个类似这样的技术栈:

内核驱动程序 <--> 用户空间驱动程序/库 <--> 特定于您设备的用户空间库或框架的 Web 浏览器地理定位后端 <--> 了解基于 HTTP 的地理定位请求 API 的 Web 浏览器协议层,例如 W3C 地理定位 API。

现在我认为最有可能已经可用的部分是:

  • 设备的内核驱动程序和用户空间库应由制造商提供。
  • 长期以来,Chrome 和 Firefox 都支持 W3C Geolocation API。

可能缺少的部分是“Web 浏览器地理定位后端”。

也就是说,我怀疑Firefox/Chrome 是否真的有对 GPS 设备的硬件集成支持。我现在只知道一种实现:Firefox 支持GPSd设备。因此,如果您的设备与 GPSd 中间件集成,并且您的操作系统是受支持的操作系统之一,则有可能。否则,可能不会(尽管如果制造商决定支持整个堆栈,包括浏览器插件,则可能会有所不同)。