Js - 判断设备是否支持定位 navigator.geolocation

JS新API标准 地理定位(navigator.geolocation),感兴趣的可以参考下:

通过navigator.geolocation来获取设备的当前位置,返回一个位置对象(从对象中得到一些经纬度的相关信息)。

1、使用方法:

  navigator.geolocation.getCurrentPosition(successCallback, [errorCallback] , [positionOptions]);

2、参数介绍:

  successCallback: 获取定位成功时执行的回调函数。function(position){ console.log(position); }

  返回一个地理数据对象position作为参数,该对象有属性timestamp和coords。

    timestamp表示该地理数据创建时间(时间戳);

    coords包括另外七个属性:

      coords.latitude:估计纬度

      coords.longitude:估计经度

      coords.altitude:估计高度

      coords.accuracy:所提供的以米为单位的经度和纬度估计的精确度

      coords.altitudeAccuracy:所提供的以米为单位的高度估计的精确度

      coords.heading: 宿主设备当前移动的角度方向,相对于正北方向顺时针计算

      coords.speed:以米每秒为单位的设备的当前对地速度

  errorCallback:定位失败时执行的回调函数。function(error){ console.log(error); }

   返回一个错误数据对象error作为参数,该对象有属性message、 code、PERMISSION_DENIED、POSITION_UNAVAILABLE、TIMEOUT。

    message:错误提示内容;

    code:表示失败原因,返回1 or 2 or 3 (对应PERMISSION_DENIED、POSITION_UNAVAILABLE、TIMEOUT);

    PERMISSION_DENIED (数值为1) 表示没有权限使用地理定位API;

    POSITION_UNAVAILABLE (数值为2) 表示无法确定设备的位置,例如一个或多个的用于定位采集程序报告了一个内部错误导致了全部过程的失败;

    TIMEOUT (数值为3) 表示超时;

    例:{ message: "User denied Geolocation", code: 1, PERMISSION_DENIED: 1, POSITION_UNAVAILABLE: 2, TIMEOUT: 3 }

  positionOptions:通过设置positionOptions来更精细的执行定位。

  positionOptions拥有三个属性{ enableHighAccuracy: boolean, timeout: long, maximumAge: long }。

    enableHighAccuracy:true / false(默认,不启用)是否返回更详细更准确的结构,选择true则启用,但是会导致较长的响应时间及增加功耗,这种情况更多的用在移动设备上。

    timeout:设备位置获取操作的超时时间设定(不包括获取用户权限时间),单位为毫秒,如果在设定的timeout时间内未能获取位置定位,则会执行errorCallback()返回code(3)。如果未设定timeout,那么timeout默认为无穷大,如果timeout为负数,则默认timeout为0。

    maximumAge:设定位置缓存时间,以毫秒为单位,如果不设置该值,该值默认为0,如果设定负数,则默认为0。该值为0时,位置定位时会重新获取一个新的位置对象;该值大于0时,即从上一次获取位置时开始,缓存位置对象,如果再次获取位置时间不超过maximumAge,则返回缓存中的位置,如果超出maximumAge,则重新获取一个新的位置。

3、示例:

  if(navigator.geolocation) { // 判断设备是否支持定位

    navigator.geolocation.getCurrentPosition(function(position) {   

      alert(position.coords.latitude); // 纬度

      alert(position.coords.longitude); // 经度

    }, function(error) {

      alert(error.message);

    }, {

      timeout: 90000

    });

  }else {

    alert("不支持定位");

  }


水平有限,文中错误不妥在所难免,欢迎批评指正建议评论。文章将不定期修改完善斧正。谢谢!

 

posted @ 2015-02-04 16:09  libinxyz  阅读(1877)  评论(0编辑  收藏  举报