接口地址:http://api.map.baidu.com/geocoding/v3 |
---|
返回格式:json/xml |
请求方式:get |
请求示例:http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak |
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
address | string | 必填 | 待解析的地址。最多支持84个字节。可以输入两种样式的值,分别是: 1、标准的结构化地址信息,如北京市海淀区上地十街十号 【推荐,地址结构越完整,解析精度越高】2、支持“*路与*路交叉口”描述方式,如北一环路和阜阳路的交叉路口,第二种方式并不总是有返回结果,只有当地址库中存在该地址描述时才有返回 |
ak | string | 必填 | 用户申请注册的key,自v2开始参数修改为“ak”,之前版本参数为“key”申请ak 扫码关注公众号 |
sn | string | 选填 | 若用户所用ak的校验方式为sn校验时该参数必须 |
output | string | 选填 | 输出格式为json或者xml |
callback | string | 选填 | 将json格式的返回值通过callback函数返回以实现jsonp功能 |
city | string | 选填 | 地址所在的城市名。用于指定上述地址所在的城市,当多个城市都有上述地址时,该参数起到过滤作用,但不限制坐标召回城市 |
ret_coordtype | string | 选填 | 添加后返回国测局经纬度坐标或百度米制坐标 |
名称 | 类型 | 说明 |
---|---|---|
status | int | 返回结果状态值, 成功返回0,其他值请查看下方返回码状态表 |
location | object | 经纬度坐标 |
precise | int | 位置的附加信息,是否精确查找。1为精确查找,即准确打点;0为不精确,即模糊打点 |
confidence | int | 描述打点绝对精度(即坐标点的误差范围) |
comprehension | int | 描述地址理解程度。分值范围0-100,分值越大,服务对地址理解程度越高(建议以该字段作为解析结果判断标准) |
level | string | 能精确理解的地址类型,包含:UNKNOWN、国家、省、城市、区县、乡镇、村庄、道路、地产小区、商务大厦、政府机构、交叉路口、商圈、生活服务、休闲娱乐、餐饮、宾馆、购物、金融、教育、医疗 、工业园区 、旅游景点 、汽车服务、火车站、长途汽车站、桥 、停车场/停车区、港口/码头、收费区/收费站、飞机场 、机场 、收费处/收费站 、加油站、绿地、门址 |
{
"status": 0,
"result": {
"location": {
"lng": 116.3084202915042,
"lat": 40.05703033345938
},
"precise": 1,
"confidence": 80,
"comprehension": 100,
"level": "道路"
}
}
错误码 | 说明 |
---|---|
0 | 服务请求正常召回 |
1 | 服务器内部错误 |
2 | 请求参数非法 |
3 | 权限校验失败 |
4 | 配额校验失败 |
5 | ak不存在或者非法 |
102 | 不通过白名单或者安全码不对 |
2xx | 无权限 |
3xx | 配额错误 |
<?php
/**
* Created by PhpStorm.
* User: FZS
* Time: 2019/9/3 23:10
*/
//----------------------------------
// 地理编码服务 调用类
//----------------------------------
class freeApi{
private $ak;
private $apiUrl;
public function __construct($ak){
$this->ak = $ak;
$this->apiUrl = 'http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&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;
}
}