在接收普通消息地理位置消息location时,先设置好我们要接收一下经度和维度
//定义$longitude与$latitude接收用户发送的经纬度消息
$latitude = $postObj->Location_X;
$longitude = $postObj->Location_Y;
之后定义好回复的类型为text,回复内容为文本消息,如
$msgType="text";//回复类型
$contentStr="你发送的是地理信息"; //回复内容
接着,可以在根服务器下创建一个dt.php文件,打开,编写
//定义接口请求地址
$url = "http://api.map.baidu.com/telematics/v3/reverseGeocoding?location={$longitude},{$latitude}&coord_type=gcj02&output=json&ak=UKw0fMoMhVgh6ZKiK5BEnZU3EflOEc87";
//模拟http中的get请求
$str = file_get_contents($url);
//转换json格式数据为数组或对象
$json=json_decode($str);
dump($json);
其中,http://api.map.baidu.com/telematics/v3/reverseGeocoding?location={$longitude},{$latitude}&coord_type=gcj02&output=json&ak=UKw0fMoMhVgh6ZKiK5BEnZU3EflOEc87为接口API url地址,并模拟get请求的方式去请求这个地址,返回的是一个json数据,这里在地址中已经通过output=json参数设置好,默认是xml数据,最后,将返回的信息进行格式化,其中,json_decode($str);返回的是一个对象,后面加个参数,json_decode($str,true);,为true的话返回的是一个数组。然后可通过dump();函数来打印下结果,效果可通过localhost//dt.php来查看。location={$longitude},{$latitude},2个是经度,维度,这个是我们在初始化地图消息的时候就已经接收到的值。
查看出结果后就证明API接口是通的,之后,把它放到要回复的设置中,并在回复内容中调出{{$json->description}信息,如下图所示
elseif($msgType=="location"){
//回复类型
$msgType="text";
//定义接口请求地址
$url = "http://api.map.baidu.com/telematics/v3/reverseGeocoding?location={$longitude},{$latitude}&coord_type=gcj02&output=json&ak=UKw0fMoMhVgh6ZKiK5BEnZU3EflOEc87";
//模拟http中的get请求
$str = file_get_contents($url);
//转换json格式数据为数组或对象
$json=json_decode($str);
//回复内容
$contentStr="你发送的是地理信息,你的位置:{$json->description}";
//格式化字符串<br />
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
//返回XML数据给手机端<br />
echo $resultStr;
}
至此,地图API接口已完成
说明:这里的百度地图API,我是用的百度的车联网API,链接地址:http://lbsyun.baidu.com/index.php?title=car/guide/introduction
进去之后,可找到接口说明下的反Geocoding,
其中,URL中AK由上面的获取密钥可得
点开后,创建个应用就行,因为我做的是公众号,所以,这里我创建
的应用类别为小程序
图灵机器人和这个类似,其中,API接口我用的是v1.0版本,url为
http://www.tuling123.com/openapi/api?key=你的密钥&info=你要发送的消息
其中,你要发送的消息可用{$keyword}来替换,意为用户输入的关键字,key的话去官网申请一下
http://www.tuling123.com,注册后登陆,创建个机器人,就会获得自己的一个key。
网友评论