車聯網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;
}
}
......