JS新API標準 地理定位(navigator.geolocation),感興趣的能夠參考下:git
經過navigator.geolocation來獲取設備的當前位置,返回一個位置對象(從對象中獲得一些經緯度的相關信息)。緩存
一、使用方法:函數
navigator.geolocation.getCurrentPosition(successCallback, [errorCallback] , [positionOptions]);code
二、參數介紹:對象
successCallback: 獲取定位成功時執行的回調函數。function(position){ console.log(position); }get
返回一個地理數據對象position做爲參數,該對象有屬性timestamp和coords。回調函數
timestamp表示該地理數據建立時間(時間戳);it
coords包括另外七個屬性:io
coords.latitude:估計緯度console
coords.longitude:估計經度
coords.altitude:估計高度
coords.accuracy:所提供的以米爲單位的經度和緯度估計的精確度
coords.altitudeAccuracy:所提供的以米爲單位的高度估計的精確度
coords.heading: 宿主設備當前移動的角度方向,相對於正北方向順時針計算
coords.speed:以米每秒爲單位的設備的當前對地速度
errorCallback:定位失敗時執行的回調函數。function(error){ console.log(error); }
返回一個錯誤數據對象error做爲參數,該對象有屬性message、 code、PERMISSION_DENIED、POSITION_UNAVAILABLE、TIMEOUT。
message:錯誤提示內容;
code:表示失敗緣由,返回1 or 2 or 3 (對應PERMISSION_DENIED、POSITION_UNAVAILABLE、TIMEOUT);
PERMISSION_DENIED (數值爲1) 表示沒有權限使用地理定位API;
POSITION_UNAVAILABLE (數值爲2) 表示沒法肯定設備的位置,例如一個或多個的用於定位採集程序報告了一個內部錯誤致使了所有過程的失敗;
TIMEOUT (數值爲3) 表示超時;
例:{ message: "User denied Geolocation", code: 1, PERMISSION_DENIED: 1, POSITION_UNAVAILABLE: 2, TIMEOUT: 3 }
positionOptions:經過設置positionOptions來更精細的執行定位。
positionOptions擁有三個屬性{ enableHighAccuracy: boolean, timeout: long, maximumAge: long }。
enableHighAccuracy:true / false(默認,不啓用)是否返回更詳細更準確的結構,選擇true則啓用,可是會致使較長的響應時間及增長功耗,這種狀況更多的用在移動設備上。
timeout:設備位置獲取操做的超時時間設定(不包括獲取用戶權限時間),單位爲毫秒,若是在設定的timeout時間內未能獲取位置定位,則會執行errorCallback()返回code(3)。若是未設定timeout,那麼timeout默認爲無窮大,若是timeout爲負數,則默認timeout爲0。
maximumAge:設定位置緩存時間,以毫秒爲單位,若是不設置該值,該值默認爲0,若是設定負數,則默認爲0。該值爲0時,位置定位時會從新獲取一個新的位置對象;該值大於0時,即從上一次獲取位置時開始,緩存位置對象,若是再次獲取位置時間不超過maximumAge,則返回緩存中的位置,若是超出maximumAge,則從新獲取一個新的位置。
三、示例:
if(navigator.geolocation) { // 判斷設備是否支持定位
navigator.geolocation.getCurrentPosition(function(position) {
alert(position.coords.latitude); // 緯度
alert(position.coords.longitude); // 經度
}, function(error) {
alert(error.message);
}, {
timeout: 90000
});
}else {
alert("不支持定位");
}
水平有限,文中錯誤不妥在所不免,歡迎批評指正建議評論。文章將不按期修改完善斧正。謝謝!