Android navigator.geolocation.getCurrentPosition未在本机中工作
我的Android navigator.geolocation.getCurrentPosition未在本机中工作,android,reactjs,react-native,react-native-maps,Android,Reactjs,React Native,React Native Maps,我的getCurrentPosition功能不工作 获取当前位置后,如何获取当前位置的名称 如何修复它?位置 我认为您需要阅读有关react native中location如何工作的文档。跟踪用户位置所需的所有方法都存在 getCurrentPosition 使用最新的位置信息调用一次成功回调 这意味着每次调用此函数时,您只能得到一次更新。因此,如果您希望它获得连续的更新流,那么您就没有阅读文档 watchPosition 每当位置更改时调用成功回调 这意味着,每当您的设备移动位置时,您都会收
getCurrentPosition
功能不工作
获取当前位置后,如何获取当前位置的名称
如何修复它?位置
我认为您需要阅读有关react native中location如何工作的文档。跟踪用户位置所需的所有方法都存在
getCurrentPosition
使用最新的位置信息调用一次成功回调
这意味着每次调用此函数时,您只能得到一次更新。因此,如果您希望它获得连续的更新流,那么您就没有阅读文档
watchPosition
每当位置更改时调用成功回调
这意味着,每当您的设备移动位置时,您都会收到通知,您可以使用新位置更新您的状态。但是,它仅在移动位置时更新。如果不移动位置,则无法获取更新
本教程将向您展示如何使用不同的定位方法。
反向地理代码查找
其次,基于GPS坐标获取当前用户位置的名称称为反向地理代码查找。目前有一些软件包可以做到这一点
其中有些是alpha/beta版本,有些已经很久没有更新了。因此,您的里程可能会有所不同,但您不能将这些套餐用于Expo
使用fetch和googleapi进行反向地理编码
你应该看看谷歌的文档。
提醒:要使用地理编码API,您必须获得API密钥并
必须启用计费。您可以在获得API密钥时启用计费
(请参阅快速指南)或作为单独的流程(请参阅使用和
账单)
这个简单的函数应该允许您执行反向地理代码查找,您只需要传递纬度、经度和Google API密钥
constructor(props) {
super(props);
this.state = {
initialPosition: {
latitude: 0,
longitude: 0,
latitudeDelta: 0,
longitudeDelta: 0,
}
};
}
componentDidMount () {
navigator.geolocation.getCurrentPosition(
(position) => {
var lat = parseFloat(position.coords.latitude);
var long = parseFloat(position.coords.longitude);
var initialRegion = {
latitude: lat,
longitude: long,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA,
}
this.setState({ initialPosition: initialRegion});
},
(error) => this.setState({ error: error.message }),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 },
);
这就是你如何从谷歌地图api中获取地址和你想要的一切
async getAddress (latitude, longitude, APIKEY) {
let url = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${latitude},${longitude}&key=${APIKEY}`;
try {
let response = await fetch(url);
let responseJson = await response.json();
// do what you want with the responseJson here.
return responseJson
} catch (error) {
console.warn(error);
// make sure you handle error and return something if an error occurs
}
}
定义:“不工作”会发生什么?你期待什么?你不是在这里问这个问题吗@Andrew现在我意识到我的getCurrentPosition也不起作用了。我不知道为什么。如何从google API键获取它?请参阅我的更新,但请注意,使用地理编码API可能会产生成本。
handleAddress = () => {
const API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx';
const {latitude, longitude} = this.props;
const requestOption = {
method: 'GET'
};
fetch(`https://maps.googleapis.com/maps/api/geocode/json?address=${latitude},${longitude}&key=${API_KEY}`, requestOption)
.then(res => res.json())
.then(response => {
this.setState({
address: response.results[0].formatted_address});
})
.catch(error => {
console.warn(error);
});
};