首页 > 解决方案 > 当移动设备处于睡眠模式或浏览器处于后台时,如何使用 Web 应用程序在移动浏览器中使用 HTML Geolocation API 获取位置?

问题描述

我正在使用 HTML Geolocation API 在一段时间后获取用户在 Web 应用程序中的位置。当 Web 应用程序处于前台时,它在移动浏览器上运行良好,即使在 iPhone 上的 safari 和 android 上的 google chrome 中也是如此。但是,当浏览器中的 Web 应用程序进入后台或移动设备进入睡眠模式时,我无法使用 HTML Geolocation API 获取位置。下面是示例代码

<script>

setInterval(function(){ 
    getLocation();
}, 10000);

var x = document.getElementById("demo");

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else { 
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showPosition(position) {
 // save the position
}
</script>   

有什么帮助吗?

标签: javascriptgoogle-chromeweb-applicationssafarigeolocation

解决方案


首先,您可能应该每隔一段时间使用 watchPosition() 而不是 getCurrent 。

其次,地理位置在后台不起作用:-(

这一要求是众所周知的,并且已经存在超过 5 年。在这里查看冗长的讨论

POC 设计和解决方案也已提供多年

迄今为止,没有人能解决这个问题!然而 W3C 拒绝规范它,浏览器拒绝实现它 :-( 原因只有他们知道。


推荐阅读