功能:当app获取到用户的地理坐标时,可以根据坐标知道用户当前在那个国家、省份、城市,及周边有什么数据。
原理:基于百度geocoding api 实现,需要先注册百度开发者,然后申请百度ak(密钥)
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; }}?>
demo.php
<?phprequire "geocoding.class.php";$ak = '这里填写你的百度ak';$longitude = 113.327782;$latitude = 23.137202;$result = geocoding::getaddresscomponent($ak, $longitude, $latitude, geocoding::no_pois);echo '<pre>';print_r($result);echo '</pre>';?>
例子返回:
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 ))
本文讲解了通过php根据地理坐标来获取国家、省份、城市,及周边数据类,更多相关内容请关注。
相关推荐:
如何使用glob方法遍历文件夹下所有文件的相关方法
关于php 浮点数比较方法 的讲解
通过mysql导出查询结果到csv方法的讲解
以上就是通过php根据地理坐标来获取国家、省份、城市,及周边数据类的详细内容。