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中prototype用法详细介绍
Nov 14 Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 Javascript
JavaScript中的函数模式详解
Feb 11 Javascript
javascript实现实时输出当前的时间
Apr 27 Javascript
js获取form的方法
May 06 Javascript
jQuery插件datalist实现很好看的input下拉列表
Jul 14 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
Jul 15 Javascript
JavaScript生成二维码图片小结
Dec 27 Javascript
微信小程序动态的加载数据实例代码
Apr 14 Javascript
webpack4之SplitChunksPlugin使用指南
Jun 12 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
详解Node.js使用token进行认证的简单示例
May 25 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中output_buffering
2015/07/13 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
解读ES6中class关键字
2017/11/20 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
详解vue项目中调用百度地图API使用方法
2019/04/25 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
2020/11/09 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
十佳美德少年事迹材料
2014/02/05 职场文书
公司股权转让协议书
2014/04/12 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
企业挂职心得体会
2014/09/10 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
电影开国大典观后感
2015/06/04 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
使用MybatisPlus打印sql语句
2022/04/22 SQL Server