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获取浏览器类型和版本的方法(js获取浏览器版本)
Mar 13 Javascript
javascript的动态加载、缓存、更新以及复用(一)
Jun 09 Javascript
png在IE6 下无法透明的解决方法汇总
May 21 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
Mar 05 Javascript
js实现页面a向页面b传参的方法
May 29 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 Javascript
jQuery实现移动端手机商城购物车功能
Sep 24 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
Oct 08 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
Apr 23 Javascript
关于JS与jQuery中的文档加载问题
Aug 22 jQuery
javascript实现移动端触屏拖拽功能
Jul 29 Javascript
SpringBoot在yml配置文件中配置druid的操作
Nov 16 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
Terran兵种介绍
2020/03/14 星际争霸
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
php查询ip所在地的方法
2014/12/05 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
python读取excel表格生成erlang数据
2017/08/26 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python按比例随机切分数据的实现
2019/07/11 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
捐助倡议书
2015/01/19 职场文书
党小组考察意见
2015/06/02 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
python 解决微分方程的操作(数值解法)
2021/05/26 Python
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
Python 数据可视化之Matplotlib详解
2021/11/02 Python
Java Spring Lifecycle的使用
2022/05/06 Java/Android
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技