我們經(jīng)常用到的手機(jī)定位的原理到底是什么隙疚?

1

手機(jī)定位的價值

目前智能手機(jī)的使用已經(jīng)越來越普遍,手機(jī)定位也是手機(jī)上的一個核心基礎(chǔ)功能玫荣。舉一個常見的應(yīng)用如叫車甚淡,司機(jī)需要知道你在哪里,同時打車軟件也需要基于司機(jī)和乘客的位置規(guī)劃一條路線捅厂,讓司機(jī)更高效的行駛到用戶這里贯卦。這就是典型的定位服務(wù)的應(yīng)用。當(dāng)然焙贷,除去這種應(yīng)用撵割,用戶位置本身的展示,也是地圖產(chǎn)品中不可缺少的辙芍。

那么問題就來了啡彬,作為app的用戶,你可能會好奇這個app是如何知道你的位置故硅;而作為app的開發(fā)者庶灿,是如何在程序中得到設(shè)備當(dāng)前的準(zhǔn)確位置的呢?

這個問題說來話長吃衅,我們還是先從定位原理上來解釋吧往踢!

2

可用于無線定位的信號

很顯然,一個功能正常的手機(jī)徘层,總是能夠受到各種無線信號峻呕,這些無線信號的“局部唯一性”利职,是該設(shè)備能定位的關(guān)鍵前提。什么叫局部唯一性瘦癌?我們再把這些具體的信號來展開解釋下你就知道了:

基站信號:

一個手機(jī)能夠接打電話猪贪、收發(fā)短信,說明該手機(jī)能與附近基站發(fā)起交互讯私,收發(fā)信號热押。特別地,對于智能手機(jī)妄帘,還可以通過系統(tǒng)的接口得到基站ID楞黄。正常情況下池凄,每個基站ID是全球唯一的抡驼,這樣如果掃到了某個基站ID,我們又知道該基站的位置肿仑,便能粗略估計設(shè)備的位置致盟。做出這個推測的前提就是一個基站的信號發(fā)射范圍是有限的,正常的手機(jī)尤慰,不可能在相距這個基站很遠(yuǎn)的時候馏锡,還收到這個基站的信號。

在無線通信相關(guān)的教科書里伟端,講到基站定位杯道,總是會談到三角定位,也就是下圖描述的原理责蝠。下圖是很容易理解的党巾,一個手機(jī)能掃描到三個基站的信號,因此其必然在三個基站的共同覆蓋范圍內(nèi)霜医,從而推算的范圍就大大縮小齿拂。但現(xiàn)實是很骨感的,在現(xiàn)在的智能手機(jī)上肴敛,只有極少數(shù)的手機(jī)可以獲取到多個周圍的基站ID署海,而且也無法反算出和這些基站的距離,所以這個算法除非電信運營商自己可以試試医男,對于別人是沒有實戰(zhàn)價值的砸狞。在實戰(zhàn)中,只能是退而求其次镀梭,基于單個基站來定位刀森。

WIFI信號:

現(xiàn)在的智能手機(jī)都支持wifi上網(wǎng)了,而我們連接的每個wifi路由器(包括手機(jī)做移動熱點的那種)丰辣,都有全球唯一的MAC地址撒强。更重要的是禽捆,wifi路由器的部署成本低,因而非常普遍飘哨,在一個樓層里就會有很多個wifi熱點胚想。因而不難想到,一旦我們有了這個全球每個路由器的實際位置芽隆,那么我們就可以基于用戶手機(jī)掃描到的周圍wifi熱點浊服,確定用戶當(dāng)前的位置。

說到這里胚吁,有的朋友會問牙躺,如果一個人帶著手機(jī),開著移動熱點到處行走腕扶,還有那種地鐵孽拷、高鐵、公交車上的移動wifi半抱,豈不是就會引起定位的錯誤脓恕?答對了,確實是這樣窿侈,而且根據(jù)統(tǒng)計炼幔,這種情形還在愈演愈烈。因此史简,如何想辦法來迅速過濾這種移動熱點乃秀,是個值得研究的問題。

GPS信號:

如果手機(jī)在室外或者窗邊圆兵,那么就可以接收到天上的定位衛(wèi)星發(fā)射出來的信號跺讯,基于這種信號,可以推算手機(jī)到每顆衛(wèi)星的距離衙傀、衛(wèi)星位置抬吟,進(jìn)而推算出手機(jī)的位置來。需要注意的是统抬,這個解算是在GPS芯片中完成的火本,在手機(jī)操作系統(tǒng)層面上,可以直接通過API接口得到解算的結(jié)果和誤差半徑聪建。

對于GPS的原因我們不多解釋钙畔,但在調(diào)用時要注意兩點。第一就是GPS的初始定位是很耗時間的金麸,對于老一些的芯片擎析,可能要耗費幾分鐘才能冷啟動定位成功;第二是GPS精度并非是完全可依賴的,在一些地方達(dá)到幾百米都有可能揍魂。

其他:

以上三種是最常用的定位方式桨醋,此外還有藍(lán)牙/IP/地磁場等手段,對于它們的優(yōu)缺點现斋,我們匯總?cè)缦拢?/p>

定位方法

場景

精度

開發(fā)者實現(xiàn)方式

GPS

室外或窗邊喜最,初次定位需要若干秒鎖定等待時間

一般情況下10M內(nèi),高樓邊和高架下面100M內(nèi)

芯片實現(xiàn)庄蹋,系統(tǒng)API提供瞬内,開發(fā)者直接調(diào)用。

基站定位

可以打電話的地方

幾百米

系統(tǒng)API提供基站ID獲取接口限书,開發(fā)者自行維護(hù)基站數(shù)據(jù)庫虫蝶,自行查詢推算位置。

WIFI定位

有WIFI覆蓋的地方

幾米到幾十米均可能倦西,取決于部署密度能真。

系統(tǒng)API提供周圍WIFI的mac地址獲取接口,開發(fā)者自行維護(hù)mac數(shù)據(jù)庫调限,自行查詢推算位置舟陆。

IP定位

所有能上網(wǎng)的手機(jī)

如果連寬帶上網(wǎng)误澳,且寬帶IP穩(wěn)定耻矮,則幾十米到幾百米,否則只能到城市級忆谓,在漫游時IP定位可能會發(fā)生嚴(yán)重的錯誤裆装。

開發(fā)者需要部署一個服務(wù)端,在服務(wù)端得到手機(jī)設(shè)備聯(lián)網(wǎng)的公網(wǎng)ip倡缠,并且自行維護(hù)一個ip數(shù)據(jù)庫哨免,查詢推算位置。

藍(lán)牙定位

有iBeacon部署的區(qū)域

5-10M左右昙沦,取決于部署密度

系統(tǒng)API提供周圍藍(lán)牙信標(biāo)的設(shè)備ID獲取接口琢唾,開發(fā)者自行維護(hù)ibeacon數(shù)據(jù)庫,自行查詢推算位置盾饮。

磁場定位

任意區(qū)域采桃。

室內(nèi)磁場分布多樣的區(qū)域可達(dá)到3M,否則就會變差丘损。

系統(tǒng)API提供磁場強(qiáng)度獲取接口普办,開發(fā)者自行維護(hù)磁場數(shù)據(jù)庫,自行查詢推算位置徘钥。注意磁場強(qiáng)度的絕對定位能力弱衔蹲,須配合WIFI和Ibeacon等絕對定位方式

對于這些定位方法的詳細(xì)原理以及適用范圍,我們會在以后的介紹中呈础,細(xì)致展開舆驶。

3

開發(fā)者如何實現(xiàn)定位能力

了解了這些定位方式的“開發(fā)者實現(xiàn)方式”橱健,開發(fā)者恐怕要渾身冒汗了,千千萬萬的app難道者都如上述說的沙廉,“自行維護(hù)基站畴博、WIFI數(shù)據(jù)庫”嗎?

答案當(dāng)然是否定的蓝仲,在實際的工程實踐中俱病,主流的做法是兩種:

手段之一:調(diào)用系統(tǒng)級定位能力

無論哪個系統(tǒng)(IOS、安卓袱结、WP)都提供了一套系統(tǒng)級定位能力亮隙,這樣的定位能力,對應(yīng)著是一套系統(tǒng)級API垢夹,這個API一般來說溢吻,總是會有如下幾個精度的選項:

高精度:能搜到GPS衛(wèi)星,則使用GPS定位果元,否則促王,則使用WIFI定位,如果WIFI和GPS都無法定位成功而晒,只能根據(jù)基站來給出定位結(jié)果了蝇狼。

平衡功耗:禁用GPS(因為它非常耗電),優(yōu)先使用WIFI倡怎,如果WIFI不可用迅耘,則用基站來進(jìn)行定位。

低功耗(被動定位):根據(jù)不同系統(tǒng)的規(guī)定监署,實現(xiàn)方式也不同颤专,但大體上都是共享其他app的定位結(jié)果,即其他app以高精度钠乏、平衡功耗的方式得到位置栖秕,那么這個位置也一并推送給當(dāng)前使用“低功耗定位”的app,也就是該app不消耗額外的能耗晓避,就完成了定位簇捍。

當(dāng)然,這種系統(tǒng)級定位能力是有著軟肋的够滑,軟肋在于以下兩點

在基站垦写、WIFI定位能力上,系統(tǒng)定位能力取決于系統(tǒng)自己在這方面投入數(shù)據(jù)收集推算的能力彰触,這個是參差不齊的梯投。舉個簡單的例子,百度和高德在中國采集了成百上千個公共場所的室內(nèi)定位信息,使之能達(dá)到米級的室內(nèi)定位分蓖,蘋果做了嗎尔艇?谷歌做了嗎?微軟做了嗎么鹤?他們怎么和國內(nèi)的服務(wù)商拼效果终娃?居然還有人說蘋果定位和谷歌地圖在國內(nèi)定位準(zhǔn),我真是醉了蒸甜。

在中國棠耕,google的服務(wù)不可用,考慮到基站柠新、WIFI定位必須連接服務(wù)端發(fā)請求窍荧,因而Android的系統(tǒng)級定位能力的可用性也會有很大的影響,至少那些“水貨”手機(jī)恨憎,在中國基本就沒法調(diào)用系統(tǒng)定位服務(wù)了蕊退,而行貨手機(jī),相應(yīng)的廠商會改造這個API接口的實現(xiàn)憔恳,使得其重定向為請求國內(nèi)某些定位服務(wù)商瓤荔,從而使得這個接口重新變得可用(對開發(fā)者來說,他并不需要知道這個API是如何實現(xiàn)的)钥组。

但是输硝,我們不得不承認(rèn),在IOS和WP系統(tǒng)上者铜,因為OS沒有開放出讀取基站和WIFI的接口腔丧,因此實際上操作系統(tǒng)的定位能力已經(jīng)形成了壟斷,開發(fā)者也就無法實現(xiàn)自主的定位能力作烟。這也會導(dǎo)致在蘋果和WP手機(jī)上,所有的app在同一時刻的定位誤差砾医,都是一樣的拿撩。

手段之二:調(diào)用第三方定位SDK

對于可以公開讀取基站、WIFI信息的Android手機(jī)系統(tǒng)如蚜,國內(nèi)的百度压恒、高德等地圖廠商自行實現(xiàn)了定位SDK,該定位SDK的作用就是通過系統(tǒng)接口讀取到原始定位信息错邦,然后借助于各家自行部署維護(hù)的數(shù)據(jù)庫探赫,查詢到當(dāng)前掃描到的基站、WIFI的位置撬呢,最終計算出更準(zhǔn)確的定位結(jié)果伦吠,通過SDK的接口,返回給開發(fā)者。這么做的好處毛仪,在于能夠讓app的定位能力脫離對手機(jī)系統(tǒng)的依賴搁嗓。

舉個例子,一個app他如果只是調(diào)用系統(tǒng)定位接口箱靴,那么在行貨手機(jī)腺逛,由于手機(jī)廠商已經(jīng)把定位的網(wǎng)絡(luò)服務(wù)器重定向為國內(nèi)定位服務(wù)商,所以肯定可以定位衡怀,但是在水貨手機(jī)上因為系統(tǒng)底層是直接連google服務(wù)器的棍矛,就會無法定位。但用戶就是上帝抛杨,出現(xiàn)了這個事情在用戶看來茄靠,就是不能接受的,為了保證app在所有手機(jī)上都可以定位蝶桶,開發(fā)者就會不得不使用第三方的獨立定位SDK慨绳。

4

結(jié)束語

在本文中,我們討論了手機(jī)定位的價值真竖、各種定位方式的原理與開發(fā)者實現(xiàn)定位的工程化手段脐雪,希望大家讀完本文后,可以結(jié)合提示恢共,給出下列問題的回答战秋。

在蘋果手機(jī)上,微信的定位準(zhǔn)讨韭、微博的定位不準(zhǔn)V拧(蘋果手機(jī)上的應(yīng)用定位能力是誰提供的?)

我們公司搬家了透硝,我在新的公司定位到了老的地方U痢(先看看你是不是把路由器都帶過來了?)

在最新的Nexus6手機(jī)上濒生,谷歌地圖居然無法定位B癖谩(谷歌地圖為什么會無法定位?)

在家里居然給我定位到幾百米以外了罪治,我都搞不清是xx地圖太爛還是手機(jī)太爛了丽声,不是說好GPS精度5米嗎?(家里的話GPS可以定位成功嗎觉义?)

用陌陌雁社,在三個位置,對同一個好友計算三次距離晒骇,即可用“三角定位”鎖定好友的位置(如果對方在室內(nèi)霉撵,用的是什么定位磺浙?他的定位精確度是多少?你認(rèn)為這個精度可以做三角定位喊巍,還精確到對方的家嗎屠缭?)

在以后的介紹中,我們會進(jìn)一步對各種定位硬件的特點崭参、各種定位方式的實現(xiàn)原理進(jìn)行更細(xì)致的揭秘呵曹,敬請期待。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末何暮,一起剝皮案震驚了整個濱河市奄喂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌海洼,老刑警劉巖跨新,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坏逢,居然都是意外死亡域帐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門是整,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肖揣,“玉大人,你說我怎么就攤上這事浮入×牛” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵事秀,是天一觀的道長彤断。 經(jīng)常有香客問我,道長易迹,這世上最難降的妖魔是什么宰衙? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮赴蝇,結(jié)果婚禮上菩浙,老公的妹妹穿的比我還像新娘。我一直安慰自己句伶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布陆淀。 她就那樣靜靜地躺著考余,像睡著了一般。 火紅的嫁衣襯著肌膚如雪轧苫。 梳的紋絲不亂的頭發(fā)上楚堤,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天疫蔓,我揣著相機(jī)與錄音,去河邊找鬼身冬。 笑死衅胀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的酥筝。 我是一名探鬼主播滚躯,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嘿歌!你這毒婦竟也來了掸掏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤宙帝,失蹤者是張志新(化名)和其女友劉穎丧凤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體步脓,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡愿待,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了靴患。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仍侥。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蚁廓,靈堂內(nèi)的尸體忽然破棺而出访圃,到底是詐尸還是另有隱情,我是刑警寧澤相嵌,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布腿时,位于F島的核電站,受9級特大地震影響饭宾,放射性物質(zhì)發(fā)生泄漏批糟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一看铆、第九天 我趴在偏房一處隱蔽的房頂上張望徽鼎。 院中可真熱鬧,春花似錦弹惦、人聲如沸否淤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽石抡。三九已至,卻和暖如春助泽,著一層夾襖步出監(jiān)牢的瞬間啰扛,已是汗流浹背嚎京。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留隐解,地道東北人鞍帝。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像煞茫,于是被迫代替她去往敵國和親帕涌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容