2019年11月19日 星期二

[morse]HTML5 中的 GPS 定位之 getCurrentPosition

html5 中的 GPS 定位功能主要用的是 getCurrentPosition, 該方法封裝在 navigator.geolocation 屬性裡,是 navigator.geolocation 對象的方法。

getCurrentPosition()函數簡介

getCurrentPosition(successCallback,errorCallback,positionOptions)
successCallback
表示調用getCurrentPosition函數成功以後的回調函數,該函數帶有一個參數,對象字面量格式,表示獲取到的用戶位置數據。該對象包含兩個屬性coords 和timestamp。其中coords 屬性包含以下7個值:
accuracy:精确度
latitude:纬度
longitude:经度
altitude:海拔
altitudeAcuracy:海拔高度的精确度
heading:朝向
speed:速度
errorCallback
和successCallback 函數一樣帶有一個參數,對象字面量格式,表示返回的錯誤代碼。它包含以下兩個屬性:
1message:错误信息
2 code:错误代码。

其中错误代码包括以下四个值:

1UNKNOW_ERROR:表示不包括在其它错误代码中的错误,这里可以在 message 中查找错误信息
2PERMISSION_DENIED:表示用户拒绝浏览器获取位置信息的请求
3 POSITION_UNAVALIABLE:表示网络不可用或者连接不到卫星
4TIMEOUT:表示获取超时。必须在options中指定了timeout值时才有可能发生这种错误
positionOptions
positionOptions 的數據格式為JSON,有三個可選的屬性:
1enableHighAcuracy  布尔值: 表示是否启用高精确度模式,如果启用这种模式,浏览器在获取位置信息时可能需要耗费更多的时间。
2timeout  整数: 表示浏览需要在指定的时间内获取位置信息,否则触发errorCallback
3maximumAge  整数/常量: 表示浏览器重新获取位置信息的时间间隔。

getCurrentPosition()函數定位應用

<!DOCTYPE HTML>
   <head>
      <script type="text/javascript">

         function showLocation(position) {
            var latitude = position.coords.latitude;
            var longitude = position.coords.longitude;
            alert("Latitude : " + latitude + " Longitude: " + longitude);
         }

         function errorHandler(err) {
            if(err.code == 1) {
               alert("Error: Access is denied!");
            }else if( err.code == 2) {
               alert("Error: Position is unavailable!");
            }
         }

         function getLocation(){

            if(navigator.geolocation){
               // timeout at 60000 milliseconds (60 seconds)
               var options = {timeout:60000};
               navigator.geolocation.getCurrentPosition(showLocation, errorHandler, options);
            }else{
               alert("Sorry, browser does not support geolocation!");
            }
         }

      </script>

   </head>

   <html>
      <body>
         <form>
            <input type="button" onclick="getLocation();" value="Get Location"/>
         </form>
      </body>
   </html>
點擊按鈕,就可以回提示是否獲取當前位置,允許之後,可以獲取你所在位置的經緯度!



沒有留言:

張貼留言