gpt4 book ai didi

javascript - 地理位置 watchPosition 每秒触发一次

转载 作者:行者123 更新时间:2023-11-28 10:39:34 25 4
gpt4 key购买 nike

在我的 Ionic 应用程序中,我使用以下选项实现了地理位置 watchPosition。我的选项设置为每 10 秒触发一次,但它每秒触发一次。通常每秒会触发两次。

function watchPosition() {
var options = {
maximumAge: 10000,
timeout: 10000,
enableHighAccuracy: true,
}
watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);

function onSuccess(pos) {
...
}
function onError(error) {
...
}
}

当我的设备准备就绪时,我使用 addListener 触发 watchPosition 函数:

原来的调用是这样的: var watchID = null ; document.addEventListener("deviceready", watchPosition);

然后我改成这样: document.addEventListener("deviceready",setupWatch) ;

function setupWatch() {
// global var here so it can be cleared on logout (or whenever).
activeWatch = setInterval(watchPosition, 5000);
}

而且它仍然每秒都会触发。

然后我简单地替换了 addEventListener ,我意识到 eventListener 已经在 Ionics $ionicPlatform.ready() { .. } 内部,因此 eventListener 不是需要。然而,现在只要调用这个就会触发 watchPosition 每秒 5 次,而不是每 5 秒一次。:

setupWatch() ;

有关 watchPosition 最佳实践的其他问题。继续调用此函数的理想超时是多少...每秒是否正常,负载/处理是否过多,电池消耗是否更快等等?

最佳答案

您使用的timeoutmaximumAge并没有定义您从浏览器获得答案的频率。以下是 MDN 关于这些属性的说明:

PositionOptions.timeout Is a positive long value representing the maximum length of time (in milliseconds) the device is allowed to take in order to return a position.

PositionOptions.maximumAge Is a positive long value indicating the maximum age in milliseconds of a possible cached position that is acceptable to return.

source

我建议您将回调中的值存储在变量中,并使用另一个 setInterval 以您可以定义的速率返回该值。

编辑

如果您想处理回答率,可以使用函数 getCurrentPosition,该函数只会触发一次回调 ( source )

关于javascript - 地理位置 watchPosition 每秒触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54183239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com