絕大多數的智慧型手機都有GPS功能,其實除了手機之外,透過Foursquare等服務網站搭配支援的瀏覽器,桌上型電腦照樣也能玩。這次,筆者要帶大家認識幾個基本的定位技術,以及說明W3C如何讓瀏覽器玩地理定位。
▲不知道自己在哪裡?讓瀏覽器來告訴你吧。
地理定位不一定等於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熱點的地方、或是手機收訊不好,定位效果當然也會受影響。
▲手機定位有GPS與基地台定位的加持,通常會比電腦運用Wi-Fi與IP定位來得準確。
地理定位有標準的API
定位的方法與服務這麼多,應用程式界面(API)的一致性就變得非常重要,如果API有很多種,或者是硬體的規格非常複雜,那麼一台行動裝置勢必得浪費很多成本去處理相容性問題。
考慮到這一點,W3C決定制定地理定位規格標準。意思就是今天無論你是用什麼方法、哪間供應商的資料定位,都可以用同樣的API來存取資訊。
讓瀏覽器內建定位功能
標準化之後,要用瀏覽器實作就不困難了。如此一來有心的網站就可以透過瀏覽器、瀏覽器再透過ISP來取得讀者的地理情報。
那麼,瀏覽器是怎麼知道用戶位置的呢?難道瀏覽器本身就得具備一個龐大的資料庫、或者是需要再透過即時定位?其實有的瀏覽器開發商會跟ISP合作,比如Skyhook之類的業者在蒐集用戶分享出來的Wi-Fi、IP等定位資料後,就可以推算出經緯度。當然了,這些資訊一定會有誤差,基於保護用戶隱私考量,大家應該不會希望自己變成全民公敵吧。
▲瀏覽器蒐集定位資料時,會先徵求用戶的允許,確認用戶願意分享所在位置的資訊。
定位代碼實作
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); }
還有我在台北市士....別說太多的好 XD