一 、 通过获取经纬度 获取地址代码
//获得地址
function getCodes($lat,$long){
$ak = ' ';
$sk = ' ';
$url = "http://api.map.baidu.com/reverse_geocoding/v3/?location=%s&output=%s&ak=%s&sn=%s";
$uri = '/geocoder/v2/';
$location = ''.$lat.','.$long.'';
// var_dump($location);exit;
//地理编码的请求output参数
$output = 'json';
//构造请求串数组
$querystring_arrays = array (
'location' => $location,
'output' => $output,
'ak' => $ak
);
//调用sn计算函数,默认get请求
$sn = caculateAKSN($ak, $sk, $uri, $querystring_arrays);
//请求参数中有中文、特殊字符等需要进行urlencode,确保请求串与sn对应
$target = sprintf($url, urlencode($location), $output, $ak, $sn);
$sn = caculateAKSN('你的ak',$querystring_arrays);
$geocode=file_get_contents($target);
$output= json_decode($geocode,true);
$pro = $output['result']['addressComponent']['province'];
$city = $output['result']['addressComponent']['city'];
$area = $output['result']['addressComponent']['district'];
$data = array('pro'=>$pro,'city'=>$city,'area'=>$area);
return array('pro'=>$pro,'city'=>$city,'area'=>$area);
}
function caculateAKSN($ak, $sk, $url, $querystring_arrays, $method = 'GET')
{
if ($method === 'POST'){
ksort($querystring_arrays);
}
$querystring = http_build_query($querystring_arrays);
return md5(urlencode($url.'?'.$querystring.$sk));
}
二 、通过 经纬度 获取 地址 信息
//跟地址获得经纬度
function getCodes($lat,$long){
$geocode=file_get_contents('http://api.map.baidu.com/reverse_geocoding/v3/?location='.$lat.','.$long.'&output=JSON&ak= 你的ak &callback=showLocation');
$output= json_decode(json_encode(simplexml_load_string($geocode),true),true);
$pro = $output['result']['addressComponent']['province'];
$city = $output['result']['addressComponent']['city'];
$distric = $output['result']['addressComponent']['district'];
return array('pro'=>$pro,'city'=>$city,'area'=>$area);
}