LBS开发
功能:用户发送自动的位置,返回周围的厕所信息
思路:根据用户的经纬度信息,调用百度地图的api,查询周围的厕所位置并且返回!
步骤:进入百度地图官网注册账号,选择web api接入
我们先看开发者文档
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1351776360</CreateTime> <MsgType><![CDATA[location]]></MsgType> <Location_X>23.134521</Location_X> <Location_Y>113.358803</Location_Y> <Scale>20</Scale> <Label><![CDATA[位置信息]]></Label> <MsgId>1234567890123456</MsgId> </xml>
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | location |
Location_X | 地理位置维度 |
Location_Y | 地理位置经度 |
Scale | 地图缩放大小 |
Label | 地理位置信息 |
MsgId | 消息id,64位整型 |
//首先判断用户是否发一个位置信息,回复给用户厕所的位置信息
if($msgType == "location"){
//在百度地图开发者中心,自己去注册,利用的自己的ak,json格式,经纬度是用户发送过来的
//要用post接收
$url = 'http://api.map.baidu.com/telematics/v3/local?location='.$postObj->Location_Y .','.$postObj->Location_X .'&keyWord=%E5%8E%95%E6%
//因为是json格式,所以转化成数组,用file_get_contents请求url
$arr = json_decode((file_get_contents($url)),true);
//循环显示pointlist数组的数据 name,address,距离
foreach($arr['pointList'] as $k => $v){
$contentStr .= $v['name'].$v['address'] .'距离您有' .$v['distance'] . "米\n";
} $
msgType = 'text';
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
成功返回!
![](https://images2015.cnblogs.com/blog/1114226/201704/1114226-20170419210806368-267717315.png)
成功!