PHP 获取国内IP地址对应的位置信息[百度地图API]
本文版权归作者(苦瓜糖水)所有,禁止转载至其他网站,以致污染搜索环境。
本文通过调用百度地图 Web服务API http://lbsyun.baidu.com/index.php?title=webapi 实现国内获取IP地址对应的位置信息。
主要调用其中的“高精度IP定位API”与“Geocoding API”实现主要功能:
高精度IP定位API:http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip
用途:用于获取IP地址对应的经纬度信息
Geocoding API:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
用途:用于获取经纬度对应的地点信息
1 function getAddressByBaidu($ip){ 2 static $ak = '你的百度地图AK码'; 3 /* 获取IP地址对应的经纬度信息 - 高精度IP定位API 4 ==================================================*/ 5 $url = "https://api.map.baidu.com/highacciploc/v1?qcip=$ip&qterm=pc&ak=$ak&coord=bd09ll"; 6 $ch = curl_init(); 7 curl_setopt($ch, CURLOPT_URL, $url); 8 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 9 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 10 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 11 $output = curl_exec($ch); 12 if (curl_errno($ch)) { 13 echo 'CURL ERROR Code: ' . curl_errno($ch) . ', reason: ' . curl_error($ch); 14 } 15 curl_close($ch); 16 $info = json_decode($output, true); 17 $lat = $info['content']['location']['lat']; 18 $lng = $info['content']['location']['lng']; 19 /* 通过经纬度获取地点信息 - Geocoding API 20 ==================================================*/ 21 $url = "http://api.map.baidu.com/geocoder/v2/?location=$lat,$lng&output=json&pois=1&ak=$ak"; 22 $ch = curl_init(); 23 curl_setopt($ch, CURLOPT_URL, $url); 24 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 25 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 26 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 27 $output = curl_exec($ch); 28 if (curl_errno($ch)) { 29 echo 'CURL ERROR Code: ' . curl_errno($ch) . ', reason: ' . curl_error($ch); 30 } 31 curl_close($ch); 32 $info = json_decode($output, true); 33 return $info; 34 }