瘋狂ios講義之使用CoreLocation定位(1)

9.1 iOS的定位支持

iOS設備支持的定位方式有多種最早期的iPhone只支持通過運營商的基站信號進行定位後來iOS系統開始引入WiFi支持從而允許iOS設備通過周圍的WiFi信號進行定位。

iPhone 3g開始iPhone手機提供了內置的GPS模塊處理芯片從而允許通過GPS衛星系統進行定位。從iPhone 4開始iPhone手機更換了精確度更高、耗電量更少、靈敏度更高的芯片因此可以使用GPS進行精確定位。

下面先簡單介紹iOS定位支持的3種模式。

9.1.1 GPS衛星定位

GPS是英文Global Positioning System全球定位系統的簡稱GPS20世紀70年代由美國陸海空三軍聯合研製的新一代空間衛星導航定位系統。從這個介紹不難發現GPS的作用就是爲全球的物體提供定位功能。

GPS定位系統由3部分組成即由GPS衛星組成的空間部分、若干地面站組成的控制部分和普通用戶手中的接收機這3個部分。對於手機用戶來說手機就是GPS定位系統的接收機也就是說GPS定位需要手機的硬件支持GPS功能。

GPS定位需要能收到衛星信號才行衛星信號可能會被建築物比如高樓遮擋因此一般需要在室外進行接收、定位。雖然iPhone 4採用了高靈敏度的GPS芯片但仍然需要在窗戶旁或者戶外才能進行接收、定位因爲只有這些地方纔能確保衛星信號的強度和穩定性。

與基站定位、WiFi定位相比GPS定位耗電量最大速度最慢但是精度最高。

需要說明的是iOSGPS定位與單純的GPS定位不同它是一種所謂輔助GPS簡稱A-GPSA-GPS首先通過基站定位或WiFi定位獲得該設備的大概位置然後通過將設備的大致位置發到遠程服務器由服務器負責進行查詢和計算從而獲取當前位置的衛星信息並通過網絡將這些衛星信息反饋給iOS設備這樣就避免了iOS設備直接通過GPS掃描、分析天上的衛星信息如哪些衛星可見、具體在什麼位置、時鐘是多少等。因此通常來說A-GPS比單純的GPS更快。當然這只是一般而論對於專業級的GPS定位設備其GPS芯片的靈敏度可能更好因此這種GPS定位設備肯定更快。

A-GPS的優點是定位快缺點是需要網絡但也只是在初次定位時需要網絡一旦衛星信息返回在一段時間和範圍內這些衛星信息無須改變接下來的GPS定位就無須聯網直接使用已有的衛星參數即可。

iOS設備上iOS系統會綜合使用上述定位方式。一般來說iOS系統可能先按照最快的“無網基站定位”返回一個位置當有網絡連接時再使用“有網基站定位”來更新位置然後利用A-GPS查詢衛星星圖最後在能收到GPS信號的情況下轉爲使用GPS定位。

根據當前衛星信號情況和網絡環境iOS系統可能在上述方式之間反覆迭代不一定按照特定步驟或方式而且隨着iOS系統升級定位順序和規則可能改變。

9.1.2基站定位

每個手機基站都有一個標識符iOS設備可以蒐集周圍所有收到信號的基站和它們的標識符通過聯網發送到蘋果雲端服務器再由服務器根據這些基站的位置信息查詢並計算出當前位置然後把該定位信息返回給手機。因爲基站信號的輻射範圍大所以相對來說誤差是比較大的通常在500米到幾公里範圍內。

基於基站定位的方式具有速度快耗電量比較少但誤差較大的特徵。

在沒有網絡的情況下iOS 4對其進行了優化可以在沒有網絡連接時採用無網定位因爲Apple已經預先將一些重要基站幾十公里選一個提前存儲在iOS系統中因此即使不聯網iOS系統也可通過這些本地基站信息定位到設備的位置。這種定位方式的誤差更大通常在10公里到50公里範圍內。

無網基站定位的前提是iOS設備能接收到內置在手機中的那些“重要基站”的信號不一定是你的手機所屬運營商只要能收到信號就可以了所以室內、室外一樣都可以進行基站定位。

9.1.3WiFi定位

WiFi定位和基站定位的原理大致相似iOS設備通過無線網卡蒐集周圍所有的WiFi熱點獲得它們的MAC地址然後通過Apple的雲端服務器查詢該WiFi熱點是否已經登記如果已經登記即可獲取該WiFi熱點的位置最後通過對多個WiFi熱點折中計算得到當前位置並返回給iOS設備。

只要能收到手機信號的地方都可通過WiFi定位室內、室外的效果相同。

WiFi定位速度、耗電量和精度都介於基站和GPS之間精度大概在幾十米範圍內。

傳統的WiFi定位是需要網絡的但是iOS系統對其進行了優化可以實現無網WiFi定位。無網WiFi定位的原理是iOS設備在聯網狀態下會大致定位出設備的位置並自動將設備所在地周圍所有的WiFi熱點信息保存在手機系統中。在接下來的時間內即使當前iOS設備沒有聯網iOS系統也可以利用之前保存的本地的WiFi熱點信息定位出設備的位置。

根據無網WiFi定位的原理不難看出無網WiFi定位的前提是該iOS設備之前在該區域附近曾經接入過網絡如果初次到一個陌生的地方無網WiFi是無法定位的。

iOS系統在進行定位時已將底層具體的定位細節進行了屏蔽——也就是說這些定位細節對開發者而言是透明的iOS系統會智能地根據設備的情況和周圍的環境採用一套最佳的解決方案。例如能夠接收GPS信號那麼優先使用GPS定位否則採用WiFi或基站定位在WiFi和基站之間優先使用WiFi如果無法連接WiFi才使用基站定位。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章