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

Utilisez PHP pour obtenir des données sur les pays, les provinces, les villes et les environs en fonction de coordonnées géographiques

jacklove
jackloveoriginal
2018-06-09 10:37:092804parcourir

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 = &#39;http://api.map.baidu.com/geocoder/v2/&#39;;    // 不显示周边数据
    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(                &#39;ak&#39; => $ak,                &#39;location&#39; => implode(&#39;,&#39;, array($latitude, $longitude)),                &#39;pois&#39; => $pois,                &#39;output&#39; => &#39;json&#39;
        );        // 请求百度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)==&#39;https&#39;){
            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 = &#39;这里填写你的百度AK&#39;;$longitude = 113.327782;$latitude = 23.137202;$result = Geocoding::getAddressComponent($ak, $longitude, $latitude, Geocoding::NO_POIS);echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r($result);echo &#39;
';?>


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 :

Méthodes associées sur la façon d'utiliser la méthode glob pour parcourir tous les fichiers d'un dossier

À 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn