利用GeoIP数据库及API进行地理定位查询 Java
地理定位查询的的数据库比较多,而且大多都开放一些free的版本
国内的有纯真数据库等,但是他只提供文本的地理位置信息,不提供经纬度数据
当应用到google map时,就不可以了
国外的有MaxMind的GeoIP数据库、IP2Location数据库等,它们提供经纬度数据
在此简单介绍下,MaxMind的GeoIP,此数据库用于国家的查询
首先,在MaxMind官网下载所需资源
GeoIP数据库下载地址:http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
下载后,我们将其解压到e盘
MaxMind提供多种api接口,如:perl, java, python, c, php, c#等
在此我们使用java API
下载地址:http://www.maxmind.com/download/geoip/api/java/
将其导入eclipse等开发环境中即可
也可以将其解压到任意目录,手动编译(
cd source/com/maxmind/geoip/ javac *.java cd - javac *.java
)
在此api中含有例子程序 CountryLookupTest.java
在编译前需要确定,操作系统环境,进行更改
// Uncomment for windowsSystem.setProperty("user.dir", "E:\\");
String dir = System.getProperty("user.dir");
//UncommentforLinux
//String dir = "/usr/local/share/GeoIP";如上,windows中我放在e盘目录下(位置随意),在其中必须加上 System.setProperty("user.dir", "E:\\");
以设的程序搜索路径,不加的话,就是system32下,好像
设置完后即可执行
java CountryLookupTest
查看结果,此数据库只能查到国家
如果,想精确查到城市的话,可以用MaxMind网站的
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz数据库
附例子执行结果:
IT
Italy
UnitedStates
UnitedStates
Colombia
China