解析HTML5 geolocation的实例教程

测试demo的github地址: github.com/lily1010/html5_geolocation

HTML5 Geolocation API 用于获得用户的地理位置。鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。

一  基于浏览器的HTML5查找地理位置

html5中的GPS定位功能封装在 navigator.geolocation 属性里,有三种方法:

(1) getCurrentPosition 只获取一次用户的位置

(2) watchPosition 返回用户的当前位置,并继续返回用户移动时的更新位置(就像汽车上的 GPS)。

(3) clearWatch() – 停止 watchPosition() 方法

二 getCurrentPosition和 watchPosition方法使用格式是

getCurrentPosition(successCallback,errorCallback,positionOptions)和watchPosition(successCallback,errorCallback,positionOptions)

(1)successCallback表示调用函数成功以后的回调函数,该函数带有一个参数,对象字面量格式,表示获取到的用户位置数据。

(2)errorCallback表示返回的错误代码。它包含以下两个属性:

1、message:错误信息
2、 code:错误代码。

其中code错误代码包括以下四个值:
1 位置服务被拒绝
2 暂时获取不到位置信息
3 获取信息超时
4 未知错误

(3)positionOptions数据格式为JSON,有三个可选的属性:

1、enableHighAcuracy — 布尔值: 表示是否启用高精确度模式,如果启用这种模式,浏览器在获取位置信息时可能需要耗费更多的时间。
2、timeout — 整数: 表示浏览需要在指定的时间内获取位置信息,否则触发errorCallback。
3、maximumAge — 整数/常量: 表示浏览器重新获取位置信息的时间间隔。

下面来看一下测试例子:(注意要开启定位后才可以看效果)

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset=utf-8/>  
    <title>基于浏览器的HTML5查找地理位置</title> 
    <meta name=viewport content=width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no /> 
  <script>
  var options={
       enableHighAccuracy:true,   //高精度定位参数
       maximumAge:1000
   }
   function getLocation(){
       if(navigator.geolocation){
           //浏览器支持geolocation
           navigator.geolocation.getCurrentPosition(onSuccess,onError,options);  //getCurrentPosition 只获取一次用户的地理位置函数
           //onSuccess成功返回的回调函数(必选),onError失败返回的回调函数(可选),设置精确度等参数(可选options)
           
           //navigator.geolocation.watchPosition(onSuccess,onError,options);  //watchPosition 继续获取用户的位置,适合于导航
           //onSuccess成功返回的回调函数(必选),onError失败返回的回调函数(可选),设置精确度等参数(可选options)
       }else{
           //浏览器不支持geolocation
           alert ('您的浏览器暂不支持定位');
       }
   }
   //成功时
   function onSuccess(position){
     //返回用户位置
     //经度
     var longitude =position.coords.longitude;
     
     //纬度
     var latitude = position.coords.latitude;
     
     //精确度
     var accuracy = position.coords.accuracy;
     
     //高度精确度
     var altitudeAccuracy = position.coords.altitudeAccuracy;
     
     //设备正北顺时针前进的方位
     var heading = position.coords.heading;
     
     //设备外部环境的移动速度(m/s)
     var speed = position.coords.speed;
     
     //当位置捕获到时的时间戳
     var timestamp = position.timestamp;
     
     document.getElementById(container).innerHTML= 您的经度是=+longitude+'<br>'
     +您的纬度是=+latitude+'<br>'+您的精确度是=+accuracy+'<br>'
     +您的高度精确度是=+altitudeAccuracy+'<br>'+您的设备正北顺时针前进的方位是=+heading+'<br>'
     +您的设备外部环境的移动速度(m/s)是=+speed+'<br>'+您的当位置捕获到时的时间戳是=+timestamp+'<br>';
   }
   //失败时
   function onError(error){
     switch(error.code){
       case 1:alert(位置服务被拒绝);break;
       case 2:alert(暂时获取不到位置信息);break;
       case 3:alert(获取信息超时);break;
       case 4:alert(未知错误);break;
     }
   }
   window.onload=getLocation;
   </script>
</head>
<body>
   <p id=container style=300px;height: 300px></p>
</body>
</html>

上面代码最好用手机测试,因为谷歌浏览器因为被国内封的缘故,定位嘛,你们懂得

二 HTML5 geolocation调用百度地图api

百度地图的手册地址: developer.baidu.com/map/jsdemo-mobile.htm#i7_1

事先说明,html5不是精确定位,所以在地图上查看效果时总有几百米的误差

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset=utf-8/>  
    <title>基于浏览器的HTML5查找地理位置和调取百度地图api</title> 
    <meta name=viewport content=width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no />
    <!-- 百度API -->
         <script src=http://api.map.baidu.com/api?v=1.2 type=text/javascript></script>  
  <script>
   var options={
       enableHighAccuracy:true,   //高精度定位参数
       maximumAge:1000
   }
   function getLocation(){
       if(navigator.geolocation){
           //浏览器支持geolocation
           navigator.geolocation.getCurrentPosition(onSuccess,onError,options);  //getCurrentPosition 只获取一次用户的地理位置函数
           //onSuccess成功返回的回调函数(必选),onError失败返回的回调函数(可选),设置精确度等参数(可选options)
           
           //navigator.geolocation.watchPosition(onSuccess,onError,options);  //watchPosition 继续获取用户的位置,适合于导航
           //onSuccess成功返回的回调函数(必选),onError失败返回的回调函数(可选),设置精确度等参数(可选options)
       }else{
           //浏览器不支持geolocation
           alert ('您的浏览器暂不支持定位');
       }
   }
   //成功时
   function onSuccess(position){
     //返回用户位置
     //经度
     var longitude =position.coords.longitude;
     //纬度
     var latitude = position.coords.latitude;
     //使用百度地图API
     //创建地图实例  
     var map =new BMap.Map(container);
     //创建一个坐标
     var point =new BMap.Point(longitude,latitude);
     //地图初始化,设置中心点坐标和地图级别  
     map.centerAndZoom(point,15);
     map.addOverlay(new BMap.Marker(point)); //在地图上你的位置显示红色点点
   }
   //失败时
   function onError(error){
     switch(error.code){
       case 1:alert(位置服务被拒绝);break;
       case 2:alert(暂时获取不到位置信息);break;
       case 3:alert(获取信息超时);break;
       case 4:alert(未知错误);break;
     }
   }
   window.onload=getLocation;
   </script>
</head>
<body>
   <p id=container style=300px;height: 300px></p>
</body>
</html>

 上面代码已经在手机上测试通过了,误差有点大,还是不适合精确定位,定位到城市还是不错的

【相关推荐】

1. 免费h5在线视频教程

2. HTML5-Geolocation APIs的示例代码

3. html5 navigator.geolocation基于浏览器获取地理位置代码案例

4. html5指南(4)-使用Geolocation的详解

5. 详解Html5 Geolocation获取地理位置信息的示例代码分享

6. HTML5的Geolocation地理位置定位API使用方法详解

7. HTML5地理位置定位Geolocation-API及Haversine地理空间距离算法(图文)

以上就是解析HTML5 geolocation的实例教程的详细内容,更多请关注双恒网络其它相关文章!

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
9.本站默认解压密码为:www.sudo1.com
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

云资源网 » 解析HTML5 geolocation的实例教程

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或 联络我们.。
你们有qq群吗怎么加入?
当然有的,如果你是帝国cms、易优cms、和pbootcms系统的爱好者你可以加入我们的QQ千人交流群https://www.sudo1.com/page-qun.html。
  • 会员数(个)
  • 12310资源数(个)
  •        
  • 资源(G)
  •        
  • 今日下载
  • 1505稳定运行(天)

提供最优质的资源集合

立即查看 了解详情