Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie PHP, um Länder, Provinzen, Städte und Umgebungsdaten basierend auf geografischen Koordinaten abzurufen

Verwenden Sie PHP, um Länder, Provinzen, Städte und Umgebungsdaten basierend auf geografischen Koordinaten abzurufen

jacklove
jackloveOriginal
2018-06-09 10:37:092834Durchsuche

Funktion: Wenn die App die geografischen Koordinaten des Benutzers erhält, kann sie anhand der Koordinaten das Land, die Provinz, die Stadt und die Umgebungsdaten des Benutzers ermitteln.

Prinzip: Basierend auf der Baidu-Geocoding-API-Implementierung müssen Sie sich zuerst als Baidu-Entwickler registrieren und sich dann für bewerben Baidu AK (Schlüssel)
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;
    }
}?>


demo.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;
';?>


Beispielrückgaben:

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
        )
)

In diesem Artikel wird erläutert, wie Sie Länder, Provinzen, Städte usw. erhalten. Weitere relevante Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Verwandte Methoden zur Verwendung der Glob-Methode zum Durchsuchen aller Dateien in einem Ordner

Info PHP-Gleitkommazahlen Erläuterung der Vergleichsmethode

Erklärung der Methode zum Exportieren von Abfrageergebnissen nach CSV über MySQL

Das obige ist der detaillierte Inhalt vonVerwenden Sie PHP, um Länder, Provinzen, Städte und Umgebungsdaten basierend auf geografischen Koordinaten abzurufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn