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