百度地图开放平台地理编码服务和逆地理编码服务的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代码:
<?php header("Content-type:text/html;charset=utf-8"); // 百度地理编码服务 $ak="SlKGotyLwOjjBUR2ZGb7uKAlO59FqHVY"; $output="json"; $callback="showLocation"; $address="南宁市兴宁区朝阳广场"; $city="南宁市"; $url="http://api.map.baidu.com/geocoder/v2/?output=$output&address=$address&city=$city&ak=$ak"; $res=getData($url); $res=json_decode($res,true); echo "<pre>"; 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 ) )