React Native Geolocation не работает должным образом на IOS - PullRequest
0 голосов
/ 21 июня 2019

Я использую Geolocation в React-Native, чтобы получить мое текущее местоположение, чтобы загрузить объект вокруг меня.Ниже приведен мой код.

getCurrentPosition() {
    console.log("checkLocation", "getCurrentPosition1");
    navigator.geolocation.getCurrentPosition(
      position => {
        const { coords } = position;
        if (coords !== undefined) {
          console.log("checkLocation", "getCurrentPosition trigger");
          this.setState({
            currentCoordinate: coords,
            prevCoorForGet: coords,
            prevCoorForUpdate: coords
          });
          this.props.saveCurrentLocation({
            currentLocation: {
              latitude: coords.latitude,
              longitude: coords.longitude
            }
          });
          this.loadContent(coords);
        }
      },
      error =>
        console.log(
          "checkLocation",
          "getCurrentPosition " + JSON.stringify(error)
        ),
      {
        enableHighAccuracy: true,
        timeout: 60000,
        maximumAge: 3600000
      }
    ); 
 }

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

1 Ответ

0 голосов
/ 21 июня 2019

Это нормально работает (как ios, так и android) в моем проекте, даже после навигации между страницами и возврата на экран карты.

navigator.geolocation.getCurrentPosition(
        (position) => {
            // user location's latitude and longitude
            let latitude = parseFloat(position.coords.latitude);
            let longitude = parseFloat(position.coords.longitude);

            console.log('location position: ', position);

            let region = {
                latitude: latitude,
                longitude: longitude,
                latitudeDelta: 0.0522,
                longitudeDelta: 0.0321,
            };

            // to store region data
            this.setState({region: region});

            //animate to user current location
            this.map.animateToRegion(region,1000)


        },
        (error) => console.log('position error!!!', error),
        {enableHighAccuracy: false, timeout: 3000}
    );

Я надеюсь, что это работает и для вашего проекта

Редактировать

Если все еще не работает

    /**
     * when return the page this listener will trigger
     */
    this.props.navigation.addListener('willFocus', (payload) => {

        // call location method again
        this.getLocation()

    });
...