Geolocation API
Geolocation API——地理定位
navigator.geolocation
-
getCurrentPosition() 觸發請求使用者共享地理定位資訊的對話方塊
- 接收3個引數:
-
1.成功回撥函式
- 會接收到一個Position物件引數,該物件有兩個屬性:
-
coords(物件)包含下列與位置相關資訊:
- latitude (最常用)以十進位制度數表示的緯度
- longtitude (最常用)以十進位制數表示的經度
- accuracy 經、緯度座標的精度,以m為單位
- 部分瀏覽器還提供如下屬性:
- altitude 以m為單位的海拔高度,無相關資料則值為null
- altitudeAccuracy 海拔高度的精度,以m為單位
- heading 指南針的方向,0°表示正北,值為NaN表示沒有檢測到資料
- speed 速度m/s,無相關資料則值為null
- timestamp
-
2.可選的失敗回撥函式
- 接收1個引數,該物件有兩個屬性:
- message 儲存文字細膩下,解釋出錯原因
-
code 儲存一個數值,表示錯誤型別:
- 使用者拒絕共享(1)
- 位置無效(2)
- 超時(3)
-
3.可選的選項引數
- 用於設定資訊的型別,可設定選項有3個:
- enableHighAccuracy 布林值,表示必須儘可能使用最準確的位置資訊
- timeout 以ms表示的等待位置資訊的最長時間
- maximumAge 表示上一次取得的座標資訊的有效時間(ms),如果時間到則重新取得新座標資訊
// 在地圖上繪製使用者的位置 navigator.geolocation.getCurrentPosition(function(position){ // 1.成功回撥函式 drawMapCenteredAt(position.coords.latitude, positions.coords.longtitude); }, function(error){ // 2.可選的失敗回撥函式 // 實際開發中大多數Web應用只會將錯誤訊息儲存到日誌檔案中,而不一定會因此修改使用者介面 console.log("Error code: " + error.code); console.log("Error message: " + error.message); }, { // 3.可選的選項引數 enableHighAccuracy: true, // 除非確實需要非常精確的資訊,否則建議保持false(預設值),電量消耗效能消耗 timeout: 5000, maximumAge: 25000 // 如果不需要頻繁更新使用者位置資訊,可以設為Infinity,保持使用上一次的座標資訊 });
watchPosition
watchPosition()方法,跟蹤使用者的位置,它接收的引數與getCurrentPosition()完全相同
它與定時呼叫getCurrentPosition()效果相同。
第一次呼叫watchPosition()後會取得當前位置,執行成功回撥或錯誤回撥,然後函式等待系統發出位置已改變的訊號(不會自己輪詢位置)
呼叫watchPosition()會返回一個數值識別符號用於跟蹤監控的操作。基於這個返回值可以隨時取消監控操作,只要將其傳遞給clearWatch()方法即可(與使用setTimeout和clearTimeout類似):
var watchId = navigator.geolocation.watchPosition(function(position){ drawMapCenteredAt(position.coords.latitude, positions.coords.longtitude); }, function(error){ console.log("Error code: " + error.code); console.log("Error message: " + error.message); }); clearWatch(watchId);