[程式碼&DEMO] [HackMD完整筆記]
利用navigator.geolocation的API去取得當下裝置的地理位置以及速率。
STEP1 啟動Local Server&用模器裝置或手機測試
這層資料夾底下運行npm install來安裝browser-sync,
安裝完後可以透過指令npm start來啟動localserver(預設port3000)。
Mac用戶可以用Xcode來模擬移動中的裝置。
STEP2 程式碼
// 取得HTML中的元素
const arrow = document.querySelector('.arrow');
const speed = document.querySelector('.speed-value');
//監控的方式連續取得使用主者當前地理位置、速度
navigator.geolocation.watchPosition((data) => {
// 若成功取回,就會回傳一組Position,將其印出
console.log(data);
// 利用coords.speed取得速度(公尺/秒)
speed.textContent = data.coords.speed;
// 用coords.heading取得方位(表示偏離北方的角度,0為正北,90為正東)
// 用element.style.transform =rotate()deg來旋轉指針
arrow.style.transform = `rotate(${data.coords.heading}deg)`;
}, (err) => {
// 假設未取得定位授權,回傳錯誤訊息
console.error(err);
});
用監控的方式連續取得當前地理位置。
當使用者裝置位置更新時,這個函式所傳入的回呼函式就會自動被呼叫。
可以設定錯誤時哪些err回呼函式需被呼叫。
語法:id = navigator.geolocation.watchPosition(success[, error[, options]])
[參數]success
一個回呼函式(callback function) 會被傳入一個 Position 的物件。error
(可選)
一個選擇性的錯誤回呼函式(callback function),會被傳入一個PositionError 的物件。options
(可選)
一個選擇性 PositionOptions 的物件。
用以一次性地取得當前的地理位置。
用以取得資訊。
第二個參數若失敗會執行的callback錯誤訊息。
accurency
目前位置的精確度。heading
目前位置指向。latitude
經度。longitude
緯度。speed
當前速度。