TP5调用百度地图接口进行开发

进入百度地图开放平台,创建应用:服务端,生成AK码,复制。

在extend目录下创建一个Map.php,代码如下:

<?php
/**
 * 百度地图相关业务封装
 */
class Map{
    //根据地址获取经纬度
    public static function getLngLat($address){
       // http://api.map.baidu.com/geocoder/v2/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation //GET请求
            $data=[
                'address'=>$address,
                'ak'=>config('map.ak'),
                'output'=>'json',
            ];
            //转化为网址形式
            $url=config('map.baidumap_url').config('map.geocoder').'?'.http_build_query($data);
            $res=doCurl($url);
            return $res;
    }

    //根据经纬度或者地址获取百度地图
    public static function staticimage($center){
            if (!$center){
                return '';
            }
        //http://api.map.baidu.com/staticimage/v2?ak=
        $data=[
            'ak'=>config('map.ak'),
            'width'=>config('map.width'),
            'height' =>config('map.height'),
            'center' =>$center,
            'markers' =>$center,
        ];
        $url=config('map.baidumap_url').config('map.staticimage').'?'.http_build_query($data);
        $res=doCurl($url);
        return $res;
    }
}

接着在extra目录下创建一个map.php文件,代码如下:

<?php
/**
 * 地图相关配置文件
 */
return [
    'ak'=>'EglSDP3UNYtT2GsjGsoBFrHYBfixPrDv',
    'baidumap_url'=>'http://api.map.baidu.com/',
    'geocoder'=>'geocoder/v2/',
    'staticimage' =>'staticimage/v2',
    'width' =>400,
    'height' =>300,
];

分别为封装文件和配置文件,接着在common.php中加入以下代码:

function doCurl($url,$type=0,$data=[]){
        $ch=curl_init(); //初始化
    //设置选项
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_HEADER,0);
    if ($type==1){
        //post
        curl_setopt($ch,CURLOPT_PORT,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
    }
    //执行获取内容
    $output=curl_exec($ch);
    //释放curl句柄
    curl_close($ch);
    return $output;
}

最后在想要测试的页面的控制器加入以下代码:

public function test(){
    print_r(\Map::getLngLat('地址'));

}
public function map(){
    return \Map::staticimage('地址');
}
通过输入地址可以得到经纬度和详细地图。

猜你喜欢

转载自blog.csdn.net/honkkki/article/details/80517638
今日推荐