关于HTML5 地理位置geolocation API 的一些事

大学毕业,到进入这个行业也已经有5个多月了,接触HTML5 Webapp开发也有5个多月了,趁着周末写一些关于在开发过程中使用HTML5 Geolocation API的一些心得。

一、浏览器支持

  Internet Explorer 9+, Firefox, Chrome, Safari 和 Opera 支持Geolocation(地理定位).

   移动端:Android 2.0+,iPhone 3.0+,Opera Mobile 10.1+,Symbian,Blackberry OS 6,Maemo

  这是我入行大半年感觉最为头疼的,各个不同版本浏览器的兼容性。

 

二、getCurrentPosition(获取当前位置的GPS信息)

  语法:window.navigator.getCurrentPosition(successfulCallback,failCallback,options)

       successfulCallback : 成功获取到GPS定位信息之后的回调函数;

                 返回一个对象position,包含coords.latitude(纬度),coords.longitude(经度),以及accuracy 属性

 

               failCallback : 获取GPS失败之后的回调函数;

              返回一个对象:PERMISSION_DENIED(用户拒绝对获取地理位置的请求);

                   POSITION_UNAVAILABLE(位置信息是不可用的)

                   TIMEOUT(请求用户地理位置超时);

                   UNKNOWN_ERROR(未知错误)

       options :  这是一个可选参数;

          enableHighAccuracy: 是否要求高精度的地理位置信息 

          timeout:对地理位置信息的获取操作做一个超时限制(单位为毫秒),如果在该时间内未获取到地理位置信息,则返回错误

              maximumAge: 对地理位置进行缓存的有效时间(单位为毫秒) ;例如缓存事件为2min 那么在9点中获取的GPS信息,在9:01再次获取时会返回9点获取的GPS信息;

 

  Demo代码如下:

    function getPosition(){

        //判断浏览器是否支持HTML5 定位

      if(window.navigator.geolocation){

        navigator.geolocation.getCurrentPosition(successfulCallback,failCallback,options)

      }else{

           alert("你的浏览器不能使用HTML5定位")

         }

     }

    function successfulCallback(position){

      var latitude = position.coords.latitude;

      var longitude = position.coords.longitude;

    }

    function failCallback(error){

      var text ;

      switch(error.code){

        case error.PERMISSION_DENIED:

              text ="用户拒绝对获取地理位置的请求。";

              break;
            case error.POSITION_UNAVAILABLE:

              text ="位置信息是不可用的。";

              break;

           case error.TIMEOUT:

             text ="请求用户地理位置超时。";

              break;

           case error.UNKNOWN_ERROR:

              text ="未知错误。";

              break;
          }

      }

    }

 三、watchPosition (跟踪用户不断的获取GPS),clearWatch(解除跟踪)

  语法:var watchID = window.navigator.watchPosition(successfulCallback); 

     window.navigator.geolocation.clearWatch(watchID); 

        

四、小结

  使用HTML5 geolocation API 并且结合了百度地图 \Google地图\高德地图也做了不少的开发,其中遇到了一个最坑爹的问题,就是一台测试手机的GPS获取超级慢,有的时候还能获取失败,但是

     在使用getCurrentPosition方法的时候一开始并没有在options中指定timeout ,然后导致了手机一直在获取GPS,根本进不去任何的回调函数,害的我对代码产生了质疑。

  

转载于:https://www.cnblogs.com/zjw1993/p/5093186.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值