进入百度地图开放平台,创建应用:服务端,生成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('地址'); }通过输入地址可以得到经纬度和详细地图。