Geolocation API 在網頁中使用 geolocation 對象向JavaScript 提供經度和緯度。利用 geolocation 對象,可以獲取用戶位置和跟蹤用戶位置的變化。
設備使用下列數據源:
為了使用更高的准確度,許多設備使用一個或更多的數據源組合。
Geolocation API 規范提供了一套保護用戶隱私的機制,必須先得到用戶明確許可,才能獲取用戶的位置信息。
訪問使用Geolocation API的頁面應用時,會觸發隱私保護機制,浏覽器會詢問用戶是否共享位置信息。
用於收集位置數據的應用程序的開發人員應考慮關於隱私的以下准則:
因為位置數據屬於敏感信息,所以開發人員應考慮遵循以下准則:
Geolocation API的使用很簡單,請求一個位置信息,如果用戶同意,就返回位置信息。
在使用Html5 Geolocation API時,應確保浏覽器支持Geolocation API.
if (navigator.geolocation) { console.log('Geolocation is supported.');} else { console.log('geolocation is not supported in your broswer.');}
語法:
// getCurrentPositionnavigator.geolocation.getCurrentPosition(successCallback, errorCallback, options);// watchPositionnavigator.geolocation.watchPosition(successCallback, errorCallback, options);
這兩個方法都就使用的是異步回調的方式。它們有相同的參數:
這個方法接受一個參數,需要清理監視位置變化的方法的id:watchID(這個參數由watchPosition方法返回)。
var watchId = navigator.geolocation.watchPosition(function(position) { // succes callback var coords = position.coords; console.log(coords.latitude); // 緯度 console.log(coords.longitude); // 經度 console.log(coords.accuracy); // 准確度,由於geolocation的實現方式,呈現返回值時一定要檢查返回值的准確度 console.log(coords.altitude); // 海拔,以米為單位,如不支持altitude特性,返回null console.log(coords.altitudeAccuracy); // 海拔經度,以米為單位,如不支持altitude特性,返回null console.log(coords.heading); // 行進方向,相對正北 console.log(coords.speed); // 行進速度,單位m/s console.log(timestamp); // 獲取位置的時間}, function(error) { // error callback console.log('獲取位置信息失敗。'); console.log(error.code); // UNKNOWN_ERROR (error code 0) - 未知錯誤 // PERMISSION_DENIED (error code 1) - 用戶拒絕共享地理位置 // POSITION_UNAVAILABLE (error code 2) - 無法獲取當前位置 // TIMEOUT (error code 3) - 在指定時間無法獲取位置會觸發此錯誤。}, { // options enableHighAccuracy: true, maximumAge: 30000, timeout: 27000 });