淺析無(wú)線定位技術(shù)
其實(shí)就是現(xiàn)在最流行的Wi-Fi定位,其原理與基站定位類(lèi)似:
1.每一個(gè)無(wú)線AP都有一個(gè)全球唯一的MAC地址,并且一般來(lái)說(shuō)無(wú)線AP在一段時(shí)間內(nèi)是不會(huì)移動(dòng)的
2.設(shè)備在開(kāi)啟Wi-Fi的情況下,即可掃描并收集周?chē)腁P信號(hào),無(wú)論是否加密,是否已連接,甚至信號(hào)強(qiáng)度不足以顯示在無(wú)線信號(hào)列表中,都可以獲取到AP廣播出來(lái)的MAC地址
3.設(shè)備將這些能夠標(biāo)示AP的數(shù)據(jù)發(fā)送到位置服務(wù)器,服務(wù)器檢索出每一個(gè)AP的地理位置,并結(jié)合每個(gè)信號(hào)的強(qiáng)弱程度,計(jì)算出設(shè)備的地理位置并返回到用戶(hù)設(shè)備
4.位置服務(wù)商要不斷更新、補(bǔ)充自己的數(shù)據(jù)庫(kù),以保證數(shù)據(jù)的準(zhǔn)確性,畢竟無(wú)線AP不像基站塔那樣基本100%不會(huì)移動(dòng)
這樣的位置服務(wù)商現(xiàn)在來(lái)說(shuō)只有Skyhook和Google兩家.他們收集位置數(shù)據(jù)的方式也是相似的
1.主動(dòng)采集:Google的街景拍攝車(chē)還有一個(gè)重要的功能就是采集沿途的無(wú)線信號(hào),并打上通過(guò)GPS定位出的坐標(biāo)回傳至服務(wù)器;
Skyhook在美國(guó)及歐洲一些國(guó)家也是直接開(kāi)著信號(hào)采集車(chē)采集AP和基站的信號(hào)數(shù)據(jù),相對(duì)來(lái)說(shuō)覆蓋城市沒(méi)有Google多,目前中國(guó)僅有少數(shù)城市有覆蓋,并且他們?cè)诎ㄖ袊?guó)在內(nèi)的多個(gè)國(guó)家招募有償工作者,以協(xié)助Skyhook收集位置數(shù)據(jù)。當(dāng)然你也可以直接在其網(wǎng)站上提交一個(gè)MAC地址。
使用這種方式定位一般來(lái)說(shuō)需要與位置服務(wù)器進(jìn)行即時(shí)的網(wǎng)絡(luò)交互,Android正是如此,最好的證明就是關(guān)閉電話(huà)和GPS后,單單打開(kāi)Wifi但不連接任何一個(gè)無(wú)線網(wǎng)絡(luò)或者連接一個(gè)沒(méi)有接入互聯(lián)網(wǎng)的網(wǎng)絡(luò)時(shí),是無(wú)法進(jìn)行定位的。實(shí)際測(cè)試的時(shí)候,發(fā)現(xiàn)這種情況下部分軟件仍然可以定位,但是無(wú)論將設(shè)備移動(dòng)到哪里,應(yīng)用中的位置始終不會(huì)變化。因?yàn)锳ndroid的API中提供的方法是LocationManager.getLastKnownPosition,只要是通過(guò)這種方式獲取到的位置數(shù)據(jù),Android是不會(huì)立即定位的,而是將最后一次定位的數(shù)據(jù)返回給應(yīng)用,除非應(yīng)用發(fā)起更新位置的請(qǐng)求。
但是正是在網(wǎng)絡(luò)交互這一點(diǎn)上,Apple讓人覺(jué)得不可思議。前幾天在touch上安裝了一款地圖軟件,并下載了離線地圖,因?yàn)閠ouch不接入WLAN是沒(méi)有其他辦法聯(lián)網(wǎng)的,有了離線地圖會(huì)方便很多.一次外出時(shí),打開(kāi)地圖竟發(fā)現(xiàn),沒(méi)有連接任何無(wú)線網(wǎng)絡(luò)的情況下,touch竟然準(zhǔn)確地標(biāo)出了我的位置,走了幾步發(fā)現(xiàn)地圖上的標(biāo)記也準(zhǔn)確地移動(dòng)到了新的坐標(biāo).但是系統(tǒng)自帶的Google Map及部分網(wǎng)絡(luò)軟件都無(wú)法定位。
我們知道通過(guò)無(wú)線可以定位,但是Touch是如何做到在沒(méi)有網(wǎng)絡(luò)交互的情況下定位?
一開(kāi)始我猜測(cè)是離線地圖中包含位置元數(shù)據(jù),地圖應(yīng)用自行收集環(huán)境信息進(jìn)行定位測(cè)算,測(cè)試如下:
將該地圖應(yīng)用卸載,重新安裝,安裝成功后第一次打開(kāi)前即斷開(kāi)Wi-Fi連接(不關(guān)閉),然后打開(kāi)地圖應(yīng)用,定位成功,只不過(guò)地圖無(wú)任何顯示
#p#
是不是很離奇呢,也就是說(shuō)并不是離線地圖的功能,難道是...iOS?
為此我做了個(gè)簡(jiǎn)單的實(shí)驗(yàn),Safari是支持HTML5的,于是我想到了GeoLocation API:
javascript:navigator.geolocation.getCurrentPosition(function(position){alert(position.coords.latitude+"\n"+position.coords.longitude);},function(err){alert(err.code)});
先完全退出Safari,然后打開(kāi),直接將這段js敲進(jìn)地址欄訪問(wèn),如果成功獲取到位置信息,就顯示出經(jīng)緯度,否則顯示錯(cuò)誤碼
測(cè)試結(jié)果如下:
>開(kāi)啟wifi不連接任何網(wǎng)絡(luò)(隨著移動(dòng),坐標(biāo)會(huì)變)
#p#
可以看出,在開(kāi)啟Wi-Fi而不連接網(wǎng)絡(luò)的情況下,iOS仍然何以提供定位服務(wù),而關(guān)閉Wi-Fi后其實(shí)跟Android無(wú)網(wǎng)絡(luò)的情況相同,不是實(shí)時(shí)的定位
實(shí)驗(yàn)至此,基本上可以確定,是iOS緩存了歷史地點(diǎn)及附近一定范圍內(nèi)的位置數(shù)據(jù)(并且范圍不小,因?yàn)樵?jīng)去到一個(gè)從未去過(guò)的10公里外的度假村,無(wú)連接狀態(tài)仍然成功定位)位置的計(jì)算直接在本機(jī)進(jìn)行。
PS:其實(shí)還有一點(diǎn)挺困惑的,內(nèi)置的Google Map為什么不能定位呢?難道是因?yàn)镚oogle用自己的服務(wù)而不用與Apple合作的Skyhook的服務(wù)嗎(Google Map在已有地圖緩存的情況下定位時(shí)有與Google服務(wù)器交互的數(shù)據(jù)包,但不能斷定就一定是用于定位的數(shù)據(jù))?再者,GoogleMap在定位時(shí)狀態(tài)欄會(huì)顯示系統(tǒng)的定位服務(wù)圖標(biāo),表明調(diào)用了系統(tǒng)Api,卻始終無(wú)法定位。
既然談到HTML5定位,必然不能不提桌面瀏覽器,目前主流的瀏覽器都已經(jīng)支持HTML5。W3C草案所提出的Geolocation API是個(gè)訪問(wèn)地理位置信息的高層接口,該接口與實(shí)現(xiàn)設(shè)備緊密相關(guān),API本身對(duì)下面的位置信息一無(wú)所知。常見(jiàn)的位置信息來(lái)源主要包GPS、IP、RFID、AP MAC、cell ID等。那么它的定位效果如何呢?
測(cè)試結(jié)果如下:(Dell E4300/Ubuntu 10.10 32bit/FF6.0 & Chrome15dev)
無(wú)線開(kāi)啟、任意聯(lián)網(wǎng)狀態(tài):較準(zhǔn)確的定位
無(wú)線開(kāi)啟、不聯(lián)網(wǎng):無(wú)法定位
無(wú)線關(guān)閉、有線聯(lián)網(wǎng):可定位、偏差較遠(yuǎn)
無(wú)線關(guān)閉、不聯(lián)網(wǎng):無(wú)法定位
第一種:只要無(wú)線開(kāi)關(guān)是打開(kāi)的,周?chē)袩o(wú)線網(wǎng)絡(luò),不管是否連接無(wú)線網(wǎng)絡(luò)、是否是通過(guò)無(wú)線接入互聯(lián)網(wǎng),只要可以接入互聯(lián)網(wǎng)即可進(jìn)行準(zhǔn)確定位
第三種:應(yīng)該是通過(guò)IP定位
第二、四種:無(wú)法連接位置服務(wù)器,故無(wú)法定位(如果能定位就超神了~)
下面的圖可以體現(xiàn)定位時(shí)的網(wǎng)絡(luò)交互(測(cè)試時(shí)無(wú)其他任何網(wǎng)絡(luò)活動(dòng))
檢索下IP即可得知是Google的位置服務(wù) 。好在W3C標(biāo)準(zhǔn)要求瀏覽器爭(zhēng)得用戶(hù)同意后才可提供數(shù)據(jù)給第三方網(wǎng)站,否則要天下大亂了。。。
無(wú)線AP的覆蓋面越來(lái)越廣,在美國(guó)城市基本上地面上任意一點(diǎn)都有3個(gè)以上的無(wú)線網(wǎng)絡(luò)覆蓋,國(guó)內(nèi)大中城市也緊跟步伐,無(wú)線網(wǎng)絡(luò)變得越來(lái)越密集,以此種方式定位成本低,速度快,如果能將精確度提高到10M,相信大多GPS都要下崗了,只要有無(wú)線網(wǎng)絡(luò)環(huán)境,對(duì)比GPS有絕對(duì)的優(yōu)勢(shì),還不會(huì)受天氣和建筑物的影響。
【編輯推薦】