React Native Geolocation权限回调

时间:2018-10-26 07:46:16

标签: react-native geolocation

我很难获得权限,无法在RN上正确获取当前位置。

我真正想做的就是在拒绝或授予权限时获取回调,以便我可以分别请求我的当前位置。我使用以下方法请求许可:

geolocation.requestAuthorization();

它不返回承诺或接受回调,所以我要知道是否授予许可的唯一真实方法是反复调用

geolocation.getCurrentPosition();

并检查其内容

setInterval几乎无法回答所有问题,因此我想寻找更好的方法。

1 个答案:

答案 0 :(得分:0)

尝试类似的方法,它对我有用。

 (async () => {
       { try {
        const granted = await PermissionsAndroid.request(
          PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
          {
            'title': 'Your App',
            'message': 'Allow app to access your location '
          }
        )
        if (granted === PermissionsAndroid.RESULTS.GRANTED) {
          Geolocation.getCurrentPosition(
            (position) => {
                console.log(position);
               Geocoder.geocodePosition({lat: position.coords.latitude, lng: position.coords.longitude})
               .then(res => {
                this.setState({
                  locationResult: res[0].formattedAddress
                });
            })
            },
            (error) => {
                // See error code charts below.
                console.log(error.code, error.message);
            },
            { enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 }
        );
        } else {
          alert("Location permission denied");
        }
      } catch (err) {
        console.log("No Access  to location" + err);
      }
    }
  })();

状态中的locationResult将保存地址详细信息。