车联网API——位置、距离
车联网接口
反Geocoding:http://lbsyun.baidu.com/index.php?title=car/api/anti-geocoding
测距:http://lbsyun.baidu.com/index.php?title=car/api/distance
wx_sample.php
......
//responseMsg整理
public function responseMsg(){
//get post data,May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if(!empty($postStr)){//如果用户端发来的文本内容不为空
$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->toUserName;
$type = $postObj->MsgType;
$latitude = $postObj->Location_X;
$longitude = $postObj->Location_Y:
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
switch ($type) {
case 'image':
$contentStr = "你的图片很棒!";
break;
case 'location':
//位置
//反Geocoding接口
$geourl = "http://api.map.baidu.com/telematics/v2/reverseGeocoding?location={$longitude},{$latitude}&ak=la3cde429f38434f1811a75e1a90310c";
//读取文件
$apistr = file_get_contents($geourl);
//xml解析
$apiobj = simplexml_load_string($apistr);
$addstr = $apiobj->results->address;
//逐级解析
$contentStr = "我知道你在{$addstr}附近";
//测距
//测距api
$geourl = "http://api.map.baidu.com/telematics/v2/distance?waypoints=116.681889,23.355164;{$longitude},{$latitude}&ak=1a3cde429f38434f1811a75e1a90310c";
$apistr = file_get_contents($geourl);
$apiobj = simplexml_load_string($apistr);
$distanceobj = $apiobj->results->distance;
//强制转换公里数
//转为int
$distanceint = intval($distanceobj);
//转为公里
$diskmint = distanceint/1000;
if($diskmint<5){
$contentStr = "你离公司还有{$diskmint}公里远,我们可以免费送货上门";
}else{
$contentStr = "你离公司还有{$diskmint}公里远,我们不能送货上门";
}
//多距离比较
//第一个店铺的距离
$geourl1 = "http://api.map.baidu.com/telematics/v2/distqance?waypoints=116.681837,23.353299;{$longitude},{$latitude}&ak=1a3cde429f38434f1811a75e1a90310c";
$apistr1 = file_get_contents($geourl1);
$apiobj1 = simplexml_load_string($apistr1);
$distanceobj1 = $apiobj1->results->distance;
$distanceint1 = intval($distanceobj1);
//第二个店铺的距离
$geourl2 = "http://api.map.baidu.com/telematics/v2/distqance?waypoints=116.756091,23.46596;{$longitude},{$latitude}&ak=1a3cde429f38434f1811a75e1a90310c";
$apistr2 = file_get_contents($geourl2);
$apiobj2 = simplexml_load_string($apistr2);
$distanceobj2 = $apiobj2->results->distance;
$distanceint2 = intval($distanceobj2);
//第三个店铺的距离
$geourl3 = "http://api.map.baidu.com/telematics/v2/distqance?waypoints=116.372831,23.549993;{$longitude},{$latitude}&ak=1a3cde429f38434f1811a75e1a90310c";
$apistr3 = file_get_contents($geourl3);
$apiobj3 = simplexml_load_string($apistr3);
$distanceobj3 = $apiobj3->results->distance;
$distanceint3 = intval($distanceobj3);
//最近的店铺距离
$mindistanceint = min($distanceint1,$distanceint2,$distanceint3);
if($mindistanceint == $distanceint1){
$contentStr = "离你最近的店铺有{$mindistanceint}米远,位置是1号路";
}elseif($mindistanceint == $distanceint2){
$contentStr = "离你最近的店铺有{$mindistanceint}米远,位置是2号路";
}else{
$contentStr = "离你最近的店铺有{$mindistanceint}米远,位置是3号路";
}
$contentStr = "你离公司还有『$distanceobj}米远";
break;
case 'link':
$contentStr = "这是个link";
break;
default:
$contentStr = "此项功能尚未开发";
}
$msgType = "text";
$resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
}else{//如果用户端发来的文本内容为空
echo "";
exit;
}
}
......