Я не могу использовать геолокацию в реактивных с редуксом - PullRequest
0 голосов
/ 13 февраля 2019

Я использую геолокацию в реактивной нативе с редуксом, но у меня 2 проблемы ..

  1. В моем эмуляторе андроид-студии отображается неправильная широта и долгота, мое местоположение - Лахор, Пакистан, ноОн показывает местоположение в США.
  2. Когда я подписал его apk-файл и установил этот apk-файл на свой мобильный телефон, тогда он не показывает никакого местоположения, пустой.

Кто-нибудь может мне помочь?

Вот мой код ..!

Reducer.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
         }

    }
}

Action.js

export function getLocation() {
    return dispatch => {
        navigator.geolocation.getCurrentPosition((position) => {
            dispatch({
                type: GET_LOCATION,
                lat: position.coords.latitude,
                lng: position.coords.longitude
            });
        });
    };
}

App.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>
    );
}

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Этот код ниже помогает мне узнать текущее название страны.

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));

            }
0 голосов
/ 13 февраля 2019

Вы пробовали включить высокую точность?

navigator.geolocation.getCurrentPosition(
    (position) => {
        dispatch({
            type: GET_LOCATION,
            lat: position.coords.latitude,
            lng: position.coords.longitude
        });
    },
    (error) => {},
    { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 },
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...