在Java中获取地理位置的最佳方式 [已关闭]
2022-09-02 01:46:40
在Java中获取地理位置的最佳方法是什么(如果可能的话,可以自由)?
更新:不是从 GPS 设备。基本上火狐3.5 / HTML 5是如何做到的
在Java中获取地理位置的最佳方法是什么(如果可能的话,可以自由)?
更新:不是从 GPS 设备。基本上火狐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");
结果将显示在纬度、经度、城市、地区和国家/地区代码属性的“位置”对象中。
请查看其准确性估计值,以确保其满足您项目的需求: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网络服务,然后Google Webservice将返回近似坐标。
顺便说一句,此过程不涉及Java。要从Firefox / Chrome获取地理位置,您只需调用一些JavaScript方法即可。(我真的希望你知道Java与JavaScript不同)