HTML5地理定位 Geolocation API

使用getCurrentPosition方法來取得用戶當前的地理位置信息,該方法的定義如下所示。

void getCurrentPosition(onSuccess,onError,options);
第一個參數爲獲取當前地理位置信息成功時所執行的回調函數;
第二個參數爲獲取當前地理位置信息失敗時所執行的回調函數;
第三個參數爲一些可選屬性的列表。
注意:其中第二、三個參數爲可選屬性。

getCurrentPosition方法中的第一個參數

getCurrentPosition方法中的第一個參數爲獲取當前地理位置
信息成功時所執行的回調函數。該參數的使用方法如下所示。
navigator.geolocation.getCurrentPosition(function(position)){
//獲取成功時的處理
}
在獲取地理位置信息成功時執行的回調函數中,用到了一個參數
position,它代表的是一個position對象。

getCurrentPosition方法中的第二個參數

getCurrentPosition方法中的第二個參數爲獲取當前地理位
置信息失敗時所執行的回調函數。如果獲取地理位置信息失敗,
你可以通過該回調函數把錯誤信息提示給用戶。當在瀏覽器中打
開使用了Geolocation API來獲得用戶當前位置信息的頁面時,
瀏覽器會詢問用戶是否共享位置信息。
如果在該畫面中拒絕共享的話,也會引起錯誤的發生。
該回調函數使用一個error對象作爲參數,該對象具有以下兩個
屬性:
Code屬性
Code屬性爲以下三個值其中之一:
用戶拒絕了位置服務(屬性值爲1)
獲取不到位置信息(屬性值爲2)
獲取信息超時錯誤(屬性值爲3)
Message屬性
message屬性爲一個字符串,在該字符串中包含了錯誤信息,
這個錯誤信息在開發和調試時將很有用。但是需要注意的是有些
瀏覽器是不支持message屬性的,譬如Firefox3.6以上。

getCurrentPosition方法中的第二個參數應用

    //在getCurrentPosition方法中使用第二個參數來捕獲錯誤信息的具體使用方法如下所示。
navigator.geolocation.getCurrentPosition(
	function(position)){
		var coords = position.coords;
    	showMap(coords.latitude,coords.longitude,coords.accuracy);
	},
    //捕獲錯誤信息
    function(error){
    	var errorTypes = {
             1:'位置服務被拒絕',
             2:'獲取不到位置信息',
             3:'獲取信息超時'
    	};
    	alert(errorTypes[error.code] ":,不能確定你的當前地理位置");
    }
};

getCurrentPosition方法中的第三個參數

getCurrentPosition方法中的第三個參數可以省略,它是一些
可選屬性的列表,這些可選屬性如下。
enableHighAccuracy(布爾型,默認爲false)
是否要求高精度的地理位置信息,這個參數在很多設備上設
置了都沒用,因爲使用在設備上時需要結合設備電量、具體地理
情況來結合考慮。因此,多數情況下把該屬性設爲默認,由設備
自身來調整。
timeout(單位爲毫秒,默認值爲infinity/0)
對地理位置信息的獲取操作做一個超時限制(單位爲毫秒)
。如果在該時間內未獲取到地理位置信息,則返回錯誤。
maximumAge(單位爲毫秒,默認值爲0)
對地理位置信息進行緩存的有效時間(單位爲毫秒)。例如
maximumAge:120000(1分鐘是60000)。如果11點整得
時候獲取過一次地理位置信息,11:01的時候,再次調用
navigator.geolocation.getCurrentPosition重新獲取地理位
置信息,則返回的依然爲11:00時的數據(因爲設置的緩存有效
時間爲2分鐘)。超過這個時間後緩存的地理位置信息被廢棄,
嘗試重新獲取地理位置信息。如果該值被指定爲0,則無條件重
新獲取新的地理位置信息。

navigator.geolocation.getCurrentPosition(
	function(position)){
		//獲取地理位置信息成功時所做處理
	},
    function(error){
    	//獲取地理位置信息失敗時所做處理
    },
    	//以下爲可選屬性
    {
        //設置緩存有效時間爲2分鐘
        maximumAge:60*1000*2,
        //5秒鐘內獲取到地理位置信息則返回錯誤
        timeout:5000
     }
};

持續監視當前地理位置的信息

使用watchPosition方法來持續獲取用戶的當前地理位置信
息,它會定期地自動獲取,該方法定義如下所示。
int watchCurrentPosition(onSuccess,onError,options);
該方法三個參數的說明與使用方法與getCurrentPosition方
法的參數說明與使用方法相同。該方法返回一個數字,這個數字
的使用方法與Javascript腳本中setInterval方法的返回參數的
使用方法類似,可以被clearWatch方法使用,停止對當前地理
位置信息的監視。

停止獲取當前用戶的地理位置信息

使用該方法可以停止對當前用戶的地理位置信息的監視。該
方法定義如下所示。
void clearWatch(watchId);
該方法的參數爲調用watchCurrentPosition方法監視地理位
置信息時的返回參數。

    <!DOCTYPE html>  
    <html>  
    <head>  
    <meta charset="utf-8">  
    <title>獲取地理位置的經度和緯度</title>  
    </head>  
    <body>  
    <p id="geo_loc"><p>
    <script>    
      function getElem(id) {  
           return typeof id === 'string' ? document.getElementById(id) : id;  
       }  
           
        function show_it(lat, lon) {  
            var str = '您當前的位置,緯度:'   lat   ',經度:'   lon;  
           getElem('geo_loc').innerHTML = str;  
        }  
          
       if (navigator.geolocation) {  
           navigator.geolocation.getCurrentPosition(function(position) {    
               show_it(position.coords.latitude, position.coords.longitude);    
           }, function(err) {  
               getElem('geo_loc').innerHTML = err.code   "\n"   err.message;  
           });  
       } else {  
           getElem('geo_loc').innerHTML = "您當前使用的瀏覽器不支持Geolocation服務";  
       }  
    </script>   
    </body>  
    </html>  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章