美文网首页前端入门教程
HTML5 Geolocation地理位置

HTML5 Geolocation地理位置

作者: 微语博客 | 来源:发表于2021-06-16 23:03 被阅读0次

    简介

    基于位置的信息服务在我们的生活中是特别常见的需求,比如地图导航,外卖快递,家政服务以及气象信息等等,这些服务都有一个共同特点,那就是基于地理位置信息。在移动端我们很容易通过设备获取精确地理位置,浏览器端稍微差点,但是HTML5也提供了相关的API让我们获取地理位置,但是由于位置涉及隐式,必须由用户同意之后才能获取得到。

    Geolocation位置服务API常用的函数和属性

    • navigator.geolocation:该属性返回一个布尔值,表示客户端是否支持Geolocation。

    • getCurrentPosition(callback()):该方法接收两个回调函数,分别处理成功和失败的回调。

    • watchPosition():返回用户的当前位置,并继续返回用户移动时的更新位置。

    • clearWatch():停止 watchPosition() 方法

    简单示例

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>  
      <button onclick="getLocation()">Geolocation获取地理位置</button>
      <script>
        function getLocation(){
          if(navigator.geolocation){
            console.log("支持定位");
            navigator.geolocation.getCurrentPosition((function(position){
              console.log("纬度="+position.coords.altitude);
              console.log("经度="+position.coords.longitude);            
            }));
          }else{
            console.log("不支持地理定位");
          }
        }
      </script>
      
    </body>
    </html>
    

    处理错误和拒绝

    上面的示例是一个特别简单的例子,不包含任何错误处理,但是出现错误也是很常见的,比如用户拒绝或者获取位置超时失败等,所以开发真实场景中,需要有处理错误的脚本。getCurrentPosition() 方法的第二个参数用于处理错误,它指定了遇到错误时回调的函数。

    • Permission denied - 用户不允许地理定位
    • Position unavailable - 无法获取当前位置
    • Timeout - 操作超时
    function getLocation(){
          if(navigator.geolocation){
            console.log("支持定位");
            navigator.geolocation.getCurrentPosition(
              (function(position){
                  console.log("纬度="+position.coords.altitude);
                  console.log("经度="+position.coords.longitude);            
              }),
              (function(error){
                  if(error.PERMISSION_DENIED){
                    console.log("用户拒绝获取位置");
                  }else if(error.POSITION_UNAVAILABLE){
                    console.log("位置信息不可用");
                  }else if(error.TIMEOUT){
                    console.log("获取位置超时");
                  }else{
                    console.log("未知错误");
                  }
              }));
          }else{
            console.log("不支持地理定位");
          }
        }
    

    上面的示例处理了几个常见的错误回调,一般在支持GPS的移动设备获取位置准确度会高点。

    相关文章

      网友评论

        本文标题:HTML5 Geolocation地理位置

        本文链接:https://www.haomeiwen.com/subject/qxhqyltx.html