← 回到文章

通过IP定位经纬度

由于需要给客户端提交数据接口并且数据中包括经纬度,然而数据库中只存储了IP,于是需要通过IP定位经纬度。 一开始查找是否存在Google API直接将IP转化成经纬度,没有,只有将地址转化成经纬度,开始其它查找,得到方案一和方案二: 【方案一】 使用闭关纪要21.地图人站点的IP查询经纬度和经纬度查询行政区划的服务 地址为: http://dituren-service.appspot.com/services/ip_lookup?c=onIpLookupLoaded&ip=24.24.24.24 其实现思路为:采用IP库实现了通过IP得到一个地址的文字描述之后,再通过Google的地址解析服务去匹配经纬度,调用代码如下:


【方案二】
使用http://www.blueforge.net/map/ 提供的IP地址查询服务
取数据代码如下:
', $matches[1]) . ');';
$str = str_replace('parseFloat', 'floatVal', $str);
eval($str);
print_r($arr);

?>
由于作者是直接给JS用的,所以源地址返回的数据是JS代码,我在这里做了一个替换,将其变为PHP代码。 以上两种方法都是基于Google API,并且在速度和稳定性方面存在极大的隐患 【方案三】 比较好的方案是在本地有一个数据库存储了相关信息,直接取出来, http://www.maxmind.com/ 这个网站提供了这样一个数据库,在其城市级的数据中,我们可以找到经纬度信息,网站提供了各种语言的程序实现,这里就不再多说了。 数据库下载地址: http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz PHP程序下载地址: http://geolite.maxmind.com/download/geoip/api/php/ 方案三存在两个问题: 1、一些数据不全 2、存在一些乱码,特别是城市相关信息
最后更新于 2009-10-02 09:16:55