美文网首页
html5地理定位原理及其应用(转)

html5地理定位原理及其应用(转)

作者: 史前火种 | 来源:发表于2019-03-01 10:35 被阅读0次

    介绍

    地理位置(Geolocation)是HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用,使得开发人员不用借助其他软件就能轻松实现位置查找,地图应用,导航等功能,具有划时代的意义!

    浏览器支持情况

    image.png

    定位基本原理

    1. GPS定位
      GPS基本原理是测量出已知位置的卫星到用户接收机之间的距离,然后综合多颗卫星的数据就可知道接收机的具体位置。适用于具备GPS功能的设备。
      优点:在空旷地区比较准确,覆盖面比较广
      缺点:需要比较长时间定位,比较耗电池,在室内不太好,需要GPS设备支持。
    2. WIFI/基站定位
      地理定位服务提供者会在全世界范围内去收集WIFI热点的位置信息,然后用户的设备只要能支持WIFI就能获取到周围WIFI热点的位置和信号强弱信息,然后把这些信息发给服务提供者就能得到自己的位置。
      优点:比较准确,适用于室内环境,响应速度快
      缺点:在wifi热点少的地方不适用
    3. IP定位
      原理很简单,就是通过你设备的物理地址所备案的地址信息来定位,但这种方式精确度不高,特别是用代理来上网的情况下。一般作为GPS和WIFI都不支持的情况下大致模糊匹配,比如各大团购网站检测用户所在城市。

    地理位置获取流程

    1. 用户打开需要获取地理位置的web应用。
    2. 应用向浏览器请求地理位置,浏览器弹出询问,询问用户是否共享地理位置。
    3. 假设用户允许或浏览器默认允许,浏览器从设备查询相关信息。
    4. 浏览器将相关信息发送到一个信任的位置服务器,服务器返回具体的地理位置。

    核心代码实现

    • geolocation对象以及getCurrentLocation()方法
      在支持HTML5的浏览器中,为JavaScript中window对象的navigator对象增加了一个对象属性即geolocation对象。该对象提供了实现地理位置定位的接口,其实就是将用户当前位置发送给一些位置服务提供商的服务器,从而获取位置信息。要使用该功能就首先要判断浏览器是否支持该对象,即访问window.navigator.geolocation如果不是undefined则表示浏览器支持定位,也可以省略window。
      getCurrentPosition(success,error,options)方法用来获取当前用户的位置信息,该方法就会让浏览器去从一些位置服务提供商哪里获取当前的位置。success是获取成功后的回调函数,error是获取失败的回调函数,options是一个对象表示为该方法传递的一些设置参数。
    • success回调函数
    //获取经纬度:
    function success(position){
          /*position就是定位成功后包含位置信息的对象*/
          var latitude=position.coords.latitude;  //纬度
          var longgitude=position.coords.longitude;  //经度
          alert("纬度:"+latitude+"\n经度:"+longgitude);
       }
      function error(){
          alert("获取失败");
       }
       var options={};
       if(navigator.geolocation){
         navigator.geolocation.getCurrentPosition(success,error,options);
       }else{
          alert("浏览器不支持定位");
       }
    
    • error回调函数
    function error(errorObj){
          switch(errorObj.code){
             case 1 : alert(errorObj.message); break;  //用户选了不允许
             case 2: alert(errorObj.message); break;  //连不上GPS卫星,或者网络断了
             case 3: alert(errorObj.message); break;//超时
             default: alert(errorObj.message); break;  //未知错误,其实是err.code==0的时候
          }
    }
    
    • options选项
      • enableHighAccuracy表示是否允许使用高精度,值为true 的时候,浏览器会尝试启用gps或WiFi定位,默认指为 true
      • timeout指定超时时间
      • maximumAge设置缓存时间,即在该时间范围内不重新获取位置

    原文链接

    相关文章

      网友评论

          本文标题:html5地理定位原理及其应用(转)

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