侯竺君 張佳
摘要:HTML5使得未來Web應(yīng)用的JavaScript API得到發(fā)展,Geolocation API被大眾支持。API開發(fā)者利用簡單的代碼來獲取用戶的當前位置,主要基于GPS導(dǎo)航的社交網(wǎng)絡(luò)應(yīng)用等。
關(guān)鍵詞:HTML5;Web應(yīng)用;API開發(fā)
中圖分類號:TP39 文獻標識碼:A 文章編號:1007-9416(2018)09-0083-02
訪問用戶的位置信息之前,首先要得到用戶的許可。如果頁面嘗試訪問位置信息,瀏覽器會彈出一個對話框,請求用戶許可。用戶同意之后,瀏覽器則返回位置信息。
1 位置信息概述
1.1 位置信息來源
HTML 5 Geolocation API用來獲取用戶地理位置信息,不需要指定必須是在哪個設(shè)備上以及使用哪種底層技術(shù)來定位用戶,它只是一個用于檢索位置信息的API,通過該API檢索的數(shù)據(jù)只有一定程度的準確性。它并不能保證設(shè)備返回的數(shù)據(jù)就是精確的。一般來說,設(shè)備可以使用的數(shù)據(jù)源如下所示:(1)IP地址。(2)GPS(全球定位系統(tǒng))。(3)RFID(射頻識別)。(4)WI-FI地址。(5)GSM或CDMA手機的ID(6)用戶自定義的地理位置數(shù)據(jù)
1.2 位置信息表示方式
位置信息主要由一對緯度和經(jīng)度坐標組成,經(jīng)緯度坐標可以用以下兩種方式表示:
十進制格式:如39.17882。DMS角度格式,如39°20′。
2 Geolocation對象
Geolocation API在瀏覽器中實現(xiàn)使用window. navigator. Geolocation對象,用于獲得用戶的地理位置,其中navigator為瀏覽器內(nèi)置對象。由于該特性可能侵犯用戶的隱私,因此瀏覽器將在訪問位置信息前詢問用戶是否共享其位置信息,并且除非用戶同意,否則用戶位置信息不可用。
在使用地理位置API之前首先要檢測瀏覽器是否支持,檢測瀏覽器是否支持定位API,只需要檢測geolocation是否存在于navigator中即可,可以使用如下語句進行檢查:
if(navigator.geolocation){
alert('瀏覽器支持html5 geolocation'); }
2.1 獲取當前地理位置
使用getCurrentPosition方法獲取用戶當前的地理位置信息,此方法包含一個必選參數(shù)和兩個可選參數(shù),用法如下所示:
void getCurrentPosition(successCallback, errorCallback,options);
successCallback必選參數(shù),成功回調(diào)函數(shù)。errorCallback可選參數(shù),失敗回調(diào)函數(shù)。
options可選參數(shù),此對象可設(shè)定信息的類型。
(1)getCurrentPosition方法的第一個參數(shù)是成功獲取位置信息后的回調(diào)函數(shù),使用方法如下所示:
navigator.geolocation.getCurrentPosition(function(position){
//獲取成功時的處理
});
獲取到信息之后,回調(diào)函數(shù)中將傳入位置對象position。該對象包含兩個屬性:一個是coords(坐標),包含當前位置信息;另一個是timestamp,表示獲取到位置的時間戳。在實際開發(fā)中,coords的經(jīng)度和緯度屬性是大多數(shù)Web應(yīng)用程序最常用的屬性。
(2)getCurrentPosition() 方法的第二個參數(shù)是當用戶當前地理位置信息獲取失敗時所執(zhí)行的回調(diào)函數(shù)。如果無法獲取位置信息,則通過該回調(diào)函數(shù)向用戶提示錯誤信息。
(3)getCurrentPosition() 方法的第三個參數(shù)options是一個可選參數(shù),是一些可選屬性得列表,可設(shè)置的選項有三個:enableHigh Accuracy是一個布爾值,表示是否使用高精度的位置信息。Timeout是以毫秒數(shù)表示的獲取位置信息得超時限制,maximumAge表示對地理位置信息緩存的有效時間,以毫秒表示。
2.2 監(jiān)視位置信息
watchPosition方法可用于持續(xù)獲取用戶當前的地理位置信息,該信息是周期性自動獲取,語法如下所示:
navigator.geolocation.watchPosition(successCallback, errorCallback,options);
該方法參數(shù)的說明和使用與getCurrentPosition方法相同。調(diào)用該函數(shù)時會返回一個watch ID,可以用于清除此次的監(jiān)視操作。
2.3 停止獲取位置信息
如果不想再更新位置信息,則可以使用clearWatch方法停止監(jiān)視當前用戶地理位置信息,具體方法如下:
navigator.geolocation.clearWatch(watchID);
參數(shù)watchID是調(diào)用watchPosition方法監(jiān)視地理位置信息時的返回參數(shù)。
3 構(gòu)建地理位置應(yīng)用
首先通過geolocation接口獲取到用戶的地理位置信息,然后結(jié)合百度地圖的應(yīng)用,在地圖上顯示獲取到的用戶當前的地理位置信息并進行標注,關(guān)鍵代碼如圖1,圖2所示:
4 結(jié)語
Geolocation API封裝了獲取位置的技術(shù)細節(jié),通過底層設(shè)備例如筆記本計算機或手機,可將包含有經(jīng)度、緯度坐標的位置信息提供給瀏覽器。借助這些位置信息就可以開發(fā)出基于位置信息的高級應(yīng)用,將虛擬世界和現(xiàn)實世界整合在一起,在當今移動互聯(lián)網(wǎng)時代顯得價值連城。
參考文獻
[1]溫苑花.基于HTML5技術(shù)在移動互聯(lián)網(wǎng)中的應(yīng)用研究[J].中國新通信,2017,(23):29.
[2]畢曉明.簡析HTML5在移動互聯(lián)網(wǎng)開發(fā)中的應(yīng)用[J].軟件工程,2016,19(02):41-42.
[3]梁莉菁.基于Geolocation API的Html5地理位置追蹤定位的實現(xiàn)[J].萍鄉(xiāng)高等??茖W(xué)校學(xué)報,2014,(06):97-101.