1. 程式人生 > >iOS中三種定位方式

iOS中三種定位方式

原理

每個手機基站都有一個識別符號,iPhone或3G iPad可以蒐集周圍所有收到訊號的基站和它們的識別符號,通過聯網傳送到蘋果雲端伺服器,再由伺服器根據這些基站的的位置資訊查詢並計算出當前位置,然後返回給手機。因為基站訊號輻射範圍大,所以誤差也大,在500米 ~ 幾公里.

特點

定位速度最快, 耗電最少,誤差幾百上千米.

iOS優化

傳統的基站定位需要連線雲端伺服器,產生網路流量,iOS 4對其進行了優化,可以在沒有網路連線時支援無網定位,因為蘋果預先已經將一些重要基站(幾十公里選一個)提前儲存在iOS系統中,在無網情況下,不用上網也能通過這些本地基站資訊定位到使用者位置,但這個誤差範圍更大,在10公里到50公里。
無網基站定位的前提是:您的手機能接受到內建在手機中的那些“重要基站”的訊號,不一定是您手機所屬運營商,只要能收到訊號就可以了。

WIFI定位

原理

和基站定位原理差不多, iOS裝置(或者Mac電腦)通過無線網絡卡手機周圍所有的WIFI熱點(不需要連線上,只需要有訊號就行),獲得它們的MAC地址,然後到蘋果雲端伺服器查詢這個熱點是否已經登記,登記的話它的位置是多少,最後通過計算(多個熱點折中)得到當前位置並返回給使用者。只要收到手機訊號的地方都可以基站定位,所以室內室外一樣。

特點

WIFI定位速度、耗電和精度都介於基站和GPS之間,精度大概在幾十米。(注意,WIFI定位的支援範圍沒有基站定位廣,但是蘋果的雲端伺服器一直在不斷增加新的熱點資訊,使得熱點定位支援的地區越來越多)

iOS優化

無網WIFI定位:傳統的WIFI定位需要網路,但是iOS對其進行了優化,可以實現無網WIFI定位。原理時iOS裝置在您有網路連線時,會大致定位出您的位置,並自動下載您所在地區周圍(幾個街區寬度或者更多)所有的WIFI熱點的資訊到本地。之後,當您在周圍行走並WIFI定位的時候,即使沒有網路,iOS照樣可以利用之前下載的WIFI熱點資訊定位出您的位置。

這也是為什麼有人號稱WIFI無網可定位的原因,但注意:無網WIFI定位的前提是您在這個區域附近曾經成功上過網,如果初次到一個陌生的地方,是無法定位的哦。

關於自動下載的熱點個數和範圍,這個是蘋果根據當地熱點的密度動態決定的,當地熱點很多時(如市中心),可能只下載幾條街道範圍的所有熱點,當地熱點密度很小時(例如海濱城市),可能會下載整個城市的所有熱點。

GPS定位

原理

這個是美國軍方搞的, 軍民兩用, 但仍然完全受軍方控制(比如可以隨時隨地設定某個地區收到的訊號與否及其精度), 其原理就是:利用天上的衛星(共24顆)不斷地廣播訊號, 地面的GPS接收裝置收到訊號後, 通過分析多個衛星訊號,就可以計算出地球座標, GPS保證全球任何一個地方(98%)都可以同時收到至少4個衛星的訊號, 從而可以準確確定您的經緯度以及海拔位置. GPS定位精度可達10米以內, 不過這是美國軍方控制的, 戰爭時期可能變的不穩定或者誤報. (不過我國也有自己的系統, 北斗系統, 目前已經亞洲的覆蓋, 還在推廣中)

衛星定位必須要能收到衛星訊號,因為衛星訊號都是很微弱的,雖然iPhone 4開始提升了GPS硬體的靈敏度,但仍然需要在窗戶旁,或者戶外使用,才能確保衛星訊號的強度和穩定性。

特點

與基站定位和WIFI定位相比,GPS耗電最大,速度最慢,但是精度最高。

而iPhone的GPS與純粹的GPS定位不同, 稱為A-GPS, 即輔助GPS.(比GPS更優,不過GPS也分晶片和效能的,不是說所有的AGPS比所有的GPS都好)

因為GPS定位中最耗時、最耗電的就是獲取當前天上的衛星資訊,哪些衛星可見、在什麼位置、時鐘是多少等等,這個過程可能花費數十秒甚至幾分鐘,而AGPS就是利用網路,首先將基站定位或者WIFI定位獲得的大概位置發到遠端伺服器,有伺服器進行查詢和計算,得出這個位置下當前衛星資訊,反饋給iOS裝置,iOS裝置就可以直接用這些資訊來接受衛星訊號,不用自己去掃描分析了。這樣可以極大提高定位速度,將初次定位時間縮短到1~2秒完成。

A-GPS優點是定位快,缺點是需要網路,但也只是在初次定位時需要網路,因為一旦衛星資訊返回,在有限時間和範圍內,這些資訊無須改變,之後的GPS定位就不再需要聯網,都是直接用這些衛星引數接受資訊了。

總結

可見iOS定位依然有三種方式,但是一般使用都是Core Location框架,然後用CLLocationManager類來實現定位,那到底內部是用的哪種定位方式呢?還是系統自己分配?

系統會自動分配的 而且還會有快取

iOS裝置能提供3種不同途徑進行定位:Wifi, 蜂窩式行動電話基站, GPS衛星
iOS 不像Android系統在定位服務程式設計時,可以指定採用哪種途徑進行定位。iOS的API把底層這些細節遮蔽掉了,開發人員和使用者並不知道現在裝置是採用 哪種方式進行定位的,iOS系統會根據裝置的情況和周圍的環境,採用一套最佳的解決方案。這個方案是這樣的,如果能夠接收GPS資訊,那麼裝置優先採用 GPS定位,否則採用Wifi或蜂窩基站定位,在Wifi和蜂窩基站之間優先使用Wifi,如果無法連線Wifi才使用蜂窩基站定位。

總體來說GPS定位優點是準確、覆蓋面廣闊,缺點是不能被遮擋(例如:在建築物裡面收不到GPS衛星訊號)、GPS開啟後比較費電。蜂窩基站不僅誤差比較大,而且會耗費使用者流量費。而Wifi定位是最經濟實惠的。