h5实现获取用户地理定位的实例代码


Posted in HTML / CSS onJuly 17, 2017

最近做的一个项目中有一个获取周围商户的功能,需要用到地理定位系统,

于是便想到了用 h5 的地理定位,查阅了下资料后,简单封装了下代码。

const getPosition = (
  timeout = 10000,
  maximumAge = 60000, 
  enableHighAcuracy = false) => new Promise((resolve, reject) => {
  if (!navigator && !navigator.geolocation)  {
    return reject(new Error('geolocation api not supported'))
  } 

  const success = (loc) => {
      const location = {
        latitude: loc.coords.latitude,  // 纬度
        longitude: loc.coords.longitude,  // 经度
        accuracy: loc.coords.accuracy // 精确度
      }
      resolve(location)
  }

  const error = () => reject('出错了')

  navigator.geolocation.getCurrentPosition(success, error, {
    enableHighAcuracy,  // 指示浏览器获取高精度的位置,默认为false
    timeout,  // 指定获取地理位置的超时时间,默认不限时,单位为毫秒
    maximumAge // 最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。
  })
})

// 使用示例
getPosition()
.then(pos => pos)
.catch(err => console.log(err))

h5 的获取地理位置的 api 确实是很好用,不过由于获取用户的地理位置是属于用户的隐私,所以需要经过用户的授权才可以。

无论用户拒绝还是允许授权,该站点都会被浏览器缓存下来,下次访问的时候就不会再次询问用户了,除非用户手动移除该规定。在 chrome 中移除规则的地址在设置里面,如下图:

h5实现获取用户地理定位的实例代码

另外如果用户拒绝了,则可以通过选择 ip 来获取经纬度,一般误差会比较大

ipip.net 是一个可以通过ip获取用户地理位置信息的网站。

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

HTML / CSS 相关文章推荐
css3实现超立体3D图片侧翻倾斜效果
Apr 16 HTML / CSS
图解CSS3制作圆环形进度条的实例教程
May 26 HTML / CSS
使用CSS3来代替JS实现交互
Aug 10 HTML / CSS
HTML5 placeholder属性详解
Jun 22 HTML / CSS
html5调用摄像头功能的实现代码
May 07 HTML / CSS
canvas学习笔记之绘制简单路径
Jan 28 HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
Jun 20 HTML / CSS
一些常用的HTML5模式(pattern) 总结
Jul 14 HTML / CSS
HTML5本地存储之IndexedDB
Jun 16 HTML / CSS
微信端html5页面调用分享接口示例
Mar 14 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
Aug 28 HTML / CSS
css3新特性的应用示例分析
Mar 16 HTML / CSS
HTML5 表单验证失败的提示语问题
Jul 13 #HTML / CSS
HTML5地理定位_动力节点Java学院整理
Jul 12 #HTML / CSS
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
Jul 11 #HTML / CSS
html5组织内容_动力节点Java学院整理
Jul 10 #HTML / CSS
html5页面结构_动力节点Java学院整理
Jul 10 #HTML / CSS
HTML5单页面手势滑屏切换原理分析
Jul 10 #HTML / CSS
HTML5中图片之间的缝隙完美解决方法
Jul 07 #HTML / CSS
You might like
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
php的urlencode()URL编码函数浅析
2011/08/09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
Javascript中的变量使用说明
2010/05/18 Javascript
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
python实现redis三种cas事务操作
2017/12/19 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
django+echart数据动态显示的例子
2019/08/12 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
通过Python实现一个简单的html页面
2020/05/16 Python
Python 实现简单的客户端认证
2020/07/29 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
电子邮箱格式怎么写
2014/01/12 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
营销总监岗位职责
2014/09/16 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle