Heim >Backend-Entwicklung >PHP-Tutorial >PHP ermittelt Länder, Provinzen, Städte und Umgebungsdaten basierend auf geografischen Koordinaten

PHP ermittelt Länder, Provinzen, Städte und Umgebungsdaten basierend auf geografischen Koordinaten

WBOY
WBOYOriginal
2016-08-08 09:19:341182Durchsuche

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 BaiduGeocoding API Sie müssen sich zuerst als Baidu-Entwickler registrieren und dann Baidu AK (Schlüssel)
Geocoding.class.php

<code><span><span><span><?php</span>
/**
 * 根据地理坐标获取国家、省份、城市,及周边数据类(利用百度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
 */</span><span><span>class</span><span>Geocoding</span> {</span><span>// 百度Geocoding API</span><span>const</span> API = <span>'http://api.map.baidu.com/geocoder/v2/'</span>;

    <span>// 不显示周边数据</span><span>const</span> NO_POIS = <span>0</span>;

    <span>// 显示周边数据</span><span>const</span> POIS = <span>1</span>; 

    <span>/**
     * 根据地址获取国家、省份、城市及周边数据
     *<span> @param</span>  String  $ak        百度ak(密钥)
     *<span> @param</span>  Decimal $longitude 经度
     *<span> @param</span>  Decimal $latitude  纬度
     *<span> @param</span>  Int     $pois      是否显示周边数据
     *<span> @return</span> Array
     */</span><span>public</span><span>static</span><span><span>function</span><span>getAddressComponent</span><span>(<span>$ak</span>, <span>$longitude</span>, <span>$latitude</span>, <span>$pois</span>=self::NO_POIS)</span>{</span><span>$param</span> = <span>array</span>(
                <span>'ak'</span> => <span>$ak</span>,
                <span>'location'</span> => implode(<span>','</span>, <span>array</span>(<span>$latitude</span>, <span>$longitude</span>)),
                <span>'pois'</span> => <span>$pois</span>,
                <span>'output'</span> => <span>'json'</span>
        );

        <span>// 请求百度api</span><span>$response</span> = <span>self</span>::toCurl(<span>self</span>::API, <span>$param</span>);

        <span>$result</span> = <span>array</span>();

        <span>if</span>(<span>$response</span>){
            <span>$result</span> = json_decode(<span>$response</span>, <span>true</span>);
        }

        <span>return</span><span>$result</span>;

    }

    <span>/**
     * 使用curl调用百度Geocoding API
     *<span> @param</span>  String $url    请求的地址
     *<span> @param</span>  Array  $param  请求的参数
     *<span> @return</span> JSON
     */</span><span>private</span><span>static</span><span><span>function</span><span>toCurl</span><span>(<span>$url</span>, <span>$param</span>=array<span>()</span>)</span>{</span><span>$ch</span> = curl_init();

        <span>if</span>(substr(<span>$url</span>,<span>0</span>,<span>5</span>)==<span>'https'</span>){
            curl_setopt(<span>$ch</span>, CURLOPT_SSL_VERIFYPEER, <span>false</span>); <span>// 跳过证书检查</span>
            curl_setopt(<span>$ch</span>, CURLOPT_SSL_VERIFYHOST, <span>true</span>);  <span>// 从证书中检查SSL加密算法是否存在</span>
        }

        curl_setopt(<span>$ch</span>, CURLOPT_RETURNTRANSFER, <span>true</span>);
        curl_setopt(<span>$ch</span>, CURLOPT_URL, <span>$url</span>);
        curl_setopt(<span>$ch</span>, CURLOPT_POST, <span>true</span>);
        curl_setopt(<span>$ch</span>, CURLOPT_POSTFIELDS, http_build_query(<span>$param</span>));

        <span>$response</span> = curl_exec(<span>$ch</span>);

        <span>if</span>(<span>$error</span>=curl_error(<span>$ch</span>)){
            <span>return</span><span>false</span>;
        }

        curl_close(<span>$ch</span>);

        <span>return</span><span>$response</span>;

    }

}

<span>?></span></span></span></span></code>


demo.php

<code><span><?php</span><span>require</span><span>"Geocoding.class.php"</span>;

<span>$ak</span> = <span>'这里填写你的百度AK'</span>;
<span>$longitude</span> = <span>113.327782</span>;
<span>$latitude</span> = <span>23.137202</span>;

<span>$result</span> = Geocoding::getAddressComponent(<span>$ak</span>, <span>$longitude</span>, <span>$latitude</span>, Geocoding::NO_POIS);

<span>echo</span><span>'<pre class="brush:php;toolbar:false">'</span>;
print_r(<span>$result</span>);
<span>echo</span><span>'
'; ?>


Beispiel für Rückgaben:

<code><span>Array</span>
(
    [status] => <span>0</span>
    [result] => <span>Array</span>
        (
            [location] => <span>Array</span>
                (
                    [lng] => <span>113.32778195925</span>
                    [lat] => <span>23.137201991056</span>
                )

            [formatted_address] => 广东省广州市天河区体育西横街<span>35</span>号
            [business] => 天河城,体育中心,沙河
            [addressComponent] => <span>Array</span>
                (
                    [city] => 广州市
                    [country] => 中国
                    [direction] => 附近
                    [distance] => <span>14</span>
                    [district] => 天河区
                    [province] => 广东省
                    [street] => 体育西横街
                    [street_number] => <span>35</span>号
                    [country_code] => <span>0</span>
                )

            [poiRegions] => <span>Array</span>
                (
                )

            [sematic_description] => 红盾大厦北<span>58</span>米
            [cityCode] => <span>257</span>
        )

)</code>


Quellcode-Download-Adresse: Klicken Sie hier, um

Copyright anzuzeigen Aussage: Dieser Artikel ist ein Original des Bloggers. Artikel dürfen nicht ohne Genehmigung des Bloggers reproduziert werden.

Das Obige stellt vor, wie PHP Länder, Provinzen, Städte und Umgebungsdaten basierend auf geografischen Koordinaten abrufen kann, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die an PHP-Tutorials interessiert sind.

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