若是geoip獲取地理位置能夠知足你的需求可跳轉:juejin.im/post/5d0c7e…laravel
地理編碼/逆地理編碼 API 是經過 HTTP/HTTPS 協議訪問遠程服務的接口,提供結構化地址與經緯度之間的相互轉化的能力。web
結構化地址的定義: 首先,地址確定是一串字符,內含國家、省份、城市、區縣、城鎮、鄉村、街道、門牌號碼、屋邨、大廈等建築物名稱。按照由大區域名稱到小區域名稱組合在一塊兒的字符。一個有效的地址應該是獨一無二的。注意:針對大陸、港、澳地區的地理編碼轉換時能夠將國家信息選擇性的忽略,但省、市、城鎮等級別的地址構成是不能忽略的。json
第一步,申請Web服務API類型Key;api
第二步,參考接口參數文檔發起HTTP/HTTPS請求,第一步申請的 Key 需做爲必填參數一同發送;bash
第三步,接收請求返回的數據(JSON或XML格式),參考返回參數文檔解析數據。app
如無特殊聲明,接口的輸入參數和輸出數據編碼所有統一爲 UTF-8 編碼方式。框架
逆地理編碼API服務地址curl
https://restapi.amap.com/v3/geocode/geo?parameters複製代碼
address 是須要獲取座標的結構化地址,output(XML)用於指定返回數據的格式,Key是用戶請求數據的身份標識。ide
city爲指定查詢的城市(爲可選參數)post
逆地理編碼API服務地址
https://restapi.amap.com/v3/geocode/regeo?parameters複製代碼
location(116.310003,39.991957) 是所須要轉換的座標點經緯度,radius(1000)爲返回的附近POI的範圍,單位:米,extensions(all)爲返回的數據內容,output(XML)用於指定返回數據的格式,Key 是高德Web服務 Key。
本次DEMO在laravel框架中實現(其餘框架都可用相同方式實現)
/**
* 將詳細的結構化地址轉換爲高德經緯度座標-高德地圖-地理編碼
* @param string $address 填寫結構化地址信息:省份+城市+區縣+城鎮+鄉村+街道+門牌號碼
* @param string $city 查詢城市,可選:城市中文、中文全拼、citycode、adcode
* @return array
*/
public function geo($address = '', $city = '北京')
{
$key = config('app.amap_key');
/**
* url:https://restapi.amap.com/v3/geocode/geo?address=北京市朝陽區阜通東大街6號&output=XML&key=<用戶的key>
* output(XML/JSON)用於指定返回數據的格式
*/
$url = "https://restapi.amap.com/v3/geocode/geo?output=JSON&key={$key}&address={$address}&city={$city}";
// 執行請求
$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;
}
/**
* 根據經緯度獲取地理位置-高德地圖-逆地理編碼
* @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文檔見:lbs.amap.com/api/webserv…