php獲取ios或android通過文件頭(header)傳過來的坐標,通過百度接口獲取具體城市和地址,並存入到session中。
首先,在function.php方法文件中封裝一個獲取header頭文件的方法。
if (!function_exists(‘getallheaders‘)) {
function getallheaders() {
$headers = array();
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) == ‘HTTP_‘) {
$headers[str_replace(‘ ‘, ‘-‘, ucwords(strtolower(str_replace(‘_‘, ‘ ‘, substr($name, 5)))))] = $value;
}
return $headers;
}
}
然後,在相應控制器中調用該方法獲取數據,先檢查session中有沒有位置信息。
if(!$_SESSION[‘MyLocation‘])
{
//獲取定位坐標
$location = getallheaders();
$this->get_location($location); //調用封裝的方法
}
最後,封裝一個方法,用來請求百度接口返回具體位置信息,並存到session中。
public function get_location($location)
{
$lat = $location[‘Latitude‘];
$lng = $location[‘Longitude‘];
if($lat && $lng)
{
$url = ‘http://api.map.baidu.com/geocoder/v2/?ak=5BFNbSgnVF5g2O72NpvTDxFm&location=‘ . $lat . ‘,‘ . $lng . ‘&output=json&pois=1‘;
if($html)
{
$myLocation = array(
‘city‘ => $html[‘result‘][‘addressComponent‘][‘city‘],
‘addr‘ => isset($html[‘result‘][‘addressComponent‘][‘street‘]) ? $html[‘result‘][‘addressComponent‘][‘street‘] : $html[‘result‘][‘formatted_address‘],
‘lng‘ => $html[‘result‘][‘location‘][‘lng‘],
‘lat‘ => $html[‘result‘][‘location‘][‘lat‘],
);
$_SESSION[‘MyLocation‘] = $myLocation;
}
}
}
php獲取ios或android通過文件頭(header)傳過來的坐標,通過百度接口獲取具體城市和地址,並存入到session中。