PHP根據經緯度獲取地理位置-高德api
阿新 • • 發佈:2018-12-28
本次使用的高德地圖web服務端api中的逆地理編碼
逆地理編碼:將經緯度轉換為詳細結構化的地址,且返回附近周邊的POI、AOI資訊。
例如:116.480881,39.989410 轉換地址描述後:北京市朝陽區阜通東大街6號
逆地理編碼API服務地址
https://restapi.amap.com/v3/geocode/regeo?parameters
parameters代表的引數包括必填引數和可選引數。所有引數均使用和號字元(&)進行分隔。下面的列表枚舉了這些引數及其使用規則。
location(116.310003,39.991957) 是所需要轉換的座標點經緯度,radius(1000)為返回的附近POI的範圍,單位:米,extensions(all)為返回的資料內容,output(XML)用於指定返回資料的格式,Key 是高德Web服務 Key。詳細可以參考上方的請求引數說明。
第一步,申請Web服務API型別Key;
第二步,參考介面引數文件發起HTTP/HTTPS請求,第一步申請的 Key 需作為必填引數一同傳送;
第三步,接收請求返回的資料(JSON或XML格式),參考返回引數文件解析資料。
如無特殊宣告,介面的輸入引數和輸出資料編碼全部統一為 UTF-8 編碼方式。
本次DEMO在laravel框架中實現(其他框架均可用相同方式實現)
/** * 根據經緯度獲取地理位置-高德地圖 * @param string $lon 經度 * @param string $lat 緯度 * @return array */ public function regeo($lon, $lat) { // Key 是高德Web服務 Key。詳細可以參考上方的請求引數說明。 $key = config('app.amap_key'); // location(116.310003,39.991957) 是所需要轉換的座標點經緯度,經度在前,緯度在後,經緯度間以“,”分割 $location = $lon . "," . $lat; /** * url:https://restapi.amap.com/v3/geocode/regeo?output=xml&location=116.310003,39.991957&key=<使用者的key>&radius=1000&extensions=all * radius(1000)為返回的附近POI的範圍,單位:米 * extensions 引數預設取值是 base,也就是返回基本地址資訊 * extensions 引數取值為 all 時會返回基本地址資訊、附近 POI 內容、道路資訊以及道路交叉口資訊。 * output(XML/JSON)用於指定返回資料的格式 */ $url = "https://restapi.amap.com/v3/geocode/regeo?output=JSON&location={$location}&key={$key}&radius=1000&extensions=base"; // 執行請求 $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, $url); $data = curl_exec($ch); curl_close($ch); $result = json_decode($data, true); return $result; }
需要傳遞經緯度來獲取當前的地理位置,詳細見程式碼註釋
如還有問題,具體api文件見:https://lbs.amap.com/api/webservice/guide/api/georegeo/