码迷,mamicode.com
首页 > Windows程序 > 详细

php用百度地图API进行IP定位和GPS定位

时间:2016-06-13 11:30:44      阅读:2336      评论:0      收藏:0      [点我收藏+]

标签:

<?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;

    }

}

?>

  

<?php
header("Content-type: text/html; charset=utf-8");
header(‘Access-Control-Allow-Origin:*‘); 
require "Geocoding.class.php";
$ak = ‘6q6OVS3LlFuZcoXGtXvqxBYq‘;//百度秘钥已更改需要填写自己的
class Location
{
private static $_instance; public $province; public $city; public $district; public $street; public $address;
}
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$longitude = test_input($_GET["long"]);
$latitude = test_input($_GET["lat"]);
$result = Geocoding::getAddressComponent($ak, $longitude, $latitude, Geocoding::NO_POIS);
$locat=new Location();

$address=$result["result"]["addressComponent"];
if($address["province"]!=$address["city"])
{
$location=$address["province"].$address["city"].$address["district"].$address["street"];
}
else
{
$location=$address["city"].$address["district"].$address["street"];	
}
$locat->province=$address["province"];
$locat->city=$address["city"];
$locat->district=$address["district"];
$locat->street=$address["street"];
$locat->address=$location;
$json = json_encode($locat);
echo "$json";//返回类似地址字符串也可根据自己需要返回地址

?>

获取秘钥地址http://developer.baidu.com/map/

参考链接http://my.oschina.net/xialeistudio/blog/366347

 

php用百度地图API进行IP定位和GPS定位

标签:

原文地址:http://www.cnblogs.com/wangboke/p/5579611.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!