PHP 解析GPS、JT808協(xié)議的WI-FI定位
最近公司有個需求就是GPS設(shè)備在室內(nèi)的時候,本身的GPS定位會有很大的偏差,所以需要用到Wi-Fi定位,這樣地圖上顯示的位置不會有偏差。
首先設(shè)備上報數(shù)據(jù)是這樣的
7e02000067082037603624001400000000000000000000000000000000000000000000211029064947040200630501010602000030011c310100542b060c839a2af139340c839a2af13434e04007e06ad83914d169a991394614d169a9913846fc0c459f6a00465d0b0101cc01770e0786c7013b547e根據(jù)文檔擴(kuò)展協(xié)議補(bǔ)充(這里根據(jù)自己的擴(kuò)展協(xié)議去進(jìn)行下一步)

附加信息ID:0x54、0x5D就是Wi-Fi和基站的數(shù)據(jù)信息
通過以下代碼得到下面的數(shù)據(jù)
$num =hexdec($data[$k + 1])-1;$total = $num / 7;$numArray = array_slice($data, $k + 3, $num);$array = implode($numArray);
0c839a2af139340c839a2af13434e04007e06ad83914d169a991394614d169a9913846fc0c459f6a0046再進(jìn)一步解析出mac地址數(shù)據(jù)
$newarray = str_split($array,14);foreach($newarray as $k=>$vo){$str = substr($vo,0,12);$str = implode(':', str_split($str, 2));$result.=$str.',-'.hexdec(substr($vo,12,14)).'|';}return substr($result,0,strlen($result)-1);
最終得出結(jié)果
0c:83:9a:2a:f1:39,-52|0c:83:9a:2a:f1:34,-52|e0:40:07:e0:6a:d8,-57|14:d1:69:a9:91:39,-70|14:d1:69:a9:91:38,-70|fc:0c:45:9f:6a:00,-70這里要注意,信號強(qiáng)度需要轉(zhuǎn)一下,比如信號強(qiáng)度是0x46,要轉(zhuǎn)成十進(jìn)制70,然后在70前面加個-號,最終算出來的信號強(qiáng)度就是-70dBm,單位是dBm
拿著這個Mac地址呢,去第三方平臺(比如:高德地圖)申請Wi-Fi轉(zhuǎn)換經(jīng)緯度接口
$url?=?"https://apilocate.amap.com/position?accesstype=1&imei=這里是手機(jī)號的IMEI卡號&macs=這里填mac地址&output=json&key=這里填自己申請的key";$result?=?$this->curl($url);$result = json_decode($result,true);
得出經(jīng)緯度等位置信息
{"infocode":"10000","result":{"city":"深圳市","province":"廣東省","poi":"新能源創(chuàng)新產(chǎn)業(yè)園","adcode":"440305","street":"創(chuàng)盛路","desc":"廣東省 深圳市 南山區(qū) S301南坪快速 靠近新能源創(chuàng)新產(chǎn)業(yè)園","country":"中國","type":"3","location":"113.9524951,22.5628781","road":"S301南坪快速","radius":"29","citycode":"0755"},"info":"OK","status":"1"}
在地圖上是這樣的

評論
圖片
表情
