【问题标题】:Get user's current latitude and longitude in Java在Java中获取用户当前的经纬度
【发布时间】:2013-03-28 15:42:58
【问题描述】:

我看到这个问题在这里问了很多关于 Java 的问题,但我看到的每一个问题似乎都以 Android 为中心:当用户来自计算机而不是来自计算机时,我需要一种方法来获取他们当前的纬度和经度移动设备。我知道这在 C# 中是可行的,但我不确定如何在 Java 中做到这一点。我以前使用过 Google Maps 的 restful API:但是,它需要一个地址作为输入,而我只想获取用户当前的纬度/经度,我觉得这比调用 Google 更简单。任何帮助将不胜感激。

【问题讨论】:

    标签: java geolocation location


    【解决方案1】:

    您不能对一般计算机执行此操作的原因是,一般计算机在您考虑时非常明显:

    • 计算机通常没有内置 GPS 设备。所以计算机不能根据它告诉你在哪里。

    • 另一种方法是尝试将 IP 地址映射到物理位置。这是不可靠的,因为 IP 地址从根本上与物理位置无关。通过 IP 地址进行地理定位仅适用于用户的网络服务提供商能够(并且愿意)向第三方提供位置信息的情况。在实践中,这些信息非常“零散”。另一个问题是您需要依赖外部“地理定位服务”来获取信息。它不是标准 Java 平台的一部分。

    • 还有另一种基于地理定位 WiFi 热点的方法1。此链接更详细:http://gps.about.com/od/glossary/g/wifi_position.htm。但是,这取决于用户的 WiFi 提供商注册他们的纬度/经度,以及用户打开 WiFi。


    1 - 我记得一位从事 iPhone 开发的同事提到,当 WiFi 打开时,他在 iPhone(带 GPS)上获得了更准确的地理位置。

    【讨论】:

    • 我很难找到代码,但我几乎可以肯定我大约一年前用 asp.net 和 C# 编写了一个网页,它会打开并告诉你当前的纬度/经度.我特别记得注意到,一旦我连接到 WiFi,我就能够更准确地了解我所在的位置——我肯定是从电脑上获取我的位置,一旦 WiFi 打开,它就非常准确。你知道这是怎么做到的吗?
    • 除了 Stephen C 的描述之外,我想添加拍摄位置的 Google 设备,将其添加到 Wi-Fi 设备附近的数据库 MAC 地址(物理地址)以识别位置。但实际上识别用户位置的最佳方法是 GPS。如果这是公共信息,您只能通过其他方式获取国家/地区、企业位置。
    【解决方案2】:

    Java 目前不提供通用的独立于平台的 API 来获取位置。但是,可能存在特定于平台的方法。

    桌面计算机上的大多数实现将通过 IP 地址进行地理定位;您可以通过 Java (Best way to get geo-location in Java) 使用这些服务。但是,如果操作系统提供更通用的 API,它可以利用任何 GPS 硬件。

    对于 Mac 操作系统,https://superuser.com/questions/346302/is-there-a-way-to-access-os-x-location-services-from-the-command-line

    这里有Gnome-provided library 的详细信息,还有plans for support in KDE 的文章。

    【讨论】:

    • 谢谢,这似乎是我要找的。我来看看 Skyhook,它似乎是一个不错的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多