17、HTML5 地理定位
阿新 • • 發佈:2018-02-18
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 地理定位