React Native Geolocation在IOS上无法正常工作

时间:2019-06-21 03:07:32

标签: react-native geolocation gps react-native-ios

我正在React-Native中使用Geolocation来接收我的当前位置,以在我周围加载对象。下面是我的代码。

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

问题在于此代码在第一次运行时工作正常。但是,当我导航到另一个场景并返回时,它不再起作用,并给我超时错误。有时它起作用,有时却不起作用。请帮我修复它。

3 个答案:

答案 0 :(得分:0)

即使在页面之间导航并返回地图屏幕后,此项目也能在我的项目中正常工作(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()

    });

答案 1 :(得分:0)

尝试下面的代码,这似乎对我有用

import Geolocation from 'react-native-geolocation-service';

componentWillUnmount() {
    Geolocation.stopObserving();
}

答案 2 :(得分:0)

在componentWillMount()中使用您的函数,以便每次安装组件时都会执行该函数。