1. 程式人生 > >Geolocation API

Geolocation API

保存 錯誤 位置 set 設定 使用 UNC 準確的位置 建議

Geolocation API——地理定位

  • 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