歡迎回到顛覆網路 35 天,今天 (其實是昨天晚上… 有時差) 的第一篇「Firefox 3.5 與地理位置資訊揭露」是我比較關心的議題、我會花較多力氣編譯全文 — 不過一如往常,請不要期待精準的翻譯,這也不是我的本意。
網路風行,也因此常有帶著電腦到處跑的機會。有時就是想找一下附近的餐廳,所以你打開網路要找… 且慢,我「現在」在哪裡?如果熟悉這附近也就算了,要是出門在外有時還真不確定自己現在正在何處。就算你知道自己所在位置好了,該怎麼找呢?打開 Google 地圖或 Y!生活家、選擇所在區域… 放大點、縮小點,輸入文字開始搜尋…
如果網路服務能自動判別我們的所在地,這一切會方便很多 — 再且慢,這可能嗎?當然可能,如果你曾出國使用自己的電腦,在設定不改的情況下造訪 google.com,很可能會被引導至該國語言的 Google 網頁。這是依據你的 IP 來判斷國別的方式,諸如此類的定位方法當然也還有 GPS 等更精準的東西。
取用地理資訊
目前 W3C 正在發展地理位置規格草案,而 Firefox 3.5 實作了這個 API、讓網際應用程式可以藉此 (在你的允許下) 得知你的地理位置、提供更好的服務。以 JavaScript 取得地理資訊很簡單:
function showPosition(position) {
alert(position.coords.latitude + “ “ +
position.coords.longitude);
}
navigator.geolocation.getCurrentPosition(showPosition);
呼叫後 Firefox 會詢問使用者是否願意提供個人地理位置資訊。
錯誤處理
取用地理資訊時有兩類錯誤要留心:
首先,使用者可能拒絕提供資訊、或甚至完全不回應。你可以在呼叫時便先行設定錯誤掌控函式,並設定等待回應的時限。
navigator.geolocation.getCurrentPosition(successCallback,
errorCallback,
{timeout:30000});
本例裡,使用者若拒絕請求,那麼就會呼叫 errorCallback 函式;若使用者超過 30 秒不回應,也會呼叫 errorCallback。
第二,使用者的地理位置可能隨時更改 (像是邊搭高鐵邊用 3G),這時可以使用 watchPosition 來監看。
navigator.geolocation.watchPosition(showPosition);
在此例,每回地理資訊一有變動、就會呼叫 showPosition 函式。
當然你也可以定期呼叫 getCurrentPosition,不過基於節能減碳、我們建議你盡可能採用 watchPosition — 此例裡只有地理位置變動了以後才會呼叫 showPosition,瀏覽器回應速度會快些、而這對效能表現相對較差的行動裝置非常重要。
帽裡乾坤
方才提過、技術上來說要得知地理位置有幾種常見方法,像是 WiFi、IP、GPS 等。Firefox 3.5 目前使用 WiFi 跟 IP 位置來推測地理位置。
有些公司會開著車四處探索 WiFi 存取點,依據特定位置的 WiFi 存取點數量、訊號強弱紀錄等,就可以推測你的所在位置。而如果使用者不使用 WiFi,那就依據 IP 位置來反查、推測你的位置在哪裡。用 IP 推測的方式精確度自然不如 WiFi,不過在台灣是不是只能用 IP 推測啊…?有哪位大德知道哪間公司提供 WiFi 與地理位置對應的服務嗎?
瞎扯一下:話說上回我跟 othree 在大葉大學時以 3G 分別測試這個功能,othree (遠傳電信) 精準地測出他人在大葉,而我手上的 3G (中華電信) 卻說我人在台中,這差得真遠…
隱私問題?
Firefox 一直都很注重使用者個人資訊的隱私問題,在這邊你也可以有絕對自主權、決定是否揭露個人的地理位置。技術面上 Firefox 該做的做了,另外在道德面上 W3C 還起草了一份給網際服務供應商的行為準則建議:
- 只在必要時要求取用地理資訊。
- 取得的地理資訊僅用在使用者當時揭露時所進行的工作 (就是說,不要用在使用者沒有同意的地方)。
- 工作完成後應棄用原先取得的地理資訊,除非使用者表達願意讓你儲存資訊的意願。
- 必須善加保護使用者的地理資訊,不可為他人在無授權狀態下使用。
- 若儲存、紀錄了地理資訊,必須提供使用者更新或刪除的選項。
- 取得的地理資訊未經使用者同意不可轉發 (至別的主機、別的服務… etc.),而轉發時為了資訊安全請用 HTTPS。
- 服務供應商應詳細說明為何取用地理資訊、用於何處、資訊保留時效、如何維護資安、資訊如何與其他服務共享、使用者如何存取刪除資訊等等。一旦有與上述各準則不同的處理方式,皆應於這類說明文件中詳細列出。
當然這是「建議」… 不過如同隱私政策一樣、我們也希望這變成道德上的業界標準。
特別注意
如方才所說,這個規格目前還是草案,日後可能還有些許變動。不過就目前所知、唯一會影響的就是 enableHighAccuracy:這可能會改名成像是 useLowPower 那類的名稱。Firefox 3.5 目前提供 enableHighAccuracy,但尚未實作其內容。往後若規格有所變動,可能會同時提供新舊兩版方便應用程式相容。
沒有留言:
張貼留言
歡迎留下您的意見