我正在尝试使用React Native在Android中获取当前用户位置。我在App.js文件中编写了以下代码段:
import React, { Component } from "react";
import {
Platform,
StyleSheet,
Text,
View,
Alert,
TouchableOpacity
} from "react-native";
export default class App extends Component {
state = {
location: null
};
findCoordinates = () => {
navigator.geolocation.getCurrentPosition(
position => {
const location = JSON.stringify(position);
this.setState({ location });
},
error => alert(error.message),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
);
alert("SKIPPED");
};
render() {
return (
<View style={styles.container}>
<TouchableOpacity onPress={this.findCoordinates}>
<Text style={styles.welcome}>Find My Coords?</Text>
<Text>Location: {this.state.location}</Text>
</TouchableOpacity>
</View>
);
}
}
const styles = StyleSheet.create({
... some style ...
});
自从我使用Android模拟器以来,我还在AndroidManifest.xml
标签上方android\app\src\main
的{{1}}文件中添加了以下行:
application
当我运行它时,没有出现共享GPS位置的请求,而且<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
函数似乎只是被跳过了。状态未更新,不显示任何错误,并且显示警报“ SKIPPED”。
这是我取消“跳过”警报后在屏幕上看到的内容:
我在这里想念什么?
答案 0 :(得分:0)
如果您使用的是iOS版Simulator,请转到Simulator的菜单栏,然后选择“调试‣位置‣自定义位置”。输入经度和纬度坐标。
如果使用的是Android虚拟设备,请在仿真器的工具栏上单击代表扩展控件的三个点。在“位置”部分中,输入经度和纬度。
答案 1 :(得分:0)
显然,我必须重新启动模拟器,然后它才能开始正常工作。找到了提示here。