反应本机应用程序:未经授权可使用位置服务

时间:2019-04-24 15:15:21

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

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

我尝试查看互联网,但有几个人也遇到了同样的问题,但是我没有设法解决...

  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
      }
    );
  }

我没有出现在当前位置上,而是在San Fransisco(这是地图上的默认位置)上。 函数navigator.geolocation.watchPosition收到错误:  “代码”:“ E_LOCATION_UNAUTHORIZED”,   “ message”:“未经授权使用位置服务”,   “ watchId”:1,

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

3 个答案:

答案 0 :(得分:1)

import * as Permissions from 'expo-permissions';

await Permissions.askAsync(Permissions.LOCATION);

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

答案 1 :(得分:0)

谢谢您的回答,我设法解决了问题,显然由于某些原因,expo不允许使用我的位置,所以我只用:

  Location.requestPermissionsAsync();

答案 2 :(得分:0)

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

如果您已获得许可,请检查您的 AndroidManifest.xml <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>用于这些位置。