天天看點

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

iOS裝置支援的定位方式有多種最早期的iPhone隻支援通過營運商的基站信号進行定位後來iOS系統開始引入WiFi支援進而允許iOS裝置通過周圍的WiFi信号進行定位。

從iPhone 3g開始iPhone手機提供了内置的GPS子產品處理晶片進而允許通過GPS衛星系統進行定位。從iPhone 4開始iPhone手機更換了精确度更高、耗電量更少、靈敏度更高的晶片是以可以使用GPS進行精确定位。

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

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

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

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

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

需要說明的是iOS的GPS定位與單純的GPS定位不同它是一種所謂輔助GPS簡稱A-GPS。A-GPS首先通過基站定位或WiFi定位獲得該裝置的大概位置然後通過将裝置的大緻位置發到遠端伺服器由伺服器負責進行查詢和計算進而擷取目前位置的衛星資訊并通過網絡将這些衛星資訊回報給iOS裝置這樣就避免了iOS裝置直接通過GPS掃描、分析天上的衛星資訊如哪些衛星可見、具體在什麼位置、時鐘是多少等。是以通常來說A-GPS比單純的GPS更快。當然這隻是一般而論對于專業級的GPS定位裝置其GPS晶片的靈敏度可能更好是以這種GPS定位裝置肯定更快。

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

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

根據目前衛星信号情況和網絡環境iOS系統可能在上述方式之間反複疊代不一定按照特定步驟或方式而且随着iOS系統更新定位順序和規則可能改變。

每個手機基站都有一個辨別符iOS裝置可以搜集周圍所有收到信号的基站和它們的辨別符通過聯網發送到蘋果雲端伺服器再由伺服器根據這些基站的位置資訊查詢并計算出目前位置然後把該定位資訊傳回給手機。因為基站信号的輻射範圍大是以相對來說誤差是比較大的通常在500米到幾公裡範圍内。

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

在沒有網絡的情況下iOS 4對其進行了優化可以在沒有網絡連接配接時采用無網定位因為Apple已經預先将一些重要基站幾十公裡選一個提前存儲在iOS系統中是以即使不聯網iOS系統也可通過這些本地基站資訊定位到裝置的位置。這種定位方式的誤差更大通常在10公裡到50公裡範圍内。

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

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才使用基站定位。