我在 redux 中使用 react-native 中的地理位置,但我遇到了 2 个问题。
- 它在我的 android 工作室模拟器中显示错误的纬度和经度,我的位置是巴基斯坦拉合尔,但它显示了美国的位置。
- 当我签署它 apk 文件并在我的手机中安装该 apk 文件时,它没有显示任何位置,空的。
谁能帮我?
这是我的代码..!
减速机.js
let initialState = {
lng: null,
lat: null,
}
export default function prayerTimes(state = initialState, action) {
switch (action.type) {
case GET_LOCATION:
return {
...state,
lat: action.lat,
lng: action.lng
}
}
}
行动.js
export function getLocation() {
return dispatch => {
navigator.geolocation.getCurrentPosition((position) => {
dispatch({
type: GET_LOCATION,
lat: position.coords.latitude,
lng: position.coords.longitude
});
});
};
}
应用.js
componentDidMount() {
const { getLocation } = this.props;
getLocation();
}
render() {
const { lng, lat } = this.props;
return (
<View style={{justifyContent: 'center'}}>
<Text style={{color: 'white'}}>Latitude: {lat}</Text>
<Text style={{color: 'white'}}>Latitude: {lng}</Text>
</View>
);
}
您是否尝试过启用高精度?
navigator.geolocation.getCurrentPosition(
(position) => {
dispatch({
type: GET_LOCATION,
lat: position.coords.latitude,
lng: position.coords.longitude
});
},
(error) => {},
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 },
);
下面的代码适用于我获取我当前的国家/地区名称。
constructor(props) {
super(props);
this.state = {
lat: null,
long: null,
};
}
componentDidMount () {
navigator.geolocation.getCurrentPosition(
(position) => {
var lat = parseFloat(position.coords.latitude);
var long = parseFloat(position.coords.longitude);
this.setState({ lat: lat, long: long });
},
(error) => { },
);
}
componentDidUpdate () {
var pos = {
lat: this.state.lat,
lng: this.state.long,
};
Geocoder.geocodePosition(pos).then(res => { // import Geocoder from 'react-native-geocoder';
AsyncStorage.setItem('location',res[0].country); // res[0].country gives you the country name of your location
})
.catch(error => alert(error));
}