首次运行时获取当前位置

时间:2018-10-22 07:10:31

标签: react-native geolocation

我有一个使用位置服务的应用程序,但是当我请求当前位置并且在用户允许的权限后,应用程序找不到位置。 用户必须先关闭然后重新打开该应用程序才能找到正确的位置,然后用户才能找到它的位置。 这是我的代码:

componentWillMount() {
    this.getCurrentLocation();
}
getCurrentLocation = () => {
    const locationConfig = {
        timeout: 20000,
        maximumAge: 1000,
        enableHighAccuracy: false
    };
    navigator.geolocation.getCurrentPosition(
        this.iGetLocation,
        (error) => {
            console.log(error);
        },
        locationConfig
    );
};

1 个答案:

答案 0 :(得分:2)

我认为问题出在您的职位回调中:this.iGetPosition。尝试使用回调函数,如下所示。 这对我有用(请检查getCurrentPosition函数):

 componentDidMount() {
        this.requestAccess();
 }
 requestAccess = async () => {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
        {
          'title': 'Location permission',
          'message': 'App needs access to your location ' +
                     'so we can show your location.'
        }
      )
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        navigator.geolocation.getCurrentPosition(
          (position) => {
            this.setState({
              latitude: position.coords.latitude,
              longitude: position.coords.longitude,
              error: null,
            });
          },
          (error) => this.setState({ error: error.message }),
          { enableHighAccuracy: false, timeout: 20000, maximumAge: 1000 },
        );

      } else {
        console.log("Location permission denied")
      }
    } catch (err) {
      console.warn(err)
    }
  }