HTML5之geolocation

       1 获取地理位置信息:geolocation

       支持地理位置相关API的浏览器中具有navigator.geolocation属性,该属性具有三个方法:

       (1)获取当前位置信息

navigator.geolocation.getCurrentPosition()

        (2)监视当前位置信息及及其变化,一旦位置信息发生变化则会调用指定的回调函数。

navigator.geolocation.watchPosition()

        (3)取消监视

navigator.geolocation.clearWatch()

       地理位置相关的API是异步的,因此getCurrentPosition()和watchPosition()需要接受相应的回调函数作为参数。除了成功/失败的回调函数外,还可以接受一个配置对象作为可选的第三个参数。该对象的属性指定了是否需要高精度的位置信息,过期时间等相关配置。如下示例:

function success(position) {
  var coords = position.coords;
  console.log('Your current position is ' + coords.latitude + ' X ' + coords.longitude);
}

function error(err) {
  console.warn('ERROR(' + err.code + '): ' + err.message);
  //err对象包含一些数字编码和文本信息:
  //1: 不允许获取相关信息
  //2: 浏览器无法确定位置
  //3: 发生超时
}

var options = {
  enableHighAccuracy: true/false, //是否获取高精度位置信息
  maximumAge: 300000,  //设置位置信息过期时间,这里是5分钟过后,默认值为0,表示强制检查新的位置信息
  timeout: 15000  //设置请求超时时间,这里为15秒,默认值为无限长,即永不超时
}

navigator.geolocation.getCurrentPosition(success, error, options);

       上例中,成功的回调函数里面拥有一个position参数,它是一个对象,包含了当前位置的相关信息,如经度(position.coords.latitude)、纬度(position.coords.longitude)、精度值(position.coords.accuracy),有时还可能包含海拔(position.coords.altitude),速度(position.coords.speed),方向(position.coords.heading)等信息。

相关推荐