React Native 获取地理位置

实现原理:

1、用  navigator.geolocation.getCurrentPosition 获取到坐标信息

2、调用 高德地图 接口,解析位置数据

本文所用RN 版本为 0.57.8

实现代码如下:

import React, {Component} from 'react';
import {StyleSheet, Text, View} from 'react-native'; export default class TestGeo extends Component { state = {
longitude: '',//经度
latitude: '',//纬度
city: '',
district: '',
street: '',
position: '',//位置名称
}; componentWillMount = () => {
this.getPositions();
}; getPositions = () => {
return new Promise(() => {
/** 获取当前位置信息 */
navigator.geolocation.getCurrentPosition(
location => {
this.setState({
longitude: location.coords.longitude,//经度
latitude: location.coords.latitude,//纬度
});
//通过调用高德地图逆地理接口,传入经纬度获取位置信息
fetch(`http://restapi.amap.com/v3/geocode/regeo?key=97c933e33025b3843b40016900074704&location=${this.state.longitude},${this.state.latitude}&radius=1000&extensions=all&batch=false&roadlevel=0`, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: ``
})
.then((response) => response.json())
.then((jsonData) => {
// console.log(jsonData)
try {
this.setState({
city: jsonData.regeocode.addressComponent.city,
district: jsonData.regeocode.addressComponent.district,
street: jsonData.regeocode.addressComponent.township,
position: jsonData.regeocode.formatted_address,
});
} catch (e) { }
})
.catch((error) => {
console.error(error);
});
},
error => {
console.error(error);
}
); })
} render() {
return (
<View style={styles.container}>
<Text style={styles.instructions}>经度:{this.state.longitude}</Text>
<Text style={styles.instructions}>纬度:{this.state.latitude}</Text>
<Text style={styles.instructions}>城市:{this.state.city}</Text>
<Text style={styles.instructions}>区域:{this.state.district}</Text>
<Text style={styles.instructions}>街道:{this.state.street}</Text>
<Text style={styles.instructions}>详细位置:{this.state.position}</Text>
</View>
);
}
} const styles = StyleSheet.create({
container: {
flex: ,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: ,
},
});

附:

高德 接口文档:

https://lbs.amap.com/api/webservice/summary

本博客地址: wukong1688

本文原文地址:https://www.cnblogs.com/wukong1688/p/11062409.html

转载请著名出处!谢谢~~

[RN] React Native 获取地理位置的更多相关文章

  1. [RN] React Native 获取验证码 按钮

    React Native 获取验证码 按钮 效果如图: 实现方法: 一.获取验证码 按钮组件 封装 CountDownButton.js "use strict"; import ...

  2. [RN] React Native 幻灯片效果 Banner

    [RN] React Native 幻灯片效果 Banner 1.定义Banner import React, {Component} from 'react'; import {Image, Scr ...

  3. [RN] React Native 实现 类似QQ 登陆页面

    [RN] React Native 实现 类似QQ 登陆页面 一.主页index.js 项目目录下index.js /** * @format */ import {AppRegistry} from ...

  4. [RN] React Native 实现图片预览

    [RN] React Native 实现图片预览 效果预览: 代码如下: 'use strict'; import React, {Component} from 'react'; import {I ...

  5. [RN] React Native 常见基本问题归纳总结

    [RN] React Native  常见基本问题归纳总结 本问题总结涉及到版本为: "react": "16.8.3","react-native& ...

  6. [RN] React Native 关闭所有黄色警告

    [RN] React Native 关闭所有黄色警告 console.ignoredYellowBox = ['Warning: BackAndroid is deprecated. Please u ...

  7. [RN] React Native 下实现底部标签(支持滑动切换)

    上一篇文章 [RN] React Native 下实现底部标签(不支持滑动切换) 总结了不支持滑动切换的方法,此篇文章总结出 支持滑动 的方法 准备工作之类的,跟上文类似,大家可点击上文查看相关内容. ...

  8. [RN] React Native 常用命令行

    [RN] React Native 常用命令行 1.查看当前版本 react-native --version 或 react-native -v 2.创建指定版本的React Native项目 1) ...

  9. [RN] React Native 让 Flatlist 支持 选中多个值,并获取所选择的值

    React Native 让 Flatlist  支持  选中多个值,并获取所选择的值 实现效果如下: 实现代码: import React, {Component} from 'react'; im ...

随机推荐

  1. nginx反向代理配置去除前缀

    (转载)原文链接:https://blog.csdn.net/gongchenyu/article/details/85960027 使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发 ...

  2. SublimeText3安装Markdown插件

    由于Webstrom对md文件的预览效果并不理想(与实际网页编译效果差别较大),所以我又改用Sublime进行本地编辑,下面介绍一下怎么搭建环境. 插件安装 整套环境我们就需要两个插件:Markdow ...

  3. 图解微信小程序---获取电影列表

    图解微信小程序---获取电影列表 代码笔记 list跳转 第一步:编写前端页面获取相关的电影列表参数(对于显示参数不熟悉,可以先写js,通过console  Log的方式获取我们电影的相关数据字段,后 ...

  4. Dictionary<string, Dictionary<string, Person>> dic = new Dictionary<string, Dictionary<string, Person>>();

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Console ...

  5. MD5加密实现方法

    在这里给大家分享一个超级简单的md5加密实现方法 如下: 引用命名空间 using System.Security.Cryptography; using System.Text; C#代码 publ ...

  6. Python 练习题:用索引取出LIST中的值

    请用索引取出下面list的指定元素,分别为Apple,Python,Lisa # -*- coding: utf-8 -*- # 请用索引取出下面list的指定元素 L = [ ['Apple','G ...

  7. axios安装及使用

    使用npm安装 $ npm install axios 使用 bower安装 $ bower install axios 使用 cdn: <script src="https://un ...

  8. Libs - 软件下载网站

    下载首页 > 网络工具 > FTP-工具 > 软件列表 http://down.tech.sina.com.cn/list/29_4_9.html

  9. js中的原型,原型链和继承

    在传统的基于Class的语言如Java.C++中,继承的本质是扩展一个已有的Class,并生成新的Subclass. 由于这类语言严格区分类和实例,继承实际上是类型的扩展.但是,JavaScript最 ...

  10. <Android Studio> 4.Adapter的那些事 <一>

    android 的表格显示和Windows桌面开发原理不同,其他平台转过来的同学要有心理准备,不要拿桌面开发的思维模式来思考android上的各种表格. 一.原理 此处使用ArrayAdapter来记 ...