> 백엔드 개발 > PHP 튜토리얼 > PHP는 지리적 좌표를 기반으로 국가, 지방, 도시 및 주변 데이터를 얻습니다.

PHP는 지리적 좌표를 기반으로 국가, 지방, 도시 및 주변 데이터를 얻습니다.

WBOY
풀어 주다: 2016-08-08 09:19:34
원래의
1181명이 탐색했습니다.

기능: 앱이 사용자의 지리적 좌표를 획득하면 해당 좌표를 기반으로 사용자의 국가, 도, 도시 및 주변 데이터를 알 수 있습니다.

원칙: BaiduGeocoding API 기반으로 구현합니다. 먼저 Baidu 개발자로 등록한 후 Baidu AK(키)
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>'
'; ?>
로그인 후 복사


반환 예:

<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>
로그인 후 복사


소스 코드 다운로드 주소: 보려면 클릭하세요.

저작권 성명: 이 기사는 블로거의 원본입니다. 기사는 블로거의 허가 없이 복제될 수 없습니다.

위 내용은 PHP가 지리 좌표를 기반으로 국가, 지방, 도시 및 주변 데이터를 얻는 방법과 관련 내용을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿