【O專欄】為什麼瀏覽器知道你在哪裡?

【O專欄】為什麼瀏覽器知道你在哪裡?

絕大多數的智慧型手機都有GPS功能,其實除了手機之外,透過Foursquare等服務網站搭配支援的瀏覽器,桌上型電腦照樣也能玩。這次,筆者要帶大家認識幾個基本的定位技術,以及說明W3C如何讓瀏覽器玩地理定位。

【O專欄】為什麼瀏覽器知道你在哪裡?

▲不知道自己在哪裡?讓瀏覽器來告訴你吧。

地理定位不一定等於GPS,有很多種技術都可以用來知道你現在在哪裡,以下是比較常見的:

一、IP定位

每一台連上網路的電腦都具有一個獨一無二的IP位址,經由IP位址可以反查出電腦位置,但是結果並不精確,而且很容易到受到ISP的IP分配機制影響,而造成誤差。

二、GPS定位

GPS是我們最常聽到的定位技術,它是利用衛星來定位,可以很精確的偵測到使用者位置。但是要玩GPS,行動裝置一定要有GPS模組,而且儘管GPS非常精準,還是會有技術上的侷限,比如在偵測位置時,GPS的感應器要位於視線範圍內(line of sight),因此在有很多高樓大廈、或者是遮敝物的地方,GPS反而沒有辦法運作自如。

三、Wi-Fi三角測量定位

這個定位技術可以說是為都會區而設的,因為熱鬧的大都市通常會有不少Wi-Fi熱點,定位供應商可以根據這些熱點的相對位置、距離等建立一個資料庫。Wi-Fi三角測量適用於GPS無法滲透的地方,不過缺點是需要經常更新資料庫。

四、基地台三角測量定位

借助基地台之間的相對位置,可以定位出用戶在哪裡,只要你的手機收得到訊號,就能定位。

一般來說,這四種技術的準確性由高而低分別是:GPS定位、Wi-Fi三角測量、基地台三角測量、IP定位。但還是要視環境而定,比如你到沒有Wi-Fi熱點的地方、或是手機收訊不好,定位效果當然也會受影響。

【O專欄】為什麼瀏覽器知道你在哪裡?

▲手機定位有GPS與基地台定位的加持,通常會比電腦運用Wi-Fi與IP定位來得準確。

地理定位有標準的API

定位的方法與服務這麼多,應用程式界面(API)的一致性就變得非常重要,如果API有很多種,或者是硬體的規格非常複雜,那麼一台行動裝置勢必得浪費很多成本去處理相容性問題。

考慮到這一點,W3C決定制定地理定位規格標準。意思就是今天無論你是用什麼方法、哪間供應商的資料定位,都可以用同樣的API來存取資訊。

讓瀏覽器內建定位功能

標準化之後,要用瀏覽器實作就不困難了。如此一來有心的網站就可以透過瀏覽器、瀏覽器再透過ISP來取得讀者的地理情報。

那麼,瀏覽器是怎麼知道用戶位置的呢?難道瀏覽器本身就得具備一個龐大的資料庫、或者是需要再透過即時定位?其實有的瀏覽器開發商會跟ISP合作,比如Skyhook之類的業者在蒐集用戶分享出來的Wi-Fi、IP等定位資料後,就可以推算出經緯度。當然了,這些資訊一定會有誤差,基於保護用戶隱私考量,大家應該不會希望自己變成全民公敵吧。

【O專欄】為什麼瀏覽器知道你在哪裡?

▲瀏覽器蒐集定位資料時,會先徵求用戶的允許,確認用戶願意分享所在位置的資訊。

定位代碼實作

W3C的地理定位API可以跨平台及瀏覽器。首先,網站開發人員可以利用以下的代碼A測試用戶的瀏覽器是否支援地理定位。如果可以支援,那麼代碼B的successFunction就會被啟動,我們就可以直接蒐集到經緯度的座標數據。目前可以支援地理定位的瀏覽器有Opera 10.6 (包括 Opera Mobile 10.1)、Chrome 5、Firefox 3.6以及Safari 5(包括iPhone上的Safari Mobile)。

代碼A
//Check if browser supports W3C Geolocation API if (navigator.geolocation) {
   navigator.geolocation.getCurrentPosition(successFunction, errorFunction); } else {
   alert('It seems like Geolocation, which is required for this page, is not enabled in your browser. Please use a browser which supports it.'); }

代碼B
function successFunction(position) {
   var lat = position.coords.latitude;
   var long = position.coords.longitude;
   alert('Your latitude is :'+lat+' and longitude is '+long); }

謝子斌(Zi-Bin)
作者

目前Opera挪威總部擔任Opera網路宣講師,在世界各地宣講網路標準技術,包括HTML5、CSS3等。此外也於W3C擔任HTML小組成員、HTML5中文小組主席。

使用 Facebook 留言
4f949fa914e1b1d872f00b982241801c?size=48&default=wavatar
2人給推

1.  Vallwesture (發表於 2010年12月29日 19:02)
很特別的介紹, 希望以後精確度會愈來愈高
Afc37f8bf3a7f7c2552484631037f565?size=48&default=wavatar
1人給推

3.  elephant (發表於 2010年12月30日 12:51)
有地理定位規格的標準真的很重要。
無痕
5.  無痕 (發表於 2011年1月03日 15:42)
只要不會觸犯到個人隱私,這技術基本上樂見其成。
還有我在台北市士....別說太多的好 XD
TonyQ
6.  TonyQ (發表於 2011年1月22日 07:43)
代碼A的script code跟comment 混一起了,排版最好也調整一下比較好。
發表回應
謹慎發言,尊重彼此。按此展開留言規則