iPad 4WIFI版/iPod Touch 5可以在没有网络的情况下依旧可以在地图进行定位原理转载自微博
隨著我發現沒有 GPS 衛星定位功能的 iPod Touch 在打開 WiFi 功能但是没有连接上WiFi的情況下竟然可以在
Google、百度、高德地圖上精準到我所在地的附近,這就引起了我很大的好奇心,到底這是怎麼做到的?顯然不可能是靠 IP Address
去查詢啊?相比之下,大多数安卓系统的手机,在不使用GPS、不连接上WiFi、不登录上运营商基站网络的情况下,却不能够离线定位。
最有可能的做法是:iPad 4、iPod Touch
5是将wifi热点信息的MAC地址缓存到系统中来定位的。初步缓存是半径约20-30公里范围内的热点。这个事情是iOS管理的,没应用程序什么事儿。缓存数据管理比较高效,数据量不算大。
iOS设备的定位原理:iOS设备有三种定位方式:GPS卫星定位(iPhone4s和iPad3开始还支持俄罗斯的GLONASS
),基站和WIFI。
对iPhone和iPad
3G/4G(带手机模块),支持卫星定位,准确说是AGPS,A是辅助的意思,就是说以GPS为主,基站和WIFI辅助下的GPS定位。
对iPod,iPad WiFi版:只支持WIFI定位。 定位原理是这样的:
1、基站定位,会搜集周围所有手机基站的信息(手机有信号),然后通过网络发送到苹果服务器,因为苹果那里已经有了“全球每个基站在什么坐标”这样的数据,此时利用你所在基站信息,可以为你查询出大致位置以及“当前位置当前时间天上可见的GPS卫星及其参数”,这些信息通过网络返回给手机,手机一方面会把返回的初次定位坐标显示给你(误差500米~几公里),同时开始利用返回的卫星信息连接GPS卫星接受信号,当通过卫星数据的计算得出当前GPS位置后(误差十来米),会更新您的当前位置。当没有网络时,基站定位仍然可用(iOS 4开始),因为苹果将全球基站分组,并将每个组最重要的基站提前预置到了iOS系统,但这个基站很少,误差在10公里到50公里。
2、WIFI定位:搜索周围所有的WIFI热点,不用连上,而只需要其唯一标示:MAC地址,剩下的过程和第一步一样,就是到网上查询热点位置,计算出您的位置,并且如果设备支持GPS,最终会切换到GPS。而WIFI定位速度和精度介于基站和GPS之间。在不支持GPS的机器上,这个结果就是最终结果。在没有网络的情况下,WIFI定位仍然可以工作,因为从iOS4开始,苹果会在您有网的时候,并且WIFI联网定位成功时,自动下载所在城市(或者区间)的大量WIFI热点信息到您的机器,可能是所在城市的成千上万个WIFI热点的位置信息,在不能上网时,就用这些数据进行定位。这样的定位有个前提,您曾经在同一城市某处联网成功并且WIFI定位(可能是自动的)。(这也是苹果会产生奇怪流量的原因之一)
3、GPS定位,从iPhone3G开始就内置GPS芯片,可以依靠GPS定位(最新的iPhone还支持俄罗斯的GLONASS),但是没有基站和WIFI辅助的情况下,需要一个非常漫长的时间获取当地当时卫星参数,
而且不一定成功,这也是为什么传统GPS仪初次定位(启动)需要很长时间,而iPhone初次定位(在有手机信号或WIFI的情况下)非常快。
小结1:对iPhone,即使没有手机信号和WIFI, GPS仍然可以用,只是可能非常慢或者失败。
小结2:对iPhone,要想初次定位迅速,如果发现迟迟不能定位,最好暂时打开流量甚至3G,在定位成功(GPS确定了卫星)后再关闭。
小结3:要进入无信号区旅行,如山谷,最好提前定位一次,确保GPS更新了卫星参数,之后再进入无信号区就可以完全利用GPS不需要网络了,这样比较安全。
小结4:所谓的无网络WIFI定位,前提并不是按照某个app或者地图,而是您曾经在该地区附近,如同一城市联网过,并且WIFI定位过。
iOS定位原理来源于苹果开发者大会上的官方视频,(WWDC 2010 - Session 115 - "Using Core
Location in iOS 4"),
这个是苹果给开发者的专业讲解,里面清晰描述了WIFI定位的原理:取得周围WIFI热点的MAC地址,发送到服务器并查询数据库,以定位用户位置。(原句为:"....
go to the a server and say what's the position of this WiFi
hotspot, and with the database, we can locate the user based on
that.....")
虽然现在是iOS 6,甚至iOS 7了,但是大体原理不会变。 该视频对无数据流量时的WIFI定位做了专门的介绍(iOS
4开始即支持),就是当有网络并且定位成功时,iOS会自动下载所在区域附近的所有的WIFI热点,(比当前能接受到的热点多得多,
可能数千个甚至更多)存储到本地,当本地没有网络时,会查询本地数据库来定位。当前提是之前连上过网络下载过热点库。
有些人会以为“必须安装XXX地图”和下载离线地图等前提条件才可以支持不连接wifi网络,不用基站,不用gps等方式定位,从iOS开放知识和对苹果的了解,苹果是不可能把周围热点信息这样的敏感数据公布给任何app的,没有热点信息,加上又没有联网,任何地图app都不可能干预到WIFI定位的,越狱机器例外。
把幾個名詞給解釋一下。
GPS
衛星定位:靠的是環繞在地球四周的數顆衛星發送訊號到地面,交叉連集出所在地的方法。從十幾年前開始出現汽車導航產品,就是使用這種技術。初次定位時常要花上一分鐘以上的時間,這也是目前汽車導航和智慧型手機都有提供的定位方式。當有遮蔽物阻擋來自天空的訊號時就會發生定位的困難。
A-GPS 定位:靠著事先下載星曆資料,能夠加速上述 GPS定位的初次定位速度。由於一般車用導航機都不具備網路連線能力因此無法事先下載星曆資料,所以也都不具備 A-GPS 定位。
手機基地台定位:靠的是偵測到的手機基地台(CellTower),比對資料庫以及信號強度,交叉連集出所在地的方法。也因為要能夠偵測手機基地台,所以一般車用導航機因不具備手機電話能力而無法提供,幾乎可以說手機基地台定位是智慧型手機或者能夠插手機SIM 卡的平板電腦才可以提供的功能。此法尚須有網路連線做資料庫查詢才能完成定位。
WiFi 定位:靠的是偵測附近周圍所有的無線網路基地台 (WiFi Access Point) 的MAC Address (類似 10-78-D2-93-58-C2 這樣的格式),去比對資料庫中該 MAC Address的座標,交叉連集出所在地。此法尚須有網路連線做資料庫查詢才能完成定位。
所以問題來了:這份無線網路基地台 MAC Address
對應到經緯度的資料庫,是怎麼建立起來的呢?如下的实例以谷歌地图为例,百度、高德、搜搜、搜狗的地图操作大致如此。
基礎建設靠的是 Google街景車(在谷歌的街景车在台湾、日本、美国等地很普遍,采用了街景扫描,但是在中国大陆,谷歌没有推出街景服务,倒是搜搜地图等有街景服务)。Google街景車除了拍下街景以外,另外還做了兩件事情:(訊息來源:Google blog)
沿路蒐集所有公開的無線網路 MAC Address,與當時的經緯度一併記錄。
根據拍下的街景來建立建築物 3D 模型資料。
但資料庫一定會面臨過期與需要更新的問題,這時候全世界有在使用行動裝置 +Google 定位程式的人,等於是在不知不覺中幫忙做這件事情。更新的方法是當 WiFi 與手機基地台定位或 GPS定位同時開啟時,手持裝置藉由手機基地台定位或 GPS 定位這兩種方式可以獲得目前的座標,再透過 WiFi 搜尋到附近所有的 MACAddress,背後向 Google 的資料庫做更新。(訊息來源:Google 員工 Christopher 的公開說法)
說穿了技術其實不難,但這麼龐大的資料庫,又能夠不痛不癢的號召每個行動裝置幫忙更新維護這份資料庫,大概也只有 Google
做得來了。
知道了原理之後,衍生出來的就是一些隱私權的問題。
首先就是 Google 蒐集 WiFi 的 MAC Address
資訊合法嗎?德國政府去年對此提出疑慮,而 Google 認為合法,兩造後來怎麼樣了我懶得去追,反正從技術上來看,MAC Address
在網路上要能夠被查詢到,那麼你與對方之間不能有路由器存在,一旦過了路由器那麼原始 MAC Address
就會被替換(詳細的原理這邊就不多說了),所以一般人雖然可以用很多方法去找出對方的 IP Address,但對方的 MAC
Address 就沒辦法了,中間經過的路由器太多啦!也就無法利用 MAC Address
去查對方身處何處。除非將木馬植入對方電腦來回報,且對方有在使用無線網路而且他附近的無線網路基地台有被登記到 Google
資料庫中,那才有機會找到對方所在地附近,但這難度又高條件又多,對警察來說還是用 IP Address
行文法院與電信業者來找精確的地址最快。
所以回頭來說隱私權,我個人覺得應該是不會,且 WiFi 的 MAC
Address 是屬於公開資訊,並非刻意用什麼非法手段才能取得。一般人就算探測到你的 MAC
Address,也不曉得你是誰或什麼人在使用。
再來就是定位錯誤的問題。
搬家後其無線網路基地台也跟著移動,那麼以 WiFi定位來看自己身在何處,可能會呈現仍然在上一個住所的問題。針對這種因為資料庫尚未被更新而產生的定位錯誤問題,Google 提供了一個無線網路定位錯誤的表格來申請回報,但一如一般 Google的服務一樣,這表格並不能保證立即得到回應。想要加速更新資料庫,除了填寫這份表格以外,另外就是自己時常拿行動裝置開著 WiFi +GPS 定位吧,這是剛才提過的資料庫更新法,總有一天 Google會因為你與行動裝置的努力而修正過來的。
回頭看我一開始以為 Google WiFi 定位是靠著 IP Address
來定位,真是大錯特錯了啊!Google 要的只是偵測到 WiFi 基地台的 MAC Address
就可以,也沒有強調一定要與無線基地台連線,只要打開行動裝置的 WiFi 功能,讓 Google 定位可以藉由 WiFi
去蒐集附近可偵測的 MAC Address,接著透過 3G 行動上網或此時你真的有 WiFi 連線,就可以去向 Google
資料庫查詢這些 MAC Address 連集起來的可能位置,就這樣完成定位了。
网友评论