首页 > PHP专栏 > 腾讯地图经纬度转换为百度地图经纬度
2015
11-24

腾讯地图经纬度转换为百度地图经纬度

利用微信来获取用户当前的详细地址是非常方便的,但是利用微信获取到用户的经纬度转换为具体地址时,老是出现误差很大,因此,决心把腾讯地图经纬度转换城百度地图经纬度,然后再利用百度地图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;
    }