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 相关文章推荐
一个js封装的不错的选项卡效果代码
Feb 15 Javascript
JS date对象的减法处理实现代码
Dec 28 Javascript
JavaScript中OnLoad几种使用方法
Dec 15 Javascript
JS对HTML标签select的获取、添加、删除操作
Oct 17 Javascript
微信WeixinJSBridge API使用实例
May 25 Javascript
H5移动端图片压缩上传开发流程
Nov 09 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
Feb 17 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
May 24 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
Sep 11 Javascript
vue 中swiper的使用教程
May 22 Javascript
探秘vue-rx 2.0(推荐)
Sep 21 Javascript
JavaScript字符串转数字的简单实现方法
Nov 27 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部分常见问题总结
2006/10/09 PHP
一个php作的文本留言本的例子(五)
2006/10/09 PHP
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
header导出Excel应用示例
2014/01/24 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
jQuery的强大选择器小结
2009/12/27 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
AngularJS实现表单验证
2015/01/28 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
原生JavaScript实现轮播图
2021/01/10 Javascript
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
恒华伟业笔试面试题
2015/02/26 面试题
施工安全责任书
2014/04/14 职场文书