Конфигурация Android для запуска собственного приложения реагирования на геолокацию - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь получить значения широты / долготы в моем базовом приложении реакции, и я попробовал следующие способы:

1) Использовал модуль реакции navigator.geolocation.getCurrentPosition (), нобыло отображено нулевое значение. Вот код:

class DetailsScreen extends React.Component {
constructor(props) {
super(props);

this.state = {
  latitude: null,
  longitude: null,
  error: null,
};
}

   componentDidMount() {
    navigator.geolocation.getCurrentPosition(
      ({coords}) => {
        const {latitude, longitude} = coords
        this.setState({
          position: {
            latitude,
            longitude,
          },
          region: {
            latitude,
            longitude,
            latitudeDelta: 0.001,
            longitudeDelta: 0.001,
          }
        })
      },
      (error) => alert(JSON.stringify(error)),
      // 'enableHighAccuracy' sometimes causes problems
      // If it does, just remove it.
      {enableHighAccuracy: false} 
    );

}
    render(){
        return(
        <View style = {styles.container}>
            <Text style = {styles.boldText}>
               Latitude:
            </Text>

            <Text>
               {this.state.latitude}
            </Text>

            <Text style = {styles.boldText}>
               Longitude:
            </Text>

            <Text>
               {this.state.longitude}
            </Text>
         </View>
        )
    }

}

2) Использовал службу реагирования-родной-геолокации для получения значения широты / долготы, но снова было показано нулевое значение.фрагмент кода:

class DetailsScreen extends React.Component {
constructor(props) {
super(props);
this.state = { latitude: null,
                longitude: null,
                error: null,
};

  }


componentDidMount() {
    Geolocation.getCurrentPosition(
      (position) => {
        this.setState({
          latitude: position.coords.latitude,
          longitude: position.coords.longitude,
          error: null,
        });
      },
      (error) => this.setState({ error: error.message }),
      { enableHighAccuracy: false, timeout: 30000, maximumAge: 10000 },

    );


}
render(){
        return(
        <View style = {styles.container}>
            <Text style = {styles.boldText}>
               Latitude:
            </Text>

            <Text>
               {this.state.latitude}
            </Text>

            <Text style = {styles.boldText}>
               Longitude:
            </Text>

            <Text>
               {this.state.longitude}
            </Text>
         </View>
        )
    }

}

3) Используется navigator.geolocation.watchCurrentPosition (), но значение широты и долготы не было получено.

Я пошел дальшеи добавьте

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

в файл manifest.xml модуля android. Так есть ли какие-либо дополнительные разрешения / изменения для android, которые я должен сделать, чтобы получить значение lat / long? Пожалуйста, помогите.

1 Ответ

0 голосов
/ 26 сентября 2018

Вернитесь к основному, это должно работать:

       navigator.geolocation.getCurrentPosition (
            (position) => {
                console.log("location_service", position);
            },
            (error) => { 
                console.log(error) 
            },
            {enableHighAccuracy: false}  
        )

Манифест Android

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Затем перестройте свое приложение (не используйте перезагрузку из Dev-меню React Native)) перезапустите react-native run-android

Несколько вещей, которые нужно добавить - если вы получаете сообщение об ошибке или оно все еще не возвращается, убедитесь, что у вас есть «свежее» местоположение (поэтому просто перенесите телефон туда, где новый сигнал GPSприходит)

...