1. 程式人生 > >17、HTML5 地理定位

17、HTML5 地理定位

posit 比較 eol 否則 rds 按鈕 per 獲得 瀏覽器

HTML5 Geolocation API 用於獲得用戶的地理位置

鑒於該特性可能侵犯用戶的隱私,除非用戶同意,否則用戶位置信息是不可用的

註意:大部分瀏覽器都支持 Geolocation(地理定位),對於擁有 GPS 的設備,比如 iPhone,地理定位更加精確

使用HTML5 地理定位

請使用 getCurrentPosition() 方法來獲得用戶的位置

下例是一個簡單的地理定位實例,可返回用戶位置的經度和緯度:

<script>
var x=document.getElementById("demo");
function getLocation()
{
    if
(navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { x.innerHTML="該瀏覽器不支持獲取地理位置。"; } } function showPosition(position) { x.innerHTML="緯度: " + position.coords.latitude + "<br>經度: " + position.coords.longitude; }
</script>

實例解析:

  • 檢測是否支持地理定位
  • 如果支持,則運行 getCurrentPosition() 方法。如果不支持,則向用戶顯示一段消息
  • 如果getCurrentPosition()運行成功,則向參數showPosition中規定的函數返回一個coordinates對象
  • showPosition() 函數獲得並顯示經度和緯度

處理錯誤和拒絕

getCurrentPosition() 方法的第二個參數用於處理錯誤。它規定當獲取用戶位置失敗時運行的函數:

<p id="demo">點擊按鈕獲取您當前坐標(可能需要比較長的時間獲取):</p>
<button onclick="getLocation()">點我</button> <script> var x=document.getElementById("demo"); function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition,showError); } else { x.innerHTML="該瀏覽器不支持定位。"; } } function showPosition(position) { x.innerHTML="緯度: " + position.coords.latitude + "<br>經度: " + position.coords.longitude; } function showError(error) { switch(error.code) { case error.PERMISSION_DENIED: x.innerHTML="用戶拒絕對獲取地理位置的請求。" break; case error.POSITION_UNAVAILABLE: x.innerHTML="位置信息是不可用的。" break; case error.TIMEOUT: x.innerHTML="請求用戶地理位置超時。" break; case error.UNKNOWN_ERROR: x.innerHTML="未知錯誤。" break; } } </script>

Geolocation 對象

watchPosition() - 返回用戶的當前位置,並繼續返回用戶移動時的更新位置(就像汽車上的 GPS)

clearWatch() - 停止 watchPosition() 方法

下面的例子展示 watchPosition() 方法。您需要一臺精確的 GPS 設備來測試該例(比如 iPhone):

<p id="demo">點擊按鈕獲取您當前坐標(可能需要比較長的時間獲取):</p>
<button onclick="getLocation()">點我</button>
<script>
var x=document.getElementById("demo");
function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.watchPosition(showPosition);
    }
    else
    {
        x.innerHTML="該瀏覽器不支持獲取地理位置。";
    }
}
function showPosition(position)
{
    x.innerHTML="緯度: " + position.coords.latitude + 
    "<br>經度: " + position.coords.longitude;    
}
</script>

其它見:鏈接

17、HTML5 地理定位