没有可用的位置提供程序,在响应本机中拒绝了权限

时间:2019-01-22 10:04:52

标签: reactjs react-native

我有一个应用,要求用户允许该位置。我正在测试应用程序的设备对此没有任何问题。但是,每当我使用其他设备时,它都会显示以下错误:

enter image description here

这是我的代码:

 componentDidMount() {
    navigator.geolocation.getCurrentPosition((position) => {
      let lat = parseFloat(position.coords.latitude)
      let long = parseFloat(position.coords.longitude)
      
      let initialRegion = {
        latitude: lat,
        longitude: long,
        latitudeDelta: LATITUDE_DELTA,
        longitudeDelta: LONGITUDE_DELTA
      }

      this.setState({ initialPosition: initialRegion })
      this.setState({ markerPosition: initialRegion })
    },
      (error) => alert(JSON.stringify(error)),
      { enableHighAccuracy: true, timeout: 2000, maximumAge: 3600000 }
    )
  }

我尝试过{ enableHighAccuracy: false, timeout: 2000 },但是它显示了相同的错误。

4 个答案:

答案 0 :(得分:5)

根据您提供的代码,您并未显示您正在请求访问权限的授权。

开始请求位置之前,您应该打navigator.geolocation.requestAuthorization();

您还应该确保已在AndroidManifest.xmlInfo.plist

中设置了所需的权限。

您可以在此处https://facebook.github.io/react-native/docs/geolocation

查看文档
  

Android API> = 23需要额外的步骤来检查和   使用来请求ACCESS_FINE_LOCATION权限   PermissionsAndroid API。否则可能会导致严重的崩溃。

您可以执行以下操作。

import { PermissionsAndroid } from 'react-native';

async function requestLocationPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
      {
        'title': 'Location Permission',
        'message': 'This App needs access to your location ' +
                   'so we can know where you are.'
      }
    )
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log("You can use locations ")
    } else {
      console.log("Location permission denied")
    }
  } catch (err) {
    console.warn(err)
  }
}

答案 1 :(得分:1)

我也遇到了这个错误。我花了一点时间才发现设备定位方法需要在设备设置中保持“高精度”。

谢谢

答案 2 :(得分:1)

像这样设置高精度对我有用:

const location = await Location.getCurrentPositionAsync({
  accuracy:Location.Accuracy.High
});

答案 3 :(得分:-1)

请打开您设备上的位置信息,然后再试一次。