根据IP地址获取经纬度、地址和地域信息的方法及代码
来源:绵阳动力网络公司  时间:2022-02-28  阅读:10

根据IP地址获取经纬度、地址和地域信息的方法及代码

最近在做一个网站建设项目时,客户要求根据电脑的IP地址获取所在的经纬度、地址、地域信息;计算相互之间的距离、路线等功能。获取IP地址的方法有很多,就不做详细介绍了,今天我们和大家一起来分享下用PHP如何来实现上述功能。

要实现上述功能,我们可以借助于地图系统,比如百度地图、高德地图和腾讯地图等系统。今天我们先用腾讯地图来做。

首先我们来看请求方法:

function getLocationInfo($ip,$key){

    //$ip  用户的当前IP地址
    //$key 腾讯地图开发者需要的KEY秘钥,自己去注册一下吧
    //$url 腾讯地图API请求接口地址
    
    $url = 'https://apis.map.qq.com/ws/location/v1/ip?ip='.$ip.'&key='.$key;
    $info = file_get_contents($url);    //GET请求,记住这里必须要用GET哦
    $info = json_decode($info, true);	//将返回数据转JSON

    return $info;   //返回请求结果
}

接着我们来看返回的结果:

array(3) {
  ["ip"]=>
  string(12) "0.0.0.0"			//IP地址
  ["location"]=>
  array(2) {
    ["lat"]=>
    float(00.0000)				//纬度
    ["lng"]=>
    float(000.00000)			//经度
  }
  ["ad_info"]=>
  array(5) {
    ["nation"]=>
    string(6) "中国"				//国家
    ["province"]=>
    string(12) "黑龙江省"		//省
    ["city"]=>
    string(12) "哈尔滨市"		//市
    ["district"]=>
    string(9) "道里区"			//区
    ["adcode"]=>
    int(000000)					//地址码
  }
}

这样就我们获取了IP地址的在的经纬度信息了。至于计算距离或者根据经纬度获取当前详细地址就很简单了,就不再做详细介绍。

接下来就显示所在城市信息了:

//根据现有IP地址获取其地理位置(省份,城市等)的方法

function GetIpLookup($ip = ''){  
  if(empty($ip)){  
    return '请输入IP地址'; 
  }  
  $res = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip);  
  if(empty($res)){ return false; }  
  $jsonMatches = array();  
  preg_match('#\{.+?\}#', $res, $jsonMatches);  
  if(!isset($jsonMatches[0])){ return false; }  
  $json = json_decode($jsonMatches[0], true);  
  if(isset($json['ret']) && $json['ret'] == 1){  
    $json['ip'] = $ip;  
    unset($json['ret']);  
  }else{  
    return false;  
  }  
  return $json;  
} 
$ipInfos = GetIpLookup('123.125.114.144'); //baidu.com IP地址  //ipInfos 是一个数组
var_dump($ipInfos);

这里我们使用了新浪的IP库来做判断,你也可以换成其它的IP库使用。

好了,以上两段代码就可以很方便的实现我们的查询的信息内容了,如果你看了后有所帮助的话记得收藏哦!

 
  • 电话咨询

  • 0816-2318288