php根據地理座標獲取國家、省份、城市,及周邊資料類
功能:當App獲取到使用者的地理座標時,可以根據座標知道使用者當前在那個國家、省份、城市,及周邊有什麼資料。
原理:基於百度Geocoding API 實現,需要先註冊百度開發者,然後申請百度AK(金鑰)
Geocoding.class.php
<?php
/**
* 根據地理座標獲取國家、省份、城市,及周邊資料類(利用百度Geocoding API實現)
* 百度金鑰獲取方法:http://lbsyun.baidu.com/apiconsole/key?application=key(需要先註冊百度開發者賬號)
* Date: 2015-07-30
* Author: fdipzone
* Ver: 1.0
*
* Func:
* Public getAddressComponent 根據地址獲取國家、省份、城市及周邊資料
* Private toCurl 使用curl呼叫百度Geocoding API
*/
class Geocoding {
// 百度Geocoding API
const API = 'http://api.map.baidu.com/geocoder/v2/';
// 不顯示周邊資料
const NO_POIS = 0;
// 顯示周邊資料
const POIS = 1;
/**
* 根據地址獲取國家、省份、城市及周邊資料
* @param String $ak 百度ak(金鑰)
* @param Decimal $longitude 經度
* @param Decimal $latitude 緯度
* @param Int $pois 是否顯示周邊資料
* @return Array
*/
public static function getAddressComponent($ak, $longitude, $latitude, $pois=self::NO_POIS){
$param = array(
'ak' => $ak,
'location' => implode(',', array($latitude, $longitude)),
'pois' => $pois,
'output' => 'json'
);
// 請求百度api
$response = self::toCurl(self::API, $param);
$result = array();
if($response){
$result = json_decode($response, true);
}
return $result;
}
/**
* 使用curl呼叫百度Geocoding API
* @param String $url 請求的地址
* @param Array $param 請求的引數
* @return JSON
*/
private static function toCurl($url, $param=array()){
$ch = curl_init();
if(substr($url,0,5)=='https'){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳過證照檢查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 從證照中檢查SSL加密演算法是否存在
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));
$response = curl_exec($ch);
if($error=curl_error($ch)){
return false;
}
curl_close($ch);
return $response;
}
}
?>
demo.php
<?php
require "Geocoding.class.php";
$ak = '這裡填寫你的百度AK';
$longitude = 113.327782;
$latitude = 23.137202;
$result = Geocoding::getAddressComponent($ak, $longitude, $latitude, Geocoding::NO_POIS);
echo '<pre>';
print_r($result);
echo '</pre>';
?>
例子返回:
Array
(
[status] => 0
[result] => Array
(
[location] => Array
(
[lng] => 113.32778195925
[lat] => 23.137201991056
)
[formatted_address] => 廣東省廣州市天河區體育西橫街35號
[business] => 天河城,體育中心,沙河
[addressComponent] => Array
(
[city] => 廣州市
[country] => 中國
[direction] => 附近
[distance] => 14
[district] => 天河區
[province] => 廣東省
[street] => 體育西橫街
[street_number] => 35號
[country_code] => 0
)
[poiRegions] => Array
(
)
[sematic_description] => 紅盾大廈北58米
[cityCode] => 257
)
)
原始碼下載地址:點選檢視
相關文章
- js根據ip地址獲取省份城市的方法JS
- js根據ip地址獲取城市地理位置JS
- 百度地圖:根據位置獲取座標地圖
- 根據經緯度座標獲得省市區縣行政區劃城市名稱,自建資料庫 java python php c# .net 均適用資料庫JavaPythonPHPC#
- Python獲取IP的地理位置:經緯度,國家,區域,城市Python
- php 根據給定字串時間獲取時區PHP字串
- 高德解析城市的分析,根據高德的經緯度獲取城市cityCode
- Java根據地理位置獲取經緯度(呼叫百度地圖API)Java地圖API
- 根據IP定位地理位置
- 根據 IP 獲取省市名稱
- 使用js獲取滑鼠座標JS
- 觸控事件獲取座標事件
- HTML網頁根據座標模擬滑鼠點選HTML網頁
- openlayers根據座標在地圖上劃區域地圖
- Android使用getIdentifier()方法根據資源名來獲取資AndroidIDE
- 根據使用者來獲取渠道
- js中根據x,y 座標模擬點選事件JS事件
- 根據經緯度座標查詢最近的門店
- PHP根據資料表自動生成CURD操作PHP
- 關於如何根據shp檔案篩選csv某個省份資料集
- Kubernetes 教程:根據 PID 獲取 Pod 名稱
- 根據屬性字串獲取屬性值字串
- 獲取資料庫中到指定經緯度距離的座標資料庫
- JavaScript獲取元素在文件中座標JavaScript
- JavaScript獲取滑鼠在文件中座標JavaScript
- JavaScript-滑鼠獲取頁面座標JavaScript
- js根據IP地址獲取當前的省市JS
- 根據id獲取元素的寬度的方法
- 根據key集合批次從map中獲取value
- 根據微信code獲取換取使用者登入態資訊
- PHP利用反射根據類名反向尋找類所在檔案PHP反射
- JavaScript 獲取div在頁面中座標JavaScript
- JavaScript獲取滑鼠在元素中的座標JavaScript
- PHP根據ID獲取item_get-拼多多商品詳情 API介面(num_iid商品、title商品標題等)PHPAPI
- passport 根據 header 頭中的 token 獲取 OAuth_access_tokens 表中的資料PassportHeaderOAuth
- 例項演示:Excel實現資料更新獲取,並根據公式計算後展示Excel公式
- C#根據經緯度獲取實體地址C#
- activiti 根據 流程例項ID 獲取發起人
- ArcGIS API for JavaScript根據兩個點座標在地圖上畫線APIJavaScript地圖