Geolocation API
阿新 • • 發佈:2018-12-04
保存 錯誤 位置 set 設定 使用 UNC 準確的位置 建議
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);
Geolocation API