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的新特性来总结垂直居中的实现方法
May 30 HTML / CSS
CSS3效果:自定义“W”形运行轨迹实例
Mar 29 HTML / CSS
css3的动画特效之动画序列(animation)
Dec 22 HTML / CSS
css3实现动画的三种方式
Aug 24 HTML / CSS
深入研究HTML5实现图片压缩上传功能
Mar 25 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
Jun 28 HTML / CSS
HTML5中的autofocus(自动聚焦)属性介绍
Apr 23 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
Nov 16 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
Mar 25 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
Jun 13 HTML / CSS
canvas简单连线动画的实现代码
Feb 04 HTML / CSS
recorder.js 基于Html5录音功能的实现
May 26 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 has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
JS库之wow.js使用方法
2017/09/14 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
js实现3D旋转相册
2020/08/02 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
Python实现简单过滤文本段的方法
2017/05/24 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
英语教师岗位职责
2014/03/16 职场文书
群众路线党课主持词
2014/04/01 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
SQL 窗口函数实现高效分页查询的案例分析
2021/05/21 SQL Server
Python包argparse模块常用方法
2021/06/04 Python
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫