如何数圆圈?

问题描述 投票:0回答:0

我之前问过类似的问题,但这是不同的。我正在使用 Oracle APEX 22.2 开发一个应该在 Android 手机上运行的 PWA 应用程序。这是孩子们的游戏。使用的代码是纯 JavaScript。这场比赛就像一场圆圈赛跑。有一个圆形的地方。比赛开始时,孩子站在代表比赛起跑线的 10 米水平线上。这孩子的手机上有他的定位服务。孩子开始奔跑。当孩子在10米宽的任意一点上再次到达起跑线时,就意味着他们通过了一轮。然后,每次孩子从 10 米宽线的任何一点通过起跑线时,应用程序应将轮数分配给专用项目 round_no。 我的解决方案使用 Geo-location API 来指定起始经度。然后,如果经度值增加,然后减少,然后又增加,这意味着孩子通过了一轮,因为当孩子开始向前跑时,这会导致经度增加。然后当他们经过半个圆圈时,经度将减少。然后在减少后再次增加时,这意味着它通过了整个圆圈。 但有一种情况是,孩子可能会在起始位置之前掉落一些东西。在这种情况下,它将通过起始位置,然后回到起始位置后面,然后再次通过。在这种情况下,代码会将其视为一轮,而实际上不是。 如果有更好的解决方案可以知道孩子是否已经过了整个周期,我将不胜感激。 下面是我正在使用的代码...

var lo, la, slo, sla, roundNoVal;
function getCurrentLoc() {
  navigator.geolocation.getCurrentPosition(function (position) {
    slo = position.coords.longitude;
    sla = position.coords.latitude;
  });
}

function watchPosition() {
  navigator.geolocation.watchPosition(function (position) {
    lo = position.coords.longitude;
    if (lo > slo && g == "" && l == "") {
      g = 1;
    } else if (g !== "" && l == "" && lo < slo) {
      l = 1;
    } else if (g !== "" && l !== "" && lo > slo) {
      g = "";
      l = "";
      roundNoVal = document.getElementById("P6_ROUND_NO").innerHTML;
      document.getElementById("P6_ROUND_NO").innerHTML = roundNoVal + 1;
    }
  });
}
<body onload="getCurrentLoc()">
  <input id="P6_ROUND_NO">
<button onclick="watchPosition()">Watch Position</botton>
</body>

javascript html jquery geolocation oracle-apex
© www.soinside.com 2019 - 2024. All rights reserved.