以thinkphp5为例
一、获取ak
- 点击登录 百度开发者平台注册并登录账号。

- 点击 控制台 ,再点击左侧 应用管理 下的我的应用,再点击 创建应用 。

- 填写 创建应用的内容。

通过以上步骤后,我们就能获得所需的ak了。
二、编写代码
参考资料:https://blog.youkuaiyun.com/zhangzeshan/article/details/93594602
文档所在地址:http://api.map.baidu.com/lbsapi/cloud/geocoding-api.htm#.E6.8E.A5.E5.8F.A3.E7.A4.BA.E4.BE.8B
- 在tp5框架的 扩展类库目录extend/ 中创建Map.php。

- 编写内容
<?php
class Map{
//可以获取经纬度
public static function getLngLat($address){
// 百度地图地理编码API "http://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation
if(!$address){
return '';
}
$data = [
'address'=>$address,
'ak'=>config('map.ak'),
'output'=>'json',
];
$url=config('map.baidu_map_url').config('map.geocoding').'?'.http_build_query($data);
//$res = file_get_contents($url); 通过这个方法也能读取url的内容
return $res=doCurl($url);
}
/**
* 根据经纬度或者地址获取地图
*/
public static function staticImage($center){
if(!$center){
return '';
}
$data = [
'ak'=>config('map.ak'), //利用config从配置文件中读取 ak
'center' =>$center,
'width'=>config('map.width'),
'height' =>config('map.height'),
'zoom' =>11,
'markers'=>$center,
'scale' => 1,
];
$url=config('map.baidu_map_url').config('map.staticimage').'?'.http_build_query($data);
//$res = file_get_contents($url); 通过这个方法也能读取url的内容
return $res=doCurl($url);
//return $url;
}
}
相关参数的 意义 请参考百度开发平台提供的 开发文档。
- 在模块公共函数文件application/common.php中编写函数doCurl()

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) {
curl_setopt($ch, CURLOPT_PORT, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
//执行并获取内容
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
- 在配置文件中新建map.php,编写需要的参数。注意:把ak的值换成自己的

三、测试
- 在百度地图开发者平台打开此选项。


- 复制提供的示例html代码到自己的html文件中。

- 在html代码的body中新增以下两部分


- 修改地点名称,即可显示相对应的地图位置了。


- 使用Map.php中的第二个方法

html代码部分新增,用于显示图片


2809

被折叠的 条评论
为什么被折叠?



