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

26

有没有免费的Java方式可以获取地理位置信息?

更新:不是来自GPS设备。基本上,像Firefox 3.5 / HTML 5一样实现的方法。


你具体是什么意思?你想从GPS设备中检索坐标,还是根据IP地址查找位置,或者在数据库中查找某些目的地的坐标,或者其他什么? - Wolfgang
这是为需要离线处理的桌面应用程序吗?还是可以使用Web服务? - Thomas Owens
2个回答

19

使用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>

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");
结果将在Location对象的纬度、经度、城市、区域和国家/地区代码属性中。请查看它们的准确性估计,以确保它满足您项目的需求:http://www.maxmind.com/en/geolite_city_accuracy

1

如果你想知道Firefox 3.5(或Google Chrome)如何获取地理位置信息,请看这里:Google/Firefox Geolocation API的工作原理

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

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


这个答案中添加的链接已经失效了。 - SpringLearner
@SpringLearner:谢谢!我应该把我的博客重新上线。同时,我更新了 Wayback Machine 的链接。 - Denilson Sá Maia
嗨@DenilsonSáMaia,我想使用以IP地址为参数的Java方法来实现完全相同的解决方案。您能提供一些指针吗?如果您能够提供JavaScript实现,那也会很有帮助。 - Shashi Ranjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接