通过地址 获取经纬度 通过 经纬度 获取地址

一 、 通过获取经纬度 获取地址代码

 //获得地址
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);
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值