我目前正在一个使用手机地理定位服务的项目中。 我目前对这项服务有疑问,它说未授权地理位置。
我尝试查看互联网,但有几个人也遇到了同样的问题,但是我没有设法解决...
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,并且启用了定位服务...所以,我真的很好奇我现在遇到的问题。
答案 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"/>
用于这些位置。