进入百度地图开放平台,创建应用:服务端,生成AK码,复制。
在extend目录下创建一个Map.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文件,代码如下:
/**
* 地图相关配置文件
*/
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('地址');
}
通过输入地址可以得到经纬度和详细地图。