普通IP定位
百度地图 官方文档
用户可以通过该服务,根据IP定位来获取大致位置,适用于对定位精度要求不高的IP请求定位的应用
基本说明:
接口地址:https://api.map.baidu.com/location/ip
返回格式:json
请求方式:get
请求示例:https://api.map.baidu.com/location/ip?ip=xx.xx.xx.xx&ak=您的AK&coor=bd09ll
请求参数说明:
名称 类型 必填 说明
ak string 必填 开发者密钥,可在API控制台申请获得
ip string 选填 用户上网的IP地址,请求中如果不出现或为空,会针对发来请求的IP进行定位
sn string 选填 若用户所用AK的校验方式为SN校验时该参数必填(什么是SN校验?)
coor string 选填 设置返回位置信息中,经纬度的坐标类型
返回参数说明:
名称 类型 说明
address string 详细地址信息
content object 简要地址信息
status string 结果状态返回码
JSON返回示例:
{
	"address": "CN|\u4e0a\u6d77|\u4e0a\u6d77|None|CHINANET|0|0",
	"content": {
		"address_detail": {
			"province": "\u4e0a\u6d77\u5e02",
			"city": "\u4e0a\u6d77\u5e02",
			"district": "",
			"street": "",
			"street_number": "",
			"city_code": 289
		},
		"address": "\u4e0a\u6d77\u5e02",
		"point": {
			"y": "3642780.37",
			"x": "13524118.26"
		}
	},
	"status": 0
}
服务级错误码参照
错误码 说明
- -
完整教学代码示例
<?php
/**
 * Created by PhpStorm.
 * User: FZS
 * Time: 2019/9/3 23:10
 */
//----------------------------------
// 普通IP定位 调用类
//----------------------------------
class freeApi{
    private $ak;
    private $apiUrl;

    public function __construct($ak){
        $this->ak = $ak;
        $this->apiUrl = 'http://api.map.baidu.com/location/ip?ip=180.158.138.87&ak='.$this->ak;
    }
    /**
     * 获取结果
     * @return array
     */
    public function getResult(){
        return $this->freeApiCurl($this->apiUrl);
    }
    /**
     * 请求接口返回内容
     * @param  string $url [请求的URL地址]
     * @param  string $params [请求的参数]
     * @param  int $ipost [是否采用POST形式]
     * @return  string
     */
    public function freeApiCurl($url,$params=false,$ispost=0){
        $ch = curl_init();
        curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
        curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
        curl_setopt( $ch, CURLOPT_USERAGENT , 'free-api' );
        curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
        curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
        curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
        if( $ispost )
        {
            curl_setopt( $ch , CURLOPT_POST , true );
            curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
            curl_setopt( $ch , CURLOPT_URL , $url );
        }
        else
        {
            if($params){
                curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
            }else{
                curl_setopt( $ch , CURLOPT_URL , $url);
            }
        }
        $response = curl_exec( $ch );
        if ($response === FALSE) {
            return false;
        }
        curl_close( $ch );
        return $response;
    }
}