html5 中的 GPS 定位功能主要用的是 getCurrentPosition, 該方法封裝在 navigator.geolocation 屬性裡,是 navigator.geolocation 對象的方法。
getCurrentPosition()函數簡介
getCurrentPosition(successCallback,errorCallback,positionOptions)
successCallback
表示調用getCurrentPosition函數成功以後的回調函數,該函數帶有一個參數,對象字面量格式,表示獲取到的用戶位置數據。該對象包含兩個屬性coords 和timestamp。其中coords 屬性包含以下7個值:
accuracy:精确度
latitude:纬度
longitude:经度
altitude:海拔
altitudeAcuracy:海拔高度的精确度
heading:朝向
speed:速度
errorCallback
和successCallback 函數一樣帶有一個參數,對象字面量格式,表示返回的錯誤代碼。它包含以下兩個屬性:
1、message:错误信息
2、 code:错误代码。
其中错误代码包括以下四个值:
1、UNKNOW_ERROR:表示不包括在其它错误代码中的错误,这里可以在 message 中查找错误信息
2、PERMISSION_DENIED:表示用户拒绝浏览器获取位置信息的请求
3、 POSITION_UNAVALIABLE:表示网络不可用或者连接不到卫星
4、TIMEOUT:表示获取超时。必须在options中指定了timeout值时才有可能发生这种错误
positionOptions
positionOptions 的數據格式為JSON,有三個可選的屬性:
1、enableHighAcuracy — 布尔值: 表示是否启用高精确度模式,如果启用这种模式,浏览器在获取位置信息时可能需要耗费更多的时间。
2、timeout — 整数: 表示浏览需要在指定的时间内获取位置信息,否则触发errorCallback。
3、maximumAge — 整数/常量: 表示浏览器重新获取位置信息的时间间隔。
getCurrentPosition()函數定位應用
<!DOCTYPE HTML>
<head>
<script type="text/javascript">
function showLocation(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
alert("Latitude : " + latitude + " Longitude: " + longitude);
}
function errorHandler(err) {
if(err.code == 1) {
alert("Error: Access is denied!");
}else if( err.code == 2) {
alert("Error: Position is unavailable!");
}
}
function getLocation(){
if(navigator.geolocation){
// timeout at 60000 milliseconds (60 seconds)
var options = {timeout:60000};
navigator.geolocation.getCurrentPosition(showLocation, errorHandler, options);
}else{
alert("Sorry, browser does not support geolocation!");
}
}
</script>
</head>
<html>
<body>
<form>
<input type="button" onclick="getLocation();" value="Get Location"/>
</form>
</body>
</html>
點擊按鈕,就可以回提示是否獲取當前位置,允許之後,可以獲取你所在位置的經緯度!
沒有留言:
張貼留言