Maison > Article > développement back-end > Utilisez PHP pour obtenir des données sur les pays, les provinces, les villes et les environs en fonction de coordonnées géographiques
Fonction : Lorsque l'application obtient les coordonnées géographiques de l'utilisateur, elle peut connaître le pays, la province, la ville et les données environnantes de l'utilisateur en fonction des coordonnées.
Principe : Basé sur la mise en œuvre de l'API de géocodage de Baidu, vous devez d'abord vous inscrire en tant que développeur Baidu, puis postuler pour Baidu AK (clé)
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; } }?>
démo .php
<?phprequire "Geocoding.class.php";$ak = '这里填写你的百度AK';$longitude = 113.327782;$latitude = 23.137202;$result = Geocoding::getAddressComponent($ak, $longitude, $latitude, Geocoding::NO_POIS);echo '<pre class="brush:php;toolbar:false">'; print_r($result);echo '';?>
Exemple de retours :
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 ) )
Cet article explique comment obtenir le pays en fonction des coordonnées géographiques via php, des provinces, des villes et des catégories de données environnantes. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois.
Recommandations associées :
À propos nombres à virgule flottante php Explication de la méthode de comparaison
Explication de la méthode d'exportation des résultats de requête vers csv via mysql
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!