问题描述
要代替我的本机应用程序使用来跟踪自己的位置,我想使用HTML5 Goelocation API生成PWA。
到目前为止,我能够实现的结果似乎表明HTML5 Goelocation API的功能比本地Android API差。
下面是我使用的代码,问题是PWA /网站应用程序仅收到很少的更新。此外,该应用仅在屏幕未关闭时才接收位置。
这给PWA跟踪(例如我的自行车旅行)带来了巨大障碍,因为我无法将屏幕和浏览器保持在前台,尽管如此,我希望PWA即使在屏幕关闭时也能继续运行。
现在我知道,在大多数情况下,设备用户和具有隐私意识的人将从useragent /浏览器中受益,从而通过禁用我搜索的功能来减少资源浪费并限制隐私丢失。
但是,从本质上讲,我查看了MDN文档,除了PositionOptions之外,我还找不到有关API保证的任何线索。
在下面找到我尝试使其用作代码的方式。
- 在手机屏幕上显示HTML5 Goelocation API是否可以正常工作?
- 是否有关于重新定位是否以及多少地理位置信息的具体信息?例如更新频率/延迟,以及地理围栏不精确?
- 例如,谷歌地图导航可以在浏览器本身中工作吗?
我的平台是Android上的Gecko。如果在Android上的Chromium中可以取得更好的结果,我也很高兴听到这一消息。
在Android上,我使用Firefox。在其中,我想让我的网站提供一个页面,该页面通过geolocation API跟踪我的运动,以替换我的足迹。
window.addEventListener("load",function(){
var a= document.createElement("div");
var textarea = document.createElement("textarea");
//textarea.value="aaaa"
textarea.style.display="block"
textarea.style.minHeight="5cm"
textarea.style.width="100%"
document.body.appendChild(a);
document.body.appendChild(textarea);
if(confirm("reset data?")){
localStorage.clear() ;
}
localStorage.setItem("start"+Date.Now(),startInfo);
var startInfo = Object.keys(localStorage).length+ " " +Date.Now()+ " " + (Date.Now() % 864000);
var lastTime=0,lastLat=0,lastLon=0,count=0,lastdistance=0;
var startTime = Date.Now();
var distance = 0;
if('geolocation' in navigator) {
a.innerHTML="<h2>super wir haben geolocation!</h2>";
setInterval(()=>{
navigator.geolocation.getCurrentPosition((position) => {
// var a = document.createElement("div");
count++;
a.innerHTML="<h1>"+(((Date.Now()-startTime)/1000)|0)+" "+((distance*100|0)/100)+"</h1><h3>"+startInfo+"</h3><h2>date="+(new Date()).toString()+"<br>lang="+position.coords.latitude+" long="+ position.coords.longitude+"</h2>";
var lat = ((position.coords.latitude * 10000000) | 0)
var lon = ((position.coords.longitude * 10000000) | 0)
var time = Date.Now();
var deltaTime = time - lastTime;
var deltaLat = lat - lastLat;
var deltaLon = lon - lastLon;
if(Math.abs(deltaLat)>100000 || Math.abs(deltaLon) > 100000)
{
} else{
distance += Math.sqrt(deltaLat*deltaLat+deltaLon*deltaLon);
}
var deltadistance = distance - lastdistance;
lastLat=lat;
lastLon=lon;
lastTime=time;
lastdistance=distance;
newline = (((Date.Now()-startTime)/1000)|0) + " dist=" + distance + "("+deltadistance+") lat=" + lat + "("+deltaLat+") lon=" + lon + "("+deltaLon+") ";
textarea.value = newline + "\n" + textarea.value;
localStorage.setItem("P"+(Date.Now()%864000),deltaLat+" "+deltaLon+" "+deltaTime);
},function(){},{timeout:900});
},1000);
} else {
a.innerHTML="<h2> shit</h2>";
}
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)