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轻松实现清新 Loading 效果的简单实例
Jun 06 HTML / CSS
使用CSS3的::selection改变选中文本颜色的方法
Sep 29 HTML / CSS
详解Sticky Footer 绝对底部的两种套路
Nov 03 HTML / CSS
CSS3 实现童年的纸飞机
May 05 HTML / CSS
CSS Houdini实现动态波浪纹效果
Jul 30 HTML / CSS
HTML5文档结构标签
Apr 21 HTML / CSS
canvas实现圆绘制的示例代码
Sep 11 HTML / CSS
canvas使用注意点总结
Jul 19 HTML / CSS
使用html5 canvas创建太空游戏的示例
May 08 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
Aug 24 HTML / CSS
html5 制作地图当前定位箭头的方法示例
Jan 10 HTML / CSS
CSS 鼠标选中文字后改变背景色的实现代码
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 小乘法表实现代码
2009/07/16 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
使用vue-router与v-if实现tab切换遇到的问题及解决方法
2018/09/07 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
python实现多人聊天室
2020/03/31 Python
Python中反射和描述器总结
2018/09/23 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
python中open函数的基本用法示例
2019/09/07 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
Python logging模块原理解析及应用
2020/08/13 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书