React native React本机应用程序:未授权使用位置服务

React native React本机应用程序:未授权使用位置服务,react-native,google-maps-api-3,geolocation,React Native,Google Maps Api 3,Geolocation,我目前正在做一个使用手机地理定位服务的项目。 我目前有一个关于这项服务的序言,它说地理定位是未经授权的 我试着上网,有几个人也有同样的问题,但我没能解决 componentDidMount() { const { coordinate } = this.state; this.requestCameraPermission(); this.watchID = navigator.geolocation.watchPosition( position =

我目前正在做一个使用手机地理定位服务的项目。 我目前有一个关于这项服务的序言,它说地理定位是未经授权的

我试着上网,有几个人也有同样的问题,但我没能解决

  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获取错误: 代码:E_位置_未经授权, 消息:未授权使用位置服务, watchId:1


我的手机是三星S9,位置服务已启用。。。所以我真的很好奇我现在遇到的问题。

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

  Location.requestPermissionsAsync();
如果您在手机上使用Expo客户端,请确保您已启用位置权限

如果您已经授予了该权限,请检查您的AndroidManifest.xml以获取 对于这些位置

import * as Permissions from 'expo-permissions';

await Permissions.askAsync(Permissions.LOCATION);

如果requestPermissionsAsync,则使用替代方法;无法工作。

此答案只有两天,但您似乎没有检查文档,因为这两件事都已更改。权限被添加到各自的包中,并且在位置中,我们现在对前台位置和后台位置有单独的权限。请查收。顺便说一句,我来这里是为了找到这个问题的答案。对我来说,它是特定于设备的,因为在snack.expo.io和我的一台设备上,它工作正常,但在另一台设备上,它显示错误,并阻止位置访问,甚至没有提示我。