利用微信来获取用户当前的详细地址是非常方便的,但是利用微信获取到用户的经纬度转换为具体地址时,老是出现误差很大,因此,决心把腾讯地图经纬度转换城百度地图经纬度,然后再 利用百度地图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; }
转载请注明: haoshu发表于浩叔逛逛>>https://www.haoshu888.com/php/850.html