《TP5.0学习笔记---百度地图封装》
来源:互联网 发布:手机淘宝1元夺宝在哪 编辑:程序博客网 时间:2024/05/29 04:24
我们常常需要根据地址来获取经纬度,根据经纬度来调取百度地图等。
一、 根据地址获取经纬度类的封装
1, 获取第三方接口
2, 编写map类
3, 测试
1, 获取第三方接口
(1)进入http://lbsyun.baidu.com -> api控制台 ->设置AK
(2)找到geocoding api
进入之后需要注册用户,首先注册,然后找到api控制台
进api控制台之后,点击“创建应用” 会看家下边这个页面
然后填写“应用名称” 启用的服务,全部启用 ip白名单填写你本机的ip,然后点击“提交”就OK了,它会跳转到你的应用列表
下边就是找根据地址获取经纬度的接口,在“开发”=>”Web服务API”
点击进去之后,在左边有一个“geocoding API,点击一下
2, 封装map类库”
那么下边我们就开始封装我们的根据地址获取经纬度的类库
建议将这个类库文件放在你的TP5框架的extend目录下,因为它是一个扩展目录。我这里就叫Map.php
Map.php代码
/***百度地图相关业务封装*/class Map{ /* * 根据地址获取经纬度 */ public static function getLngLat($address){ //去刚才那个geocoding API页面将第三方接口的链接复制过来//http://api.map.baidu.com/geocoder/v2/?//callback=renderOption&output=json&address=北京市海淀区上地10街10号&city=北京市&ak=您的ak //下边我们就开始拼装接口后边的那些参数 /* 这里可以做一个优化,我们可以把这些配置,直接放到配置文件当中去,而TP5给我们提供的方式是,在application 下边有一个config.php,可以在这里写我们的相关配置,但是在这里写会比较繁琐,它不利于我们去做扩展以及维护 ,所以就像将其抽离出来,比如说,跟地图相关的配置,我就放在地图相关的配置文件当中去。TP5中又为我们提供 了一个小技巧,就是可以在application目录下创建一个extra目录,然后在里边创建一个map.php(存地图相关配置) 那么下面我们获取AK的方式就变成config('map.ak')(config是获取配置的函数,map是文件名,ak是数组索引名) */if(!$address){ return '';//如果没有传递参数,返回为空 } $data = [ 'address' => $address, 'ak' => config('map.ak'),//这就是刚刚申请的AK 'output' => 'json', ]; //上边我们是将参数先都转换成了数组的形式,下边就是将其转换成上边链接的那种形式 $s = http_build_query($data);//这就可以将其转换成:callback=renderOption&output=json&address=北京市海淀区上地10街10号&city=北京市&ak=您的ak这种形式 //然后就是拼装完整的url $url = config('map.baidu_map_url').config('map.geocoder').'?'.$s; //那么现在我们就是获取这个url中的内容(php中有以下几种形式获取) //1,file_get_contents($url); //2,curl方式来获取(我们php中的curl方式需要封装一个方法,那么我将这个方法放在common.php中) $result = doCurl($url); //print_r($result);exit();//这个是测试一下(我们需要在controller/index.php中来调用它) return $result;//注意:如果你要测试一下,将“return $result”这行注释掉,将它的上一行注释去掉即可 }}
map.php代码
<?php/*地图相关配置文件*/return [ 'ak' => 'LAynLOG9Aozh5iiNzeFbhjkgaxudGmri', 'baidu_map_url' => 'http://api.map.baidu.com/', 'geocoder' => 'geocoder/v2/',];
common.php代码
function doCurl($url, $type=0, $data=[]){ //初始化curl $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_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } //执行并获取内容 $output = curl_exec($ch); //释放curl句柄 curl_close($ch); return $output;}
controller/index.php代码
<?phpnamespace app\admin\controller;use think\Controller;class Index extends Controller{ public function map(){ \Map::getLngLat('北京昌平沙河地铁');exit;//用来测试的,测试结果是一串Json数据, //返回的Json数据中的每个参数的含义都可以在geocoding API里边查找 }}
3,测试结果截图如下:
二、 根据经纬度/地址调取百度地图
1, 获取第三方接口
2, 编写staticimage方法
3, 测试
首先我们要还是进入WebAPI页面,然后点开“静态图API”
小伙伴们可以将这个页面仔细阅读一下,先有一定的了解,调用起来会比较清晰熟练
1, 获取第三方接口
在该页面中找到“服务地址”并将其复制
2, 编写staticimage方法
该方法是写在Map.php中的(也就是说,将下边这个staticimage函数,放在Map.php中)
在extend/Map.php中添加西边这个函数
/* *根据经纬度/地址调取百度地图 */ //http://api.map.baidu.com/staticimage/v2 public static function staticimage($center){ if(!$center){ return '';//没有传递参数的时候,返回空 } $data = [ 'ak' => config('map.ak'), 'width' => config('map.width'), 'height' => config('map.height'), 'center' => $center, 'markers' => $center,//这个参数的含义在 静态图API的页面中找 ]; $s = http_build_query($data); $url = config('map.baidu_map_url').config('map.staticimage').'?'.$s; $result = doCurl($url); return $result; /* 注意:在静态图API那个页面中有如何在模板中展示地图的代码 <img style="margin:20px" width="280" height="140" src="" />只需要将这个src的地址修改一下 那么现在我们在controller/index.php中测试一下 */ }
在extra/map.php中再添加下边三个参数
'width' => 400,'height' => 300,'staticimage' => 'staticimage/v2',
在controller/index.php中添加一个test()函数
public function test(){ return \Map::staticimage('北京昌平沙河地铁'); //那么现在我们在任意一个模板中调用一下}
然后就是在你需要用到百度地图的模板中加入下边这行代码
<img style="margin:20px" width="280" height="140" src="填写你的url地址" />
我这里是<img style="margin:20px" width="280" height="140" src="{:url('index/test')}" />
3, 测试结果
到这里我们TP5.0封装百度地图就完成了
**大家如果想扩展功能,都可以在“静态图API”页面中调用不同的参数来实现更多的功能
希望这篇博客对大家有所帮助!!!**
- 《TP5.0学习笔记---百度地图封装》
- 《TP5.0学习笔记---发送邮件服务封装》
- 学习笔记 - 百度地图开发
- 百度地图API学习笔记
- 《TP5.0学习笔记---配置篇》
- 《TP5.0学习笔记---配置篇》
- 百度地图功能封装
- 百度地图的封装
- 百度地图用法封装
- Android学习笔记之百度地图基础知识
- Android学习笔记之百度地图Overlay
- 学习笔记-百度地图绘制扇形
- Android学习笔记之百度地图基础知识
- 百度地图学习笔记---ip定位
- 百度地图学习笔记(Android版)
- Android百度地图学习笔记(一)
- Android百度地图学习笔记---poi检索
- Android 百度地图学习笔记--公交路线查询
- java文件操作之创建目录
- alsa交叉编译
- 微信小程序
- PL/SQL Developer使用技巧、快捷键
- Redis中删除过期Key的三种策略
- 《TP5.0学习笔记---百度地图封装》
- ch6树与二叉树
- 05:输出亲朋字符串
- Mysql5.6的my.ini的位置
- EventBus 3.0源码解析
- xunsearch(迅搜中文全文搜索引擎)的简单使用
- 欢迎使用CSDN-markdown编辑器
- [LeetCode]241.Different Ways to Add Parenthese
- 城市选择器(仿照美团)