react native 获取地理位置的方法示例


Posted in Javascript onAugust 28, 2018

react native 官网介绍了这个 api Geolocation 但是这个api只能返回 经纬度 所以要把经纬度 通过逆地理位置转义 http://recode.ditu.aliyun.com/jsdoc/geocode_api.html 可通过这个阿里的开放接口

在 react native 中,我们所用的是react native 自带的api定位功能,无需引入第三方js。

react native 定位是通过Geolocation这个模块来实现的。想了解更多关于Geolocation的知识请点击下面 Geolocation自行了解,这里我们主要将他的几个方法。

static getCurrentPosition(geo_success, geo_error?, geo_options?)
Invokes the success callback once with the latest location info. Supported options: timeout (ms), maximumAge (ms), enableHighAccuracy (bool) On Android, this can return almost immediately if the location is cached or request an update, which might take a while.

static watchPosition(success, error?, options?)
Invokes the success callback whenever the location changes. Supported options: timeout (ms), maximumAge (ms), enableHighAccuracy (bool), distanceFilter(m)

static clearWatch(watchID)

第一个方法是获取第一次定位时的位置信息,第一个为成功时的回掉函数,还有error时的回掉,第三个是传状态的。
在请求成功函数中有以下属性:

  • 经度 : coords.longitude
  • 纬度 : coords.latitude
  • 准确度 : coords.accuracy
  • 海拔 : coords.altitude
  • 海拔准确度 : coords.altitudeAcuracy
  • 行进方向 : coords.heading
  • 地面速度 : coords.speed
  • 时间戳 : new Date(position.timestamp)

在请求失败函数中有4种情况(err.code状态值):

1为用户拒绝定位请问
2暂时获取不到位置信息
3为请求超时
4未知错误

第三个options是可选参数,属性如下:

enableHighAccuracy——指示浏览器获取高精度的位置,默认为false。当开启后,可能没有任何影响,也可能使浏览器花费更长的时间获取更精确的位置数据。

timeout——指定获取地理位置的超时时间,默认不限时。单位为毫秒。

maximumAge——最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。默认为0,表示浏览器需要立刻重新计算位置。

static watchPosition(success, error?, options?)

是多次改变了位置信息时才会触发,一般触发的可能性可能用户多次刷新数据,如一个人行车到其他城市,这时如果设置一个监听函数,只要watchid不一样,就会不断的触发

由于可能会出现缓存的情况,所以Geolocation 为我们提供了一个可以清除缓存的方法watchPosition(),改方法是 用于上一次的定位信息进行清除的。

对了,要启动react native 的定位功能的话,如果你是android 用户,你需要先在AndroidManifest.xml中加入以下权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

具体实现

import Geolocation from 'Geolocation';

  ......

 getlocal() {
  Geolocation.getCurrentPosition(
   val => {
    let ValInfo =
     '速度:' +
     val.coords.speed +
     '\n经度:' +
     val.coords.longitude +
     '\n纬度:' +
     val.coords.latitude +
     '\n准确度:' +
     val.coords.accuracy +
     '\n行进方向:' +
     val.coords.heading +
     '\n海拔:' +
     val.coords.altitude +
     '\n海拔准确度:' +
     val.coords.altitudeAccuracy +
     '\n时间戳:' +
     val.timestamp;
    this.setState({ LocalPosition: ValInfo });
    console.log("打印地理位置:"+`${val.coords.longitude},${val.coords.latitude}`)
    GET_GPRS({
     "l":`${val.coords.latitude},${val.coords.longitude}`,
     "type":111,
    }).then(res => {
     console.log(JSON.stringify(res))
    })
   },
   val => {
    let ValInfo = '获取坐标失败:' + val;
    this.setState({ LocalPosition: ValInfo }); //如果为空的话 没允许开启定位服务

   },
  );
 }

这里的 GET_GPRS 是自己封装的 fech请求

记得开启 位置访问权限

打印结果如下:

react native 获取地理位置的方法示例

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

Javascript 相关文章推荐
在Javascript中定义对象类别
Dec 22 Javascript
javascript中的关于类型转换的性能优化
Dec 14 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
JS限制条件补全问题实例分析
Dec 16 Javascript
js 去掉字符串前后空格实现代码集合
Mar 25 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
May 30 Javascript
bootstrap轮播模板使用方法详解
Nov 17 Javascript
解决vue attr取不到属性值的问题
Sep 18 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 Javascript
JS如何实现手机端输入验证码效果
May 13 Javascript
vue配置多代理服务接口地址操作
Sep 08 Javascript
angular *Ngif else用法详解
Dec 15 Javascript
微信小程序自定义音乐进度条的实例代码
Aug 28 #Javascript
JavaScript模拟实现自由落体效果
Aug 28 #Javascript
vue-cli3脚手架的配置及使用教程
Aug 28 #Javascript
vue.js实现带日期星期的数字时钟功能示例
Aug 28 #Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
Aug 28 #Javascript
vue 使用自定义指令实现表单校验的方法
Aug 28 #Javascript
微信小程序多音频播放进度条问题
Aug 28 #Javascript
You might like
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
详解JavaScript的变量
2019/04/04 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
python基础教程之循环介绍
2014/08/29 Python
python中as用法实例分析
2015/04/30 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
团队精神演讲稿
2013/12/31 职场文书
关于母亲节的感言
2014/02/04 职场文书
采购助理岗位职责
2014/02/16 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
学生操行评语大全
2014/04/24 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书