【发布时间】:2015-02-18 04:57:11
【问题描述】:
我最近构建了一个 HTML5 网络应用程序,旨在在接近设定的目的地时通知用户。我已将其设置为缓存,因此无需网络访问即可在具有 GPS 或 AGPS 功能的设备中使用它。因此,要设置图片,它是一个网络应用程序,我已经缓存并添加到主屏幕以使其 像 成为本机应用程序,但它实际上只是一个 HTML5 应用程序(使用 Javascript)。
应用程序本身似乎正在运行(就检测用户的位置而言,它没有返回任何错误,因为我知道它会返回),但我发现它存在一个主要问题;当应用程序不再处于焦点时,HTML5 地理定位功能会在短时间内停止工作(我知道这是因为当我运行它并更改为不同的应用程序时,地理定位指示器会从 iPhone 的屏幕上消失,但是当我有应用程序处于焦点,地理定位图标仍然存在)。
我打算让应用程序在用户距离目的地 200 米以内时,应用程序的窗口成为焦点,并向用户发送警报,通知他们正在接近目的地。因此,它被设计为在后台工作。
问题在于,至少在 iPhone 上,Web 应用程序似乎只能在窗口聚焦时才能访问地理位置(我假设是这种情况,因为我进入 iPhone 上的位置设置并在下面看到我的应用程序的位置设置仅在应用程序正在使用时启用跟踪位置,即当应用程序在屏幕上可见时)。
我正在寻找一种方式(在 HTML5 或 JS 中)即使在屏幕上看不到应用程序时,该应用程序也可以继续监控用户的位置。
这是我用来检测用户位置的代码:
function getLocation(){
if(geo_position_js.init()){
geo_position_js.getCurrentPosition(success_callback,error_callback,{enableHighAccuracy:true});
}
else{
alert("Warning: unable to determine your position!");
}
}
function watchCurrentPosition() {
navigator.geolocation.watchPosition(success_callback, error_callback, {enableHighAccuracy:true});
}
function success_callback(p)
{
return [p.coords.longitude.toFixed(2), p.coords.latitude.toFixed(2)];
}
function error_callback(p)
{
alert("Warning - error!");
}
如果有任何用处,我将在 iPhone 6 上的 iOS 8.1.3 上运行它。提前致谢!
【问题讨论】:
标签: javascript ios iphone html geolocation