HTML5 Geolocation API的准确运用

Geolocation是HTML5规范下的一个Web API,应用它能够猎取装备的当前位置信息(坐标),此API具有三个要领:getCurrentPosition、watchPosition和clearWatch,个中最经常运用的是getCurrentPosition要领,剩下两个要领须要搭配运用!

运用要领:

浏览器兼容性检测:

该api经由过程navigator.geolocation对象宣布,只要在此对象存在的情况下,才能够运用它的地舆定位效劳,检测要领以下:

if (navigator.geolocation) {
    // 定位代码写在这里
} else {
    alert('Geolocation is not supported in your browser')
}
猎取用户的当前位置:

运用getCurrentLocation要领即可猎取用户的位置信息,该要领有三个参数:

参数列表范例申明
handleSuccessFunction胜利时挪用函数handleSuccess
handleErrorFunction失利时挪用函数handleError
optionsObject初始化参数
// 初始化参数
const options = {
  // 高精确度: true / false
  enableHighAccuracy: true,
  // 守候相应的最长时候 单元:毫秒
  timeout: 5 * 1000,
  // 应用程序情愿接收的缓存位置的最长时候
  maximumAge: 0
}

// 胜利回调函数 : data包括位置信息
const handleSuccess = data => console.log(data)

// 失利回调函数 : error包括毛病信息
const handleError = error => console.log(error)

if (navigator.geolocation) {
    // 定位代码写在这里
    navigator.geolocation.getCurrentPosition(handleSuccess, handleError, options)
} else {
    alert('Geolocation is not supported in your browser')
}
下面是具有更多细节的代码:
const handleSuccess = data => {
  const { 
    coords, // 位置信息
    timestamp // 胜利猎取位置信息时的时候戳
  } = data

  const {
    accuracy, // 返回效果的精度(米)
    altitude, // 相对于程度面的高度
    altitudeAccuracy, // 返回高度的精度(米)
    heading, // 主机装备的行进方向,从正北方向顺时针方向
    latitude, // 纬度
    longitude, // 经度
    speed // 装备的行进速率
  } = coords

  // 打印出来看看
  console.log('timestamp =', timestamp)
  console.log('accuracy =', accuracy)
  console.log('altitude =', altitude)
  console.log('altitudeAccuracy =', altitudeAccuracy)
  console.log('heading =', heading)
  console.log('latitude =', latitude)
  console.log('longitude =', longitude)
  console.log('speed =', speed)
}

const handleError = error => {
  switch (error.code) {
    case 1:
      console.log('位置效劳要求被谢绝')
      break
    case 2:
      console.log('临时猎取不到位置信息')
      break
    case 3:
      console.log('猎取信息超时')
      break
    case 4:
      console.log('未知毛病')
      break
  }
}

const opt = {
  // 高精确度: true / false
  enableHighAccuracy: true,
  // 守候相应的最长时候 单元:毫秒
  timeout: 5 * 1000,
  // 应用程序情愿接收的缓存位置的最大年限
  maximumAge: 0
}

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(handleSuccess, handleError, opt)
} else {
  alert('Geolocation is not supported in your browser')
}
    原文作者:oaooao
    原文地址: https://segmentfault.com/a/1190000017239655
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞