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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(下)
Aug 01 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
Jun 14 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
jquery点赞功能实现代码 点个赞吧!
May 29 jQuery
javascript实现非常简单的小数取整功能示例
Jun 13 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
Jul 20 jQuery
微信小程序页面滑动屏幕加载数据效果
Nov 16 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
Dec 11 jQuery
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
Sep 03 Javascript
JavaScript实现星级评价效果
May 17 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
多重?l件?合查?(二)
2006/10/09 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
Python控制多进程与多线程并发数总结
2016/10/26 Python
python制作websocket服务器实例分享
2016/11/20 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
C语言笔试集
2012/07/24 面试题
小学教师的个人自我鉴定
2013/10/24 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android