HTML5 Geolocation API的正确使用方法


Posted in HTML / CSS onDecember 04, 2018

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方法即可获取用户的位置信息,该方法有三个参数:

参数列表 类型 说明
handleSuccess Function 成功时调用函数handleSuccess
handleError Function 失败时调用函数handleError
options Object 初始化参数
// 初始化参数
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')
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
CSS3模块的目前的状况分析
Feb 24 HTML / CSS
在css3中background-clip属性与background-origin属性的用法介绍
Nov 13 HTML / CSS
CSS3 实用技巧:实现黑白图像效果示例代码
Jul 11 HTML / CSS
用CSS3实现背景渐变的方法
Jul 14 HTML / CSS
详解CSS3中@media的实际使用
Aug 04 HTML / CSS
CSS3打造磨砂玻璃背景效果
Sep 28 HTML / CSS
css3实现多个元素依次显示效果
Dec 12 HTML / CSS
CSS3只让背景图片旋转180度的实现示例
Mar 09 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
Aug 22 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
Sep 21 HTML / CSS
html5组织内容_动力节点Java学院整理
Jul 10 HTML / CSS
Html5 webRTC简单实现视频调用的示例代码
Sep 23 HTML / CSS
canvas实现俄罗斯方块的方法示例
Dec 13 #HTML / CSS
localStorage 设置过期时间的方法实现
Dec 21 #HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
Dec 26 #HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
Jan 05 #HTML / CSS
HTML5实现表单自动验证功能实例代码
Jan 11 #HTML / CSS
HTML5 File接口在web页面上使用文件下载
Feb 27 #HTML / CSS
使用phonegap检测网络状态的方法
Mar 30 #HTML / CSS
You might like
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
Python基础知识_浅谈用户交互
2017/05/31 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
python 的topk算法实例
2020/04/02 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
中间件的定义
2016/08/09 面试题
汽车队司机先进事迹材料
2014/02/01 职场文书
汉语言文学职业规划
2014/02/14 职场文书
消防安全责任书
2014/04/14 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
公司捐书倡议书
2015/04/27 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android