在Java中获取用户当前的经度和经度

时间:2013-04-06 05:10:52

标签: java geolocation location

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

2 个答案:

答案 0 :(得分:4)

一般情况下,您无法对计算机执行此操作的原因是,当您考虑计算机时,计算机通常非常明显:

  • 计算机通常没有内置GPS设备。所以计算机无法告诉你基于此的地方。

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

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


1 - 我记得有一位同事正在进行iPhone开发,他提到当WiFi开启时,他在iPhone(带GPS)上获得了更准确的地理定位。

答案 1 :(得分:4)

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

桌面计算机上的大多数实现都将通过IP地址进行地理定位;您可以使用Java(Best way to get geo-location in 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-provided library的详细信息,以及plans for support in KDE的详细说明。