我正在使用expo-location来监视用户的位置更新
尤其是Location.watchPositionAsync(options, callback)
函数。
它输出正确的位置,但没有使用setLocation
location
返回以下内容:
Object {
"remove": [Function remove],
}
setLocation
和location
被存储在上下文提供程序中
我的代码如下:
App.js
useEffect(() => {
console.log('hi')
_getLocationAsync = async () => {
let { status } = await Permissions.askAsync(Permissions.LOCATION)
if (status !== 'granted') {
console.log('debieeed')
}
let locations = await Location.watchPositionAsync({ accuracy: Location.Accuracy.Balanced, timeInterval: 10000, distanceInterval: 1 }, (loc) => setLocation(loc.coords));
console.log(locations)
}
_getLocationAsync()
}, [])
答案 0 :(得分:1)
我遇到了同样的问题, //Method to find the correctIndex
static int findIndex(String s)
{
char ch;
//Access all the characters of the String and the find the digit
for (int i = 0;i < s.length();i++)
{
ch = s.charAt(i);
if (Character.isDigit(ch))
{
return ch-49; //Convert the character to index
}
}
return -1;
}
找不到任何位置
似乎有一个错误(或者通过这种方式,idk)。 您必须将准确性设置为高才能获取定位对象。它不适用于其他精度选项(因为它也不适用于默认设置)。
watchPositionAsync()
希望这对某人有帮助,我为此花了一个小时:)
答案 1 :(得分:0)
我仅通过对返回的位置进行深拷贝来解决问题
如果我的逻辑错误,请纠正我
我改变了
let locations = await Location.watchPositionAsync({ accuracy: Location.Accuracy.Balanced, timeInterval: 10000, distanceInterval: 1 }, (loc) => setLocation(loc.coords));
对此
let locations = await Location.watchPositionAsync({ accuracy: Location.Accuracy.Lowest, distanceInterval: 2000 }, loc => setLocation(JSON.parse(JSON.stringify(loc.coords))));
JSON.parse(JSON.stringify(loc.coords))
在复制位置数据的地方
答案 2 :(得分:-1)
您需要阅读世博会现场的文档。
<块引用>返回解析为订阅对象的承诺,该对象有一个字段: remove (function) -- 不带参数调用此函数以删除此订阅。将不再为位置更新调用回调。
watchPositionAsync
的第二个参数请求一个回调函数,它接收一个 LocationObject
。
callback (function) -- 这个函数在每次位置更新时被调用。它接收一个 LocationObject 类型的对象作为第一个参数。
传递给回调的 LocationObject
是您要设置的状态。