4

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

4

2 回答 2

4

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

  • 计算机一般没有内置 GPS 设备。因此,计算机无法告诉您基于此的位置。

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

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


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

于 2013-04-06T05:21:24.280 回答
4

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

台式机上的大多数实现将通过 IP 地址进行地理定位;您可以从 Java 中使用这些服务(在 Java 中获取地理位置的最佳方式)。但是,如果操作系统提供更通用的 API,它可以利用任何 GPS 硬件。

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

这里有Gnome 提供的库的详细信息,还有KDE 支持计划的记录。

于 2013-04-06T10:50:58.273 回答