使用getCurrentPosition方法來取得用戶當前的地理位置信息,該方法的定義如下所示。
void getCurrentPosition(onSuccess,onError,options);
第一個參數爲獲取當前地理位置信息成功時所執行的回調函數;
第二個參數爲獲取當前地理位置信息失敗時所執行的回調函數;
第三個參數爲一些可選屬性的列表。
注意:其中第二、三個參數爲可選屬性。
getCurrentPosition方法中的第一個參數
getCurrentPosition方法中的第一個參數爲獲取當前地理位置
信息成功時所執行的回調函數。該參數的使用方法如下所示。
navigator.geolocation.getCurrentPosition(function(position)){
//獲取成功時的處理
}
在獲取地理位置信息成功時執行的回調函數中,用到了一個參數
position,它代表的是一個position對象。
getCurrentPosition方法中的第二個參數
getCurrentPosition方法中的第二個參數爲獲取當前地理位
置信息失敗時所執行的回調函數。如果獲取地理位置信息失敗,
你可以通過該回調函數把錯誤信息提示給用戶。當在瀏覽器中打
開使用了Geolocation API來獲得用戶當前位置信息的頁面時,
瀏覽器會詢問用戶是否共享位置信息。
如果在該畫面中拒絕共享的話,也會引起錯誤的發生。
該回調函數使用一個error對象作爲參數,該對象具有以下兩個
屬性:
Code屬性
Code屬性爲以下三個值其中之一:
用戶拒絕了位置服務(屬性值爲1)
獲取不到位置信息(屬性值爲2)
獲取信息超時錯誤(屬性值爲3)
Message屬性
message屬性爲一個字符串,在該字符串中包含了錯誤信息,
這個錯誤信息在開發和調試時將很有用。但是需要注意的是有些
瀏覽器是不支持message屬性的,譬如Firefox3.6以上。
getCurrentPosition方法中的第二個參數應用
//在getCurrentPosition方法中使用第二個參數來捕獲錯誤信息的具體使用方法如下所示。
navigator.geolocation.getCurrentPosition(
function(position)){
var coords = position.coords;
showMap(coords.latitude,coords.longitude,coords.accuracy);
},
//捕獲錯誤信息
function(error){
var errorTypes = {
1:'位置服務被拒絕',
2:'獲取不到位置信息',
3:'獲取信息超時'
};
alert(errorTypes[error.code] ":,不能確定你的當前地理位置");
}
};
getCurrentPosition方法中的第三個參數
getCurrentPosition方法中的第三個參數可以省略,它是一些
可選屬性的列表,這些可選屬性如下。
enableHighAccuracy
(布爾型,默認爲false)
是否要求高精度的地理位置信息,這個參數在很多設備上設
置了都沒用,因爲使用在設備上時需要結合設備電量、具體地理
情況來結合考慮。因此,多數情況下把該屬性設爲默認,由設備
自身來調整。
timeout
(單位爲毫秒,默認值爲infinity/0)
對地理位置信息的獲取操作做一個超時限制(單位爲毫秒)
。如果在該時間內未獲取到地理位置信息,則返回錯誤。
maximumAge
(單位爲毫秒,默認值爲0)
對地理位置信息進行緩存的有效時間(單位爲毫秒)。例如
maximumAge:120000(1分鐘是60000)。如果11點整得
時候獲取過一次地理位置信息,11:01的時候,再次調用
navigator.geolocation.getCurrentPosition
重新獲取地理位
置信息,則返回的依然爲11:00時的數據(因爲設置的緩存有效
時間爲2分鐘)。超過這個時間後緩存的地理位置信息被廢棄,
嘗試重新獲取地理位置信息。如果該值被指定爲0,則無條件重
新獲取新的地理位置信息。
navigator.geolocation.getCurrentPosition(
function(position)){
//獲取地理位置信息成功時所做處理
},
function(error){
//獲取地理位置信息失敗時所做處理
},
//以下爲可選屬性
{
//設置緩存有效時間爲2分鐘
maximumAge:60*1000*2,
//5秒鐘內獲取到地理位置信息則返回錯誤
timeout:5000
}
};
持續監視當前地理位置的信息
使用watchPosition方法來持續獲取用戶的當前地理位置信
息,它會定期地自動獲取,該方法定義如下所示。
int watchCurrentPosition(onSuccess,onError,options);
該方法三個參數的說明與使用方法與getCurrentPosition方
法的參數說明與使用方法相同。該方法返回一個數字,這個數字
的使用方法與Javascript腳本中setInterval方法的返回參數的
使用方法類似,可以被clearWatch方法使用,停止對當前地理
位置信息的監視。
停止獲取當前用戶的地理位置信息
使用該方法可以停止對當前用戶的地理位置信息的監視。該
方法定義如下所示。
void clearWatch(watchId);
該方法的參數爲調用watchCurrentPosition方法監視地理位
置信息時的返回參數。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>獲取地理位置的經度和緯度</title>
</head>
<body>
<p id="geo_loc"><p>
<script>
function getElem(id) {
return typeof id === 'string' ? document.getElementById(id) : id;
}
function show_it(lat, lon) {
var str = '您當前的位置,緯度:' lat ',經度:' lon;
getElem('geo_loc').innerHTML = str;
}
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
show_it(position.coords.latitude, position.coords.longitude);
}, function(err) {
getElem('geo_loc').innerHTML = err.code "\n" err.message;
});
} else {
getElem('geo_loc').innerHTML = "您當前使用的瀏覽器不支持Geolocation服務";
}
</script>
</body>
</html>