歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

HTML5地理定位

HTML地理定位特性使得你的web應用程序可以獲得網站浏覽者的地理位置。地理位置實際上並不是HTML5規范的一部分,但是因為HTML5已經成為HTML和JavaScript新特性事實上的標桿,我在這個HTML5教程中介紹地理位置。

安全和隱私
用戶通過浏覽器對話框接受您的網站訪問他們的位置,所以你不能在它們不知道的情況下使用它進行間諜活動。


訪問地理位置 地理位置可以在JavaScript中通過浏覽器的navigator.geolocation對象訪問。地理位置對象允許你通過兩個基本方法訪問地理位置:
  1. getCurrentPosition()
  2. watchPosition()
getCurrentPositio()函數以一次性快照的形式返回游客的位置。watchPosition()函數在每次位置變化的時候返回游客的位置。它通過位置變化時調用成功或錯誤的回調函數來實現。
這兩個函數需要以下參數:
  • 成功回調函數
  • 錯誤回調函數(可選)
  • 地理位置選擇對象(可選)
正如你看到的,一些參數是可選的。 下面是一個例子,通過getCurrentPosition()的成功回調函數訪問用戶的地理位置:

navigator.geolocation.getCurrentPosition(
    function(position) {
        alert("your position is: "
                + position.coords.latitude + ", "
                + position.coords.longitude);
    }
);

地理位置是異步獲取的。這意味著,當你調用getCurrentPosition()或watchPosition()時函數會立即返回。 當浏覽器知道用戶的位置,並且用戶已經同意該網站可以訪問自己的地理位置,成功回調函數被調用。如果發生錯誤,錯誤回調函數被調用。
位置對象 傳遞給成功回調函數的位置對象大致如下: 

double latitude         // read only attribute
double longitude        // read only attribute
double accuracy         // read only attribute

double altitude         // read only attribute
double altitudeAccuracy // read only attribute
double heading          // read only attribute
double speed            // read only attribute

latitude(緯度)和longitude(經度)屬性為地理位置坐標。accuracy屬性為位置精度(米)。accuracy越小,精度越高。
altitude, altitudeAccuracy, heading和speed屬性只有當運行浏覽器的設備內置GPS時才可用,否則這些屬性的值為null。
altitude屬性為用戶的海拔高度。altitudeAccuracy屬性為海拔高度精度(米)。heading屬性表示用戶移動的方向。value屬性是相對於正北的角度(0-360)。 speed屬性為用戶的速度(米每秒),如果有的話。
速度 速度屬性只有在你使用watchPosition()方法時才有值。浏覽器顯然需要幾個位置來計算計算速度。
錯誤回調函數 如果無法獲得用戶的地理位置,傳遞給getCurrentPosition()或watchPosition()的錯誤回調函數將會被調用。無法獲得地理位置的原因可能如下:
  • 用戶拒絕網站訪問地理位置。
  • 運行浏覽器的設備無法獲得地理位置,例如,在隧道、地鐵等設備無法接收GPS衛星信號的地方。
  • 該設備獲取位置的時間超時。

錯誤回調函數接受一個帶有兩個屬性的對象:
short     code    // unsigned read only attribute.
DOMString message // read only attribute.
code屬性的值是下面中一個: 
  • 1表示PERMISSION_DENIED
  • 2表示POSSITION_UNAVAILABLE
  • 3表示TIMEOUT
message屬性包含對錯誤的描述。對於開發人員來說,這個錯誤可能是有用的,但對網站的用戶來說可能沒有太大的意義。
地理位置選項對象 getCurrentPosition()和watchPosition()函數可以使用地理位置選項對象作為第三個參數。此選項對象可以包含以下屬性:
enableHighAccuracy     // true or false
timeout                // milliseconds
maximumAge             // milliseconds   enableHighAccuracy屬性可以是true或false。值為true時告訴浏覽器如果設備有GPS的話,就啟用它。要記住GPS耗費很多的電量,除非需要很高的精度不要啟用它。
Timeout屬性告訴浏覽器要用多長時間來獲取到位置並調用成功回調函數,否則調用失敗回調函數。
maximumAge屬性告訴浏覽器你的應用可以接受的緩存位置的最長時間(以毫秒為單位)。值為0意味著浏覽器必須在每次調用成功回調函數時都獲取一個新的位置。
一個完整的例子 下面是一個代碼示例,使用了成功回調、錯誤回調和選項對象:
navigator.geolocation.getCurrentPosition(
    function(position) {
        alert("your position is: "
                + position.coords.latitude + ", "
                + position.coords.longitude);
    }
    ,
    function(errorObject) {
        alert("Error obtaining position");
    }
    ,
    {
      enableHighAccuracy : true,
      timeout    : 3000,
      maximumAge : 60000
    }
);
  原文鏈接 OSCHINA原創翻譯
Copyright © Linux教程網 All Rights Reserved