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 APIhttp://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 }

 

posted @ 2016-11-20 17:09  苦瓜糖水  阅读(588)  评论(0编辑  收藏  举报