【问题标题】:Node Server Geolocation节点服务器地理位置
【发布时间】:2019-11-22 08:34:56
【问题描述】:

有没有一种方法可以让 Node 服务器在不使用浏览器中的 HTML Geolocation API 的情况下计算出它的准确(即 GPS)位置?它还需要与互联网断开连接,即不依赖于某些外部查找。

在我的情况下,我有一台服务器,它是一台笔记本电脑,没有连接到互联网,并且在一个位置物理移动。当客户端连接到服务器时,服务器需要已经知道它在哪里,客户端可能不在同一个位置。想象一下客户端启动了一张地图并绘制了两个点,一个是服务器的位置,另一个是客户端的位置。

基本上,服务器是否存在与navigator.geolocation.getCurrentPosition 等效的内容?

【问题讨论】:

    标签: node.js geolocation


    【解决方案1】:

    执行此操作的唯一方法是连接一些 GPS 或 GNSS 硬件。之后就很简单了。

    几乎所有这些 GPS/GNSS 装置都显示为串行端口。您可以使用适合您使用的任何系统的任何软件包打开串行端口。从那里开始,使用了一些协议,但 NMEA 是最常见和最容易处理的。 NMEA 数据如下所示:

    $GNRMC,143909.00,A,5107.0020216,N,11402.3294835,W,0.036,348.3,210307,0.0,E,A*31
    

    在本例中,纬度为 51 度,北纬 7.0017737 分,西经 114 度,02.3291611 分。有NPM packages available for parsing

    【讨论】:

    • 此外,您可以在阿里巴巴上找到可接受的 USB GNSS 设备,而且价格不到 15 美元。
    • 谢谢,我认为硬件解决方案就是答案。浏览器可以访问位置似乎很奇怪,但服务器无法访问相同的功能。有一个可以从 C++ 节点插件使用的 Windows 位置 API,但服务器可能会在 Linux 上运行。
    • @TheZapper Geolocation API 由浏览器提供,而不是 V8。您当然可以复制该 API 并为其创建一个原生 Node.js 模块。也许有人已经做出了这样的努力,但我不知道。不过,无论哪种方式,如果您想要准确性,我假设您需要的数据比通过位置 API 提供的数据多。 Geolocation API 可以使用许多数据源(包括基于附近 WiFi 和蜂窝基站的猜测)。如果您直接使用 NMEA,您将获得真正的 GNSS 数据,以及有关准确性的信息。
    【解决方案2】:

    有一种东西叫做基于 IP 的地理位置。它基本上是 IP 地址到联网机器的地理位置的映射。检查这个Medium Article to find some IP Geo location APIs

    【讨论】:

    • 因为我不想通过发布一个建议图书馆的答案来劫持这个,所以我会把它放在这里。它有一个库:npmjs.com/package/geoip-lite
    • 这在未连接到 Internet 时没有用,因为没有公共 IP 地址可供使用。
    • 我确实特别提到了机器没有连接到互联网,所以这不起作用。此外,通常 IP 查找不是很准确,这需要 GPS 准确度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多