【发布时间】:2019-06-08 13:02:07
【问题描述】:
在我的 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 最佳做法的其他问题。继续调用此函数的理想超时是多少……每秒都可以吗,负载/处理是否过多,是否会更快耗尽电池等?
【问题讨论】:
-
你能澄清一下你的意思吗?我在哪里多次调用它?我认为使用 addEventListener,一旦设备准备好,调用该函数。一旦函数在内存中,每 10 秒调用一次。
标签: javascript html cordova ionic-framework geolocation