navigator.geolocation :: Тайм-аут запроса на определение местоположения React Native - PullRequest
0 голосов
/ 24 января 2019

Я создаю приложение React Native и пытаюсь получить мои текущие геокоды с помощью navigator.geolocation. Это показывает мне ошибку запроса времени ожидания.В основном я создаю приложение для отслеживания, и мне нужно настроить долготу широты местоположения.Для начала отслеживания есть одна кнопка, и нажатие этого отслеживания будет начато, и оно должно быть начальной точкой для отслеживания.Я использую API по умолчанию реагировать на собственный геолокации, Link https://facebook.github.io/react-native/docs/geolocation Функция, чтобы получить мое текущее местоположение ::

getLocation() {
    navigator.geolocation.getCurrentPosition(response => {
        console.log(response);
        if (response && response.coords) {
            this.saveLogs(response.coords);
        }
    },
        (error) => {
            this.onGeolocationErrorOccurCallback(error);
        },
        GeolocationOptions
    )
}

Это показывает мне ошибку ::

{«TIMEOUT»: 3, «POSITION_UNAVAILABLE»: 2, «PERMISSION_DENIED»: 1, «message»: «Тайм-аут запроса местоположения», «code»: 3}

Я добавил разрешение для Androidустройства, а также проверку, установив значение enableHighAccuracy в false.Но это не работает для меня.И мне нужно установить для enableHighAccuracy значение true, потому что я хочу, чтобы точные геокоды отслеживали кого-то.Пожалуйста, сообщите, почему истекло время ожидания запроса местоположения?

1 Ответ

0 голосов
/ 24 января 2019

Код ниже работал для меня:

componentDidMount(){
   if(Platform.OS === 'android'){
      this.requestLocationPermission()
   }else{
      this._getCurrentLocation()
   }
}

async requestLocationPermission() {
    try {
        const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
        {
          'title': 'Location Permission',
          'message': 'MyMapApp needs access to your location'
        }
        )

       if (granted === PermissionsAndroid.RESULTS.GRANTED) {
           this._getCurrentLocation()
           console.log("Location permission granted")
       } else {
           console.log("Location permission denied")
       }
    } catch (err) {
       console.warn(err)
    }
}

_getCurrentLocation = () =>{
    navigator.geolocation.getCurrentPosition(
       (position) => {
       this.setState({
          latitude: position.coords.latitude,
          longitude: position.coords.longitude, 
       })
    },
    (error) => {
        this.setState({ error: error.message })},
        { enableHighAccuracy: true, timeout: 200000, maximumAge: 1000 },
    );
}

Разрешение в файле манифеста:

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

Просто убедитесь, что ваше местоположение включено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...