【问题标题】:React native app : Not authorized to use location servicesReact Native 应用程序:无权使用位置服务
【发布时间】:2019-09-13 22:48:00
【问题描述】:

我目前正在开展一个使用我手机的地理定位服务的项目。 我目前对这项服务有疑问,它说地理定位未被授权。

我尝试在互联网上查找,有几个人遇到了同样的问题,但我没有设法解决它......

  componentDidMount() {
    const { coordinate } = this.state;

    this.requestCameraPermission();

    this.watchID = navigator.geolocation.watchPosition(
      position => {
        const { routeCoordinates, distanceTravelled } = this.state;
        const { latitude, longitude } = position.coords;

        const newCoordinate = {
          latitude,
          longitude
        };
        console.log({ newCoordinate });

        coordinate.timing(newCoordinate).start();

        this.setState({
          latitude,
          longitude,
          routeCoordinates: routeCoordinates.concat([newCoordinate]),
          distanceTravelled:
            distanceTravelled + this.calcDistance(newCoordinate),
          prevLatLng: newCoordinate
        });
      },
      error => console.log(error),
      {
        enableHighAccuracy: true,
        timeout: 20000,
        maximumAge: 1000,
        distanceFilter: 10
      }
    );
  }

我没有出现在我当前的位置,而是在旧金山(这是地图上的默认位置)。 函数 navigator.geolocation.watchPosition 得到错误: "code": "E_LOCATION_UNAUTHORIZED", "message": "无权使用定位服务", “watchId”:1,

我的手机是三星 S9 并且启用了定位服务...所以我真的很好奇我现在遇到的问题。

【问题讨论】:

    标签: react-native google-maps-api-3 geolocation


    【解决方案1】:

    感谢您的回答,我设法解决了我的问题,显然由于某种原因不允许世博会使用我的位置,所以我只是强迫它:

      Location.requestPermissionsAsync();
    

    【讨论】:

      【解决方案2】:
      import * as Permissions from 'expo-permissions';
      
      await Permissions.askAsync(Permissions.LOCATION);
      

      如果 requestPermissionsAsync(); 无法工作的替代方法。

      【讨论】:

      • 这个答案只有 2 天,但似乎您没有检查文档,因为这两件事都已更改。权限正在添加到各自的包中,并且在位置中,我们现在拥有前台位置和后台位置的单独权限。请检查。顺便说一句,我在这里为这个问题找到一些答案。对我来说,它是特定于设备的,因为在snack.expo.io 和我的一个设备上,它工作正常,但在另一台设备上它显示错误,并且甚至在没有提示我的情况下阻止位置访问。
      • 如果我没记错的话,我正在使用 expo 36
      【解决方案3】:

      如果您在手机上使用 Expo 客户端,请确保您已启用位置权限。

      如果您已经授予权限,请检查您的 AndroidManifest.xml <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 这些位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-05
        • 1970-01-01
        • 2017-04-27
        • 1970-01-01
        • 2022-10-04
        • 2019-12-31
        相关资源
        最近更新 更多