有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

地理定位在Java中获取用户当前的纬度和经度

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


共 (2) 个答案

  1. # 1 楼答案

    一般来说,你不能对计算机这样做的原因是,当你想到它时,计算机通常是非常明显的:

    • 计算机一般没有内置的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)

  2. # 2 楼答案

    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的总结