我有两个 GPS 设备,一个来自 NMEA,一个来自 Garmin。我想知道是否可以使用其中任何一个为浏览器(Chrome、Firefox)提供更准确的位置。
我拥有的网络应用程序在带有集成 GPS 的平板电脑上运行良好,但在笔记本电脑上运行不佳。
答案1
为了使其在笔记本电脑上运行,您需要获得“整个堆栈”的支持,如下所示:
- 驾驶员支持- 笔记本电脑必须具有能够识别 GPS 设备并与其交互的硬件驱动程序,无论是通过 USB 还是其他协议。驱动程序通常在内核中实现,但如果您确实知道自己拥有正确的驱动程序,那么实现对您来说并不重要。
- 使用驱动程序的用户空间 API- 无论驱动程序接口是什么或如何工作,用户空间堆栈都必须知道硬件 GPS 设备的存在,并且必须知道如何通过编程接口访问硬件。如果您有 GPS 设备的驱动程序,那么您可能还拥有它的用户空间编程接口……但您有下一部分吗?
- 使用用户空间 API 的应用程序- 您的客户端应用程序(可能是网络浏览器)必须了解用户空间驱动程序 API,并能够有效地使用它来支持位置服务。
- 应用程序必须支持与查询它的 Web 应用程序兼容的位置协议-- 端点地理定位的 W3C 标准是W3C 地理位置 API所以这是一个很好的起点。浏览器必须基本理解,当网络服务器请求位置时,浏览器“理解”该请求,并知道它需要从用户那里获取地理位置数据。
- 应用程序必须将驱动程序作为受支持的后端集成到位置协议中。
因此你最终会得到类似这样的技术栈:
内核驱动程序 <--> 用户空间驱动程序/库 <--> 特定于您设备的用户空间库或框架的 Web 浏览器地理位置后端 <--> 可理解基于 HTTP 的地理位置请求 API(例如 W3C 地理位置 API)的 Web 浏览器协议层。
目前我认为最有可能已经可用的部分是:
- 设备的内核驱动程序和用户空间库应由制造商提供。
- Chrome 和 Firefox 长期支持 W3C Geolocation API。
可能缺少的部分是“Web 浏览器地理位置后端”。
也就是说,我怀疑Firefox/Chrome 实际上支持 GPS 设备的硬件集成。目前我只知道一种实现:Firefox 支持导航定位设备。因此,如果您的设备集成了 GPSd 中间件,并且您的操作系统是受支持的操作系统之一,那么这是可能的。否则,很可能不行(尽管如果制造商决定支持整个堆栈(包括浏览器插件),情况可能会有所不同)。