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 动画技术
Jul 27 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
Nov 17 HTML / CSS
websocket+sockjs+stompjs详解及实例代码
Nov 30 HTML / CSS
用HTML5实现手机摇一摇的功能的教程
Oct 30 HTML / CSS
html5小技巧之通过document.head获取head元素
Jun 04 HTML / CSS
在HTML5中使用MathML数学公式的简单讲解
Feb 19 HTML / CSS
浅谈h5自定义audio(问题及解决)
Aug 19 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
Aug 18 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
Jan 07 HTML / CSS
css3 实现文字闪烁效果的三种方式示例代码
Apr 25 HTML / CSS
Canvas绘制像素风图片的示例代码
Sep 25 HTML / CSS
box-shadow单边阴影的实现
May 21 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 mysql索引问题
2008/06/07 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
Python完全新手教程
2007/02/08 Python
Python struct模块解析
2014/06/12 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
调试Python程序代码的几种方法总结
2015/04/28 Python
python 中random模块的常用方法总结
2017/07/08 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
python hook监听事件详解
2018/10/25 Python
python实现猜数字游戏
2020/03/25 Python
Python线程指南分享
2019/11/19 Python
使用TensorFlow-Slim进行图像分类的实现
2019/12/31 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
施工材料员岗位职责
2014/02/12 职场文书
销售会议开幕词
2015/01/28 职场文书
公司财务部岗位职责
2015/04/14 职场文书
摘录式读书笔记
2015/07/01 职场文书
MySQL时区造成时差问题
2022/04/13 MySQL
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技