Geolocation API JavaScript訪問用戶的當前位置信息

Geolocation API在瀏覽器中的實現是navigator.geolocation對象,經常使用的有如下方法。git

一、第一個方法是getCurrentPosition()瀏覽器

調用這個方法就會觸發請求用戶共享地理定位信息的對話框。好比在火狐中的對話框:函數

這個方法接收3個參數:成功回調函數、可選的失敗回調函數和可選的選項對象。spa

成功回調函數會接收一個Position對象參數,有兩個屬性:coords和timestamp。設計

coords對象中包含下列與位置相關的信息。日誌

  1. latitude,十進制緯度
  2. longitude,十進制經度
  3. accuracy,精度,米

有些瀏覽器還會提供海拔/海拔精度/速度等信息。Web經常使用的是緯度和經度。code

好比顯示用戶的位置:對象

navigator.geolocation.getCurrentPosition(function(position){
    $(".content div.item2").text("你的位置在:北緯"+position.coords.latitude+" 東經"+position.coords.longitude);
});

失敗回調函數,會接收一個對象,包含兩個屬性,message和code,前者保存錯誤文本消息,後者保存錯誤碼,有1—用戶拒絕共享,2-位置無效,3-超時。大多數狀況下將錯誤信息保存在日誌文件中。演示:blog

    navigator.geolocation.getCurrentPosition(function(position){
        $(".content div.item2").text("你的位置在:北緯"+position.coords.latitude+" 東經"+position.coords.longitude);
    },function(error){
        $(".content div.item2").text(error.code+","+error.message);
    });

在Chrome中拒絕共享時拒絕:ip

會顯示:錯誤碼1,信息是用戶拒絕共享。

③第三個參數是選項對象,用於設定信息的類型,能夠設置的選項有三個:

  1. enableHighAccuracy,布爾值,儘量使用最精確的位置信息。
  2. timeout,等待位置信息的最長時間,毫秒
  3. maximumAge,上次取得的座標信息的有效時間,毫秒,若是時間到則從新獲取座標信息。

如:

    navigator.geolocation.getCurrentPosition(function(position){
        $(".content div.item2").text("你的位置在:北緯"+position.coords.latitude+" 東經"+position.coords.longitude);
    },function(error){
        $(".content div.item2").text(error.code+","+error.message);
    },{
        enableHighAccuracy:false,
        timeout:1000,
        maximumAge:5000
    });

不須要特別精確的境況下,建議enableHighAccuracy爲false,不然耗時耗電。maximumAge值能夠是Infinity,表示始終使用上次的座標信息。

二、另外一個方法,watchPosition(),跟蹤用戶的位置。接收的參數與getCurrentPosition()一致。

該方法第一次取得位置信息後,會就地等待系統發出位置改變的信號。

能夠調用clearWatch()方法取消跟蹤。

內容來源於JavaScript高級程序設計。

相關文章
相關標籤/搜索