百度地图开放平台地理编码服务和逆地理编码服务的api文档地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
Geocoding API 是一类接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# 、C++、Java等开发语言发送请求且接收JSON、XML的返回数据。 Geocoding API 已全面支持HTTP/HTTPS两种请求形式。
地理编码:即地址解析,由详细到街道的结构化地址得到百度经纬度信息,例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”。同时,地理编码也支持名胜古迹、标志性建筑名称直接解析返回百度经纬度,例如:“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885” ,通用的POI检索需求,建议使用Place API。
逆地理编码:即逆地址解析,由百度经纬度信息得到结构化地址信息,例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。
以下是用来测试的PHP代码:
";
print_r($res);
if($res['status']==0){
// 经纬度
$lng=$res['result']['location']['lng'];
$lat=$res['result']['location']['lat'];
}else{
exit("百度地理编码服务出错,获取不到经纬度!");
}
// 百度逆地理编码服务
$ak="SlKGotyLwOjjBUR2ZGb7uKAlO59FqHVY";
$location=$lat.",".$lng;
$output="json";
$url="http://api.map.baidu.com/geocoder/v2/?location=$location&output=$output&ak=$ak";
$data=getData($url);
$data=json_decode($data,true);
print_r($data);
/*
* 用GET方式获取指定URL的数据
*/
function getData($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
?>
网页输出结果如下:
Array
(
[status] => 0
[result] => Array
(
[location] => Array
(
[lng] => 108.32766625111
[lat] => 22.825109768923
)
[precise] => 1
[confidence] => 80
[level] => UNKNOWN
)
)
Array
(
[status] => 0
[result] => Array
(
[location] => Array
(
[lng] => 108.32766625111
[lat] => 22.825109774287
)
[formatted_address] => 广西壮族自治区南宁市兴宁区人民东路236号
[business] => 朝阳,区工商局,龙腾路
[addressComponent] => Array
(
[country] => 中国
[country_code] => 0
[province] => 广西壮族自治区
[city] => 南宁市
[district] => 兴宁区
[adcode] => 450102
[street] => 人民东路
[street_number] => 236号
[direction] => 东
[distance] => 75
)
[pois] => Array
(
)
[poiRegions] => Array
(
[0] => Array
(
[direction_desc] => 内
[name] => 朝阳广场
[tag] => 休闲娱乐
)
)
[sematic_description] => 朝阳广场内
[cityCode] => 261
)
)