有没有免费的Java方式可以获取地理位置信息?
更新:不是来自GPS设备。基本上,像Firefox 3.5 / HTML 5一样实现的方法。
有没有免费的Java方式可以获取地理位置信息?
更新:不是来自GPS设备。基本上,像Firefox 3.5 / HTML 5一样实现的方法。
使用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。如果你想知道Firefox 3.5(或Google Chrome)如何获取地理位置信息,请看这里:Google/Firefox Geolocation API的工作原理
基本上,Firefox 3.5(以及Chrome)所做的就是获取附近Wi-Fi网络列表,并使用JSON将该列表发送到Google webservice,然后返回大致坐标。
顺便说一下,这个过程中没有涉及Java。要从Firefox/Chrome获取地理位置,只需调用几个JavaScript方法。(我真的希望你知道Java和JavaScript是不同的)