利用微信来获取用户当前的详细地址是非常方便的,但是利用微信获取到用户的经纬度转换为具体地址时,老是出现误差很大,因此,决心把腾讯地图经纬度转换城百度地图经纬度,然后再利用百度地图api来获取详细地址。
具体怎么在微信里获取经纬度,这里就累赘了,大家可以看前面的文章《如何使用微信定位当前位置坐标经纬度?》。下面是转换的代码:
/*腾讯地图经纬度转换为百度地图经纬度*/
$wxurl = 'http://api.map.baidu.com/geoconv/v1/?coords='.$_GPC['lng'].','.$_GPC['lat'].'&ak=你申请的KEY&output=json';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $wxurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
$r = curl_exec($ch);
curl_close($ch);
$addr = json_decode($r);
$addr=$this->object_array($addr);
//利用百度地图api把百度地图经纬度解析为详细地址
$baiduurl = 'http://api.map.baidu.com/geocoder/v2/?ak=你申请的KEY&location='.$addr['result'][0]['y'].','.$addr['result'][0]['x'].'&output=json&pois=0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $baiduurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
$r = curl_exec($ch);
curl_close($ch);
$addr = json_decode($r);
$addr=$this->object_array($addr);
echo $addr['result']['formatted_address'];exit;
把json数据遍历为数组:
private function object_array($array)
{
if(is_object($array))
{
$array = (array)$array;
}
if(is_array($array))
{
foreach($array as $key=>$value)
{
$array[$key] = $this->object_array($value);
}
}
return $array;
}