1. 程式人生 > >iOS定位原理和使用建議

iOS定位原理和使用建議

看到很多網友討論iOS裝置定位的問題,這裡將我們所瞭解的關於iPhoneiPad、iPod等的定位原理做詳細的介紹,希望能為大家增加知識,減少誤區,更好地使用iOS裝置。

介紹之前,先宣告一下關於地圖加加的“偏移修正”功能,地圖加加可以對齊中國地區(地點、線路和照片的)座標和中國地圖之間的偏移,這個是我國測繪法規要求的一個數學意義的偏移,每個地方的偏移是固定的,法定的,和當前定位的方式、定位的精度與準確度沒有任何關係。即地圖加加只對齊偏移,並不能提升、降低或者改變iOS定位的速度、精度和規則,也沒有任何App可以做到或者說允許去做。

下文所有的定位誤差、定位偏移、定位精度等描述都是針對iOS定位硬體而言,和地圖加加或者任何一個app無關, 也適合iOS上所有的地圖App的定位邏輯,包括蘋果自帶的地圖app。


內容很長, 但是鑑於打字比看貼更辛苦, 大家就體諒一下, 鼓起勇氣, 慢慢看噢. (轉載請註明出處及秒酷-地圖加加 官方論壇和網址.)

---------------------------------------------------------------------------------------

iOS裝置都可以使用哪些方式進行定位?
最早期的iPhone只支援 手機基站定位, 之後通過iOS軟體升級引入了 WIFI定位, 而從iPhone 3G開始, iPhone手機就通過內建GPS處理晶片, 支援 GPS衛星定位 (準確地說, 應該是AGPS, 即:輔助GPS). 從iPhone 4開始,GPS換用了精確度更高,耗電更少的,靈敏度更高的晶片,而從iPhone4s和new iPad 3G版開始,增加了支援俄羅斯
GLONASS衛星定位系統的支援。

下面詳細列舉了所有的裝置和支援定位的情況:

定位模式有3種:
1、衛星定位
(1)GPS衛星定位:iPhone 3G/3GS/4/5,3G/4G版的iPad 支援
(2)GLONASS衛星定位:iPhone 4/5,3G/4G版的iPad 3/4/Mini 支援
2、手機基站定位
同1.1GPS衛星定位,即iPhone 3G/3GS/4/5,3G/4G版的iPad 支援
3、WIFI定位
所有iOS裝置,包括Mac電腦也支援。

下面分別介紹下三種定位方式以及蘋果在iOS系統中對其的優化:

手機基站定位:

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


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

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

下圖為iOS 4支援的全球無網路連線基站定位的基站:
positioning_cell_nodata.jpg 

WIFI定位:

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

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

下圖是iOS 4所有支援WIFI定位的地區:
positioning_wifi_range.jpg 

iOS優化:
無網WIFI定位:
傳統的WIFI定位需要網路,但是iOS對其進行了優化,可以實現無網WIFI定位。原理時iOS裝置在您有網路連線時,會大致定位出您的位置,並自動下載您所在地區周圍(幾個街區寬度或者更多)所有的WIFI熱點的資訊到本地。之後,當您在周圍行走並WIFI定位的時候,即使沒有網路,iOS照樣可以利用之前下載的WIFI熱點資訊定位出您的位置。
這也是為什麼有人號稱WIFI無網可定位的原因,但注意:無網WIFI定位的前提是您在這個區域附近曾經成功上過網,如果初次到一個陌生的地方,是無法定位的哦。

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

下圖是iOS自動在高密度地區下載周圍熱點資訊的一個大概範圍說明:


GPS定位:

(GLONASS原理與此類似,不做額外介紹)

原理
這個是美國軍方搞的, 軍民兩用, 但仍然完全受軍方控制(比如可以隨時隨地設定某個地區收到的訊號與否及其精度), 其原理就是:利用天上的衛星(共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裝置上,上述定位方式會綜合應用,一般地,可能先按照最快的“無網基站定位”返回一個位置,當有網路連線時,在用有網基站定位更新位置,然後,利用AGPS上網查詢衛星星圖,最後,在能收到GPS訊號的情況下,轉為使用GPS定位。

根據當前訊號情況和網路環境,iOS可能在上述方式之間反覆迭代,不一定一致特定步驟或者方式,而且隨著iOS升級,定位順序和規則可能改變。

----------------------------------------------------------------------------------------------------

常見問題:

1. 為什麼我iPhone當前定位誤差有幾百或者上千米?
iPhone初始定位都是用基站或者無網基站定位,誤差幾百或幾公里。之後,如果無法搜尋到WIFI訊號,或者無法搜尋到衛星訊號,就會一直是這個精度。
您可以開啟WIFI功能(不用連上,只需要開啟即可),或者到窗戶邊,或者戶外以便收到衛星訊號; 
解決方法: 多等一會兒,開啟資料流量(定位之後即可關閉),或者到戶外去。

2. 為什麼我的位置總是變來變去?
iOS根據當前網路環境,會不斷調整和修正定位方式,可能您所處地區基站和WIFI訊號太複雜或者太微弱,比如一會兒連上這個基站,一會兒連上另一個基站,導致iOS計算位置的時候不穩定。
解決方法: 開啟WIFI功能,開啟資料流量(定位之後即可關閉),或者到戶外去。

3. 無手機訊號可以定位嗎?無資料流量可以定位嗎?
對於iPhone或者3G/4G版iPad
情況1:【沒有手機訊號,沒有WIFI訊號,沒有上網】則定位只能在戶外利用GPS進行,初次定位時間可能很長,可能需要數分鐘,之後定位正常。
情況2:【沒有手機訊號, 有WIFI訊號,沒有上網】如果之前在周圍上過網,下載了附近的熱點,則利用無網WIFI定位可以找到位置,否則,和情況1一樣。
情況3:【沒有手機訊號, 有WIFI訊號,可以上網】利用WIFI定位找到位置,並且在定位時還會下載大量的周圍很大一個區域的所有WIFI熱點資訊,用於今後無網WIFI定位。
情況4:【有手機訊號, 沒有WIFI訊號,沒有上網】如果能收到iOS內建的“重要基站”的訊號,則使用這些基站進行無望基站定位,否則,無法定位。
情況5:【有手機訊號, 沒有WIFI訊號,可以上網】使用基站定位聯網查詢進行定位,同時可能會更新本地“重要基站”資訊。
.......
對於iPad WIFI版:
情況1:【沒有WIFI訊號,沒有上網】無法定位
情況2:【有WIFI訊號,沒有上網】如果之前在周圍上過網,則利用無網WIFI定位可以找到位置,否則,無法定位
情況3:【有WIFI訊號,可以上網】利用WIFI定位,並且在定位時還會下載周圍很大一個區域的所有WIFI熱點資訊,用於今後無網WIFI定位