【发布时间】:2021-12-30 17:07:49
【问题描述】:
当用户选中“获取当前位置”复选框时,我想获取当前位置。
我有一个用于用户输入的表单,其中之一是一个复选框,当复选框被选中并提交表单时,它会获取用户的当前位置。
我的代码:
const getLocation = () => {
console.log("Testing getLocation");
(async () => {
console.log("Ask Location Permission");
let { status } = await Location.requestForegroundPermissionsAsync();
console.log("Permission Asked");
if (status !== "granted") {
setErrorMsg("Location access denied!");
console.log(errorMsg);
return;
}
let currentLocation = await Location.getCurrentPositionAsync({});
setLatitude(currentLocation.coords.latitude);
setLongitude(currentLocation.coords.longitude);
console.log("Start of Print Coords");
console.log(currentLatitude);
console.log(currentLongitude);
console.log("End of Print Coords");
})();
};
const onSubmit = (data: { distance: number; coordinates: string }) => {
if (checkbox) {
console.log("Checkbox Selected");
getLocation();
console.log("getLocation Tested");
coords.push(currentLatitude);
coords.push(currentLongitude);
console.log(coords);
}
当我提交表单时,我有多个控制台日志来检查我的问题所在,因为它从不要求获取位置权限。在 getLocation 中,它在打印“Ask Location Permission”后退出,并在应用程序未请求位置许可时以某种方式返回打印“Permission Asked”。console logs
我正在使用 expo location 来获取当前位置,并且我不使用 useEffect,因为我只需要一次当前坐标并且不需要更新它。 https://docs.expo.dev/versions/latest/sdk/location/
【问题讨论】:
标签: react-native expo location