HTML5 地理位置定位(HTML5 Geolocation)原理及应用

来源:互联网 发布:js循环输出表格 编辑:程序博客网 时间:2024/06/05 20:57
 

HTML5 地理位置定位(HTML5 Geolocation)原理及应用

标签: 软件开发geolocationhtml5

         地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用。今天这篇文章向大家介绍一下HTML5 地理位置定位的基本原理及各个浏览器的数据精度情况。

  在访问位置信息前,浏览器都会询问用户是否共享其位置信息,以 Chrome 浏览器为例,如果您允许 Chrome 浏览器与网站共享您的位置,Chrome 浏览器会向 Google 位置服务发送本地网络信息,估计您所在的位置。然后,浏览器会与请求使用您位置的网站共享您的位置。

  HTML5 Geolocation API 使用非常简单,基本调用方式如下:

[javascript] view plain copy
  1. if (navigator.geolocation) {  
  2.     navigator.geolocation.getCurrentPosition(locationSuccess, locationError,{  
  3.         // 指示浏览器获取高精度的位置,默认为false  
  4.         enableHighAcuracy: true,  
  5.         // 指定获取地理位置的超时时间,默认不限时,单位为毫秒  
  6.         timeout: 5000,  
  7.         // 最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。  
  8.         maximumAge: 3000  
  9.     });  
  10. }else{  
  11.     alert("Your browser does not support Geolocation!");  
  12. }  

        locationError为获取位置信息失败的回调函数,可以根据错误类型提示信息:

[javascript] view plain copy
  1. locationError: function(error){  
  2.     switch(error.code) {  
  3.         case error.TIMEOUT:  
  4.             showError("A timeout occured! Please try again!");  
  5.             break;  
  6.         case error.POSITION_UNAVAILABLE:  
  7.             showError('We can\'t detect your location. Sorry!');  
  8.             break;  
  9.         case error.PERMISSION_DENIED:  
  10.             showError('Please allow geolocation access for this to work.');  
  11.             break;  
  12.         case error.UNKNOWN_ERROR:  
  13.             showError('An unknown error occured!');  
  14.             break;  
  15.     }  
  16. }  
        locationSuccess为获取位置信息成功的回调函数,返回的数据中包含经纬度等信息,结合Google Map API 即可在地图中显示当前用户的位置信息,如下:
[javascript] view plain copy
  1. locationSuccess: function(position){  
  2.     var coords = position.coords;       
  3.     var latlng = new google.maps.LatLng(  
  4.         // 维度  
  5.         coords.latitude,  
  6.         // 精度  
  7.         coords.longitude  
  8.     );     
  9.     var myOptions = {     
  10.         // 地图放大倍数     
  11.         zoom: 12,     
  12.         // 地图中心设为指定坐标点     
  13.         center: latlng,     
  14.         // 地图类型     
  15.         mapTypeId: google.maps.MapTypeId.ROADMAP     
  16.     };     
  17.     // 创建地图并输出到页面     
  18.     var myMap = new google.maps.Map(     
  19.         document.getElementById("map"),myOptions     
  20.     );     
  21.     // 创建标记     
  22.     var marker = new google.maps.Marker({     
  23.         // 标注指定的经纬度坐标点     
  24.         position: latlng,     
  25.         // 指定用于标注的地图     
  26.         map: myMap  
  27.     });  
  28.     //创建标注窗口     
  29.     var infowindow = new google.maps.InfoWindow({     
  30.         content:"您在这里<br/>纬度:"+     
  31.             coords.latitude+     
  32.             "<br/>经度:"+coords.longitude     
  33.     });     
  34.     //打开标注窗口     
  35.     infowindow.open(myMap,marker);    
  36. }  
        经过测试,Chrome/Firefox/Safari/Opera四个浏览器获取到的位置信息都是一摸一样的,估计都是用的同一个位置服务,数据如下:

        而IE浏览器的和上面几款浏览器获取到的数据不一样,数据如下:

        位置服务用于估计您所在位置的本地网络信息包括:有关可见 WiFi 接入点的信息(包括信号强度)、有关您本地路由器的信息、您计算机的 IP 地址。位置服务的准确度和覆盖范围因位置不同而异。 

  总的来说,在PC的浏览器中 HTML5 的地理位置功能获取的位置精度不够高,如果借助这个 HTML5 特性做一个城市天气预报是绰绰有余,但如果是做一个地图应用,那误差还是太大了。不过,如果是移动设备上的 HTML5 应用,可以通过设置 enableHighAcuracy 参数为 true,调用设备的 GPS 定位来获取高精度的地理位置信息。



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 王者荣耀跨系统送皮肤领不到怎么办 电脑使用迅雷时提示缓存过高怎么办 扣扣安全中心动态密码忘记了怎么办 pu管两头固定了中间换截怎么办 自己架设的传奇不能注册帐号怎么办 天堂2第八章读取服务端错误怎么办 苹果手机王者荣耀下了不能玩怎么办 苹果手机摔了一下触屏失灵怎么办 华为机回复出厂设置帐号忘了怎么办 华为手机里突然有个pp助手怎么办 华为手机与电脑连接不上怎么办 买房交了首付贷不了款怎么办 手机买贵了实体店不肯退怎么办 在实体店里手机买贵了怎么办 红米手机开启不了安装系统怎么办? 捡个荣耀8双清后要账号怎么办 荣耀7x升级8.0后耗电快怎么办 手机提示当前为耳机播放模式怎么办 华为手机进水了显示耳机模式怎么办 苹果6s突然变成耳机模式怎么办 华为手机出现耳机标志没声音怎么办 苹果手机微信变成耳机模式怎么办 5s不能用4g网络怎么办 华为麦芒四手机系统乱了好卡怎么办 信翼路由器登录密码忘了怎么办 苹果手机电信4g信号变3g怎么办 苹果7手机4g变3g怎么办 朵唯v3逆客手机不支持计步怎么办 移动卡升级4g后网络不好怎么办 电信办宽带送的手机卡不用了怎么办 移动华为悦盒遥控器丢了怎么办 移动签了两年套餐不想用了怎么办 华为手机隐私空间密码忘记了怎么办 华为的隐私空间密码忘记了怎么办 格力新机没密码开不了怎么办 百度下载谷歌浏览器网页错误怎么办 华为手机进水开不了机怎么办开 华为7x金属外壳掉漆了怎么办 华为麦芒6连接蓝牙音响卡顿怎么办 华为芒麦6恢复出厂设置怎么办 华为麦芒4下拉通知栏没反应怎么办