手機定位的基本原理
目前智能手機的使用已經越來越普遍,手機定位也是手機上的一個核心基礎功能。舉一個常見的應用如叫車,司機需要知道你在哪里,同時打車軟件也需要基于司機和乘客的位置規劃一條路線,讓司機更高效的行駛到用戶這里。這就是典型的定位服務的應用。當然,除去這種應用,用戶位置本身的展示,也是地圖產品中不可缺少的。那么app是如何得知當前設備所處的位置的呢?

可用于無線定位的信號:①GPS信號②基站信號③wifi信號,以上三種是最常用的定位方式,此外還有藍牙/IP/地磁場等手段
通常智能手機有以下兩種定位方式:
一,調用系統級定位能力:
無論哪個系統(IOS、安卓、WP)都提供了一套系統級定位能力,這樣的定位能力,對應著是一套系統級API,這個API一般來說,總是會有如下幾個
精度的選項:
- 高精度:能搜到GPS衛星,則使用GPS定位,否則,則使用WIFI定位,如果WIFI和GPS都無法定位成功,只能根據基站來給出定位結果了。
- 平衡功耗:禁用GPS(因為它非常耗電),優先使用WIFI,如果WIFI不可用,則用基站來進行定位。
- 低功耗(被動定位):根據不同系統的規定,實現方式也不同,但大體上都是共享其他app的定位結果,即其他app以高精度、平衡功耗的方式得到位置,那么這個位置也一并推送給當前使用“低功耗定位”的app,也就是該app不消耗額外的能耗,就完成了定位。
當然,這種系統級定位能力是有著軟肋的,軟肋在于以下兩點:①在基站、WIFI定位能力上,系統定位能力取決于系統自己在這方面投入數據收集推算的能力,這個是參差不齊的。舉個簡單的例子,百度和高德在中國采集了成百上千個公共場所的室內定位信息,使之能達到米級的室內定位,蘋果做了嗎?谷歌做了嗎?微軟做了嗎?他們怎么和國內的服務商拼效果?
二、調用第三方定位SDK
對于可以公開讀取基站、WIFI信息的Android手機系統,國內的百度、高德等地圖廠商自行實現了定位SDK,該定位SDK的作用就是通過系統接口讀取到原始定位信息,然后借助于各家自行部署維護的數據庫,查詢到當前掃描到的基站、WIFI的位置,最終計算出更準確的定位結果,通過SDK的接口,返回給開發者。這么做的好處,在于能夠讓app的定位能力脫離對手機系統的依賴。
舉個例子,一個app他如果只是調用系統定位接口,那么在行貨手機,由于手機廠商已經把定位的網絡服務器重定向為國內定位服務商,所以肯定可以定位,但是在水貨手機上因為系統底層是直接連google服務器的,就會無法定位。但用戶就是上帝,出現了這個事情在用戶看來,就是不能接受的,為了保證app在所有手機上都可以定位,開發者就會不得不使用第三方的獨立定位SDK。
