在Java中获取地理位置的最佳方法

yxk*_*yxk 20 java geolocation

在Java中获取地理位置的最佳方法是什么(尽可能自由)?

更新:不是来自GPS设备.基本上Firefox 3.5/HTML 5是如何做到的

Mar*_*uez 16

一个简单的方法是使用GeoLite(http://dev.maxmind.com/geoip/legacy/geolite/).因为它使用本地数据库,所以不需要Web服务调用,并且对于大量IP的地理编码要快得多.

方法如下:

添加这个Maven工件:

<dependency>
    <groupId>com.maxmind.geoip</groupId>
    <artifactId>geoip-api</artifactId>
    <version>1.2.11</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz下载地理位置数据文件

将文件解压缩到任何文件夹中.然后做:

LookupService cl = new LookupService("/var/geolite/GeoLiteCity.dat",
                    LookupService.GEOIP_MEMORY_CACHE | LookupService.GEOIP_CHECK_CACHE);

Location location = cl.getLocation("some ip address");
Run Code Online (Sandbox Code Playgroud)

结果将位于纬度,经度,城市,区域和countryCode属性中的Location对象中.

请查看其准确性估算,以确保其满足您项目的需求:http://www.maxmind.com/en/geolite_city_accuracy.


Isa*_*ler 6

最大的WiFi 到位数据库可能是SkyHook Wireless,Apple和Google用它们的地理位置.有SDK可用 - 请参阅http://skyhookwireless.com/developers/.

  • 这些天应该使用JNA而不是JNI (3认同)

Den*_*aia 1

如果您想了解 Firefox 3.5(或 Google Chrome)如何获取地理位置,请查看这里:Google/Firefox Geolocation API 的工作原理

基本上,Firefox 3.5(以及 Chrome)所做的就是获取附近 Wi-Fi 网络的列表,并使用 JSON 将该列表发送到 Google Web 服务,然后 Google Web 服务将返回大致坐标。

顺便说一下,这个过程没有Java的参与。要从 Firefox/Chrome 获取地理位置,您只需调用一些 JavaScript 方法。(我真的希望你知道 Java 与 JavaScript 不同)