地理定位是HTML5提供的最令人激動的特性之一。
用相對簡單的JavaScript代碼
和所有HTML5的功能一樣,你還不能依賴瀏覽器提供支持
在這篇教程里
HTML5 Web 頁面
使用下列代碼創(chuàng)建HTML5頁面的框架:
<!DOCTYPEhtml>
<html>
<head>
<script>
/*Locationfunctionshere*/
</script>
</head>
<body>
</body>
</html>
我們將JavaScript地理定位函數(shù)放到頁面標(biāo)頭腳本的位置,還會放置一些用于測試和演示主題區(qū)功能的基本HTML要素
。HTML演示要素
向HTML主體部分添加下列markup:
<input type="button"value="get location" onclick="getUserLocation()"/>
<div id="locationData">
Location data here
</div>
在可以隨時(shí)調(diào)用地理位置函數(shù)
,如頁面加載時(shí)或是與jQuery文檔準(zhǔn)備函數(shù)合在一起時(shí)。為了更好地進(jìn)行演示,我們使用按鈕調(diào)用函數(shù)而且會把位置數(shù)據(jù)寫入div要素中,div要素最初就有一些簡單的占位符文本。獲取位置函數(shù)
getPosition方法是我們用來確定用戶位置的主要方法
。在頁面標(biāo)頭的腳本區(qū)域添加下列函數(shù):functiongetUserLocation(){
//checkifthegeolocationobjectissupported,ifsogetposition
if(navigator.geolocation)
navigator.geolocation.getCurrentPosition(displayLocation,displayError);
else
document.getElementById("locationData").innerHTML="Sorry-yourbrowserdoesn'tsupportgeolocation!";
}
用戶點(diǎn)擊按鈕的時(shí)候就會調(diào)用函數(shù)
。代碼首先會檢查導(dǎo)航器地理位置對象是否顯示出來,如果顯示出來則瀏覽器支持。如果地理位置對象被支持,那么代碼會使用它來調(diào)用getCurrentPosition方法。getCurrerentPosition方法取兩個(gè)參數(shù)指示回調(diào)函數(shù)。
,一個(gè)是在地理位置信息被獲取時(shí)調(diào)用的函數(shù),還有一個(gè)是錯(cuò)誤返回時(shí)調(diào)用的函數(shù)。如果地理位置對象不被支持,那么函數(shù)就只會把錯(cuò)誤信息寫入頁面div要素中
。當(dāng)一個(gè)網(wǎng)站首次試圖檢索用戶位置數(shù)據(jù)時(shí),用戶瀏覽器會命令其確定它們是否同意共享數(shù)據(jù)
。該函數(shù)只在用戶同意的時(shí)候執(zhí)行。顯示位置函數(shù)
下一步,我們需要部署的函數(shù)其實(shí)是getCurrentPosition方法調(diào)用中的第一個(gè)參數(shù)
。當(dāng)瀏覽器接收到這個(gè)函數(shù)的時(shí)候,用戶位置數(shù)據(jù)會傳給這個(gè)函數(shù)。將下列代碼添加到getUserLocation函數(shù)后面:functiondisplayLocation(position){
/buildtextstringincludingco-ordinatedatapassedinparameter
vardisplayText="Userlatitudeis"+position.coords.latitude+"andlongitudeis"+position.coords.longitude;
//displaythestringfordemonstration
document.getElementById("locationData").innerHTML=displayText;
}
這個(gè)代碼先創(chuàng)建了一個(gè)變量,在變量中創(chuàng)建了一個(gè)字符串
,該字符串包含了位置參數(shù)的經(jīng)緯度數(shù)據(jù)。然后這個(gè)函數(shù)會把這個(gè)信息和一些信息化文本寫入頁面。在你自己的網(wǎng)站中,你還可以把這些數(shù)據(jù)用作其他目的,而不僅僅是寫入頁面——此處僅作演示用。錯(cuò)誤函數(shù)
使用地理位置設(shè)備的時(shí)候可能會出現(xiàn)錯(cuò)誤
。如,用戶或許不同意共享自己的地理位置數(shù)據(jù),瀏覽器可能不能檢索數(shù)據(jù)等。因此在網(wǎng)站建設(shè)時(shí)我們需要添加一個(gè)函數(shù)來處理應(yīng)對錯(cuò)誤,使用getCurrentPosition方法的第二個(gè)函數(shù)。在displayLocation函數(shù)后添加下列函數(shù):function displayError(error) {
//get a reference to the HTML element forwriting result
var locationElement =document.getElementById("locationData");
//find out which error we have, outputmessage accordingly
switch(error.code) {
case error.PERMISSION_DENIED:
locationElement.innerHTML= "Permission was denied";
break;
case error.POSITION_UNAVAILABLE:
locationElement.innerHTML= "Location data not available";
break;
case error.TIMEOUT:
locationElement.innerHTML= "Location request timeout";
break;
case error.UNKNOWN_ERROR:
locationElement.innerHTML= "An unspecified error occurred";
break;
default:
locationElement.innerHTML= "Who knows what happened...";
break;
}}
這個(gè)函數(shù)會地理位置請求發(fā)出后出現(xiàn)的錯(cuò)誤信息進(jìn)行檢索。該函數(shù)首先會獲取頁面div要素的參考以便寫入合適的錯(cuò)誤信息
。用交換語句對此信息進(jìn)行調(diào)整使其適應(yīng)錯(cuò)誤的特殊屬性。考慮和選擇
以上函數(shù)涵蓋了用戶位置數(shù)據(jù)檢索的基本要點(diǎn)
。你可以使用檢索過的位置數(shù)據(jù)通過Google Maps API在地圖上顯示用戶位置,主要是在自定義URL中創(chuàng)建數(shù)據(jù)變量,然后將其加載到你頁面的HTML圖像要素中。你還可以使用watchPosition方法追蹤用戶位置甚至是他們移動的速度,盡管這些數(shù)據(jù)因?yàn)椴⒎莵碜砸苿釉O(shè)備的GPS而缺乏準(zhǔn)確性
,例如數(shù)據(jù)可能來自無線網(wǎng)絡(luò)。這些函數(shù)會為Web開發(fā)員帶來美好的未來
。不過,它們的成功不僅需要瀏覽器提供支持,還得用戶喜歡,硬件支持。
網(wǎng)站建設(shè) 網(wǎng)站制作 網(wǎng)頁設(shè)計(jì) 網(wǎng)站建設(shè)公司 沈陽網(wǎng)站建設(shè) 沈陽網(wǎng)頁設(shè)計(jì) 高端網(wǎng)站設(shè)計(jì) 沈陽網(wǎng)站制作公司 高端網(wǎng)站建設(shè) 沈陽網(wǎng)絡(luò)公司 沈陽網(wǎng)站制作沈陽易勢科技有限公司 © 2006-2013 , All rights reserved. 遼B2-20150173-8