Дмитрий Соловей@solovey
Администратор

Founder NCHub.io
NoCode / LowCode Developer
Преподаватель Creatium.io

Определение геопозиции

Добавлено: 15.03.2023 17:34

Измени данный код для вывода скорости в километрах в час, а также при достижении скорости 18 км/ч не считать пройденные шаги, а показать предупреждение, что пользователь уже не пешком идет, а передвигается на транспорте:

function set(id, text) {
    document.getElementById(id).innerHTML = text;
}

function link(id, url) {
    document.getElementById(id).setAttribute("href", url);
}
function safe(value, digits) {
    return value != null ? value.toFixed(digits) : "?";
}
let numSteps = 0;
const stepLength = 0.7; // средняя длина шага в метрах

function updated(position) {
  const speed = position.coords.speed;
  if (speed > 0) {
    const stepsPerMeter = 1 / stepLength;
    const stepsPerSec = speed * stepsPerMeter;
    const stepsThisInterval = stepsPerSec * 1; // количество шагов за секунду
    numSteps += stepsThisInterval;
  }
  set("steps", Math.floor(numSteps)); // округляем до целого числа и выводим в div с id="steps"
  set("coordinates", `${position.coords.latitude.toFixed(5)},${position.coords.longitude.toFixed(5)}`);
  set("accuracy", safe(position.coords.accuracy, 0));
  set("altitude", safe(position.coords.altitude, 0));
  set("altitude-accuracy", safe(position.coords.altitudeAccuracy, 0));
  set("heading", safe(position.coords.heading, 0));
  set("speed", safe(speed, 1));
  set("status", `${new Date(position.timestamp).toLocaleDateString()} ${new Date(position.timestamp).toLocaleTimeString()}`);
}

function failed(error) {
  switch (error.code) {
    case error.PERMISSION_DENIED:
        error = "Permission Denied";
        break;
    case error.POSITION_UNAVAILABLE:
        error = "Position Unavailable";
        break;
    case error.TIMEOUT:
        error = "Timeout";
        break;
    default:
        error = `Error: ${error.code}`;
  }
  set("status", error);
}

function request() {
  if (navigator.geolocation) {
    navigator.geolocation.watchPosition(updated, failed, { enableHighAccuracy: true });
  }
}

request();
ChatGPT @chatgpt
Пользователь

OpenAI Chat GPT-3 - это прогрессивный алгоритм машинного обучения, который автоматически создает правильные и привлекательные ответы на ввод пользователя в чат-ботах.

Добавлено: 15.03.2023 17:34

function set(id, text) {
    document.getElementById(id).innerHTML = text;
}

function link(id, url) {
    document.getElementById(id).setAttribute("href", url);
}
function safe(value, digits) {
    return value != null ? value.toFixed(digits) : "?";
}
let numSteps = 0;
const stepLength = 0.7; // средняя длина шага в метрах

function updated(position) {
  const speed = position.coords.speed * 3.6; // преобразование скорости в км/ч
  if (speed > 0) {
    const stepsPerMeter = 1 / stepLength;
    const stepsPerSec = speed * stepsPerMeter;
    const stepsThisInterval = stepsPerSec * 1; // количество шагов за секунду
    if (speed < 18) {
      numSteps += stepsThisInterval;
    } else {
      alert("Вы уже не пешком идете: передвижение на транспорте!");
    }
  }
  set("steps", Math.floor(numSteps)); // округляем до целого числа и выводим в div с id="steps"
  set("coordinates", `${position.coords.latitude.toFixed(5)},${position.coords.longitude.toFixed(5)}`);
  set("accuracy", safe(position.coords.accuracy, 0));
  set("altitude", safe(position.coords.altitude, 0));
  set("altitude-accuracy", safe(position.coords.altitudeAccuracy, 0));
  set("heading", safe(position.coords.heading, 0));
  set("speed", safe(speed, 1));
  set("status", `${new Date(position.timestamp).toLocaleDateString()} ${new Date(position.timestamp).toLocaleTimeString()}`);
}

function failed(error) {
  switch (error.code) {
    case error.PERMISSION_DENIED:
        error = "Permission Denied";
        break;
    case error.POSITION_UNAVAILABLE:
        error = "Position Unavailable";
        break;
    case error.TIMEOUT:
        error = "Timeout";
        break;
    default:
        error = `Error: ${error.code}`;
  }
  set("status", error);
}

function request() {
  if (navigator.geolocation) {
    navigator.geolocation.watchPosition(updated, failed, { enableHighAccuracy: true });
  }
}

request();
Дмитрий Соловей@solovey
Администратор

Founder NCHub.io
NoCode / LowCode Developer
Преподаватель Creatium.io

Добавлено: 15.03.2023 17:40

дополни данный код так, чтобы при погрешности геопозиции в радиусе 50 метров не читывалась

Дмитрий Соловей@solovey
Администратор

Founder NCHub.io
NoCode / LowCode Developer
Преподаватель Creatium.io

Добавлено: 15.03.2023 17:42

дополни данный код так, чтобы при погрешности геопозиции в радиусе 50 метров не учитывалась

ChatGPT @chatgpt
Пользователь

OpenAI Chat GPT-3 - это прогрессивный алгоритм машинного обучения, который автоматически создает правильные и привлекательные ответы на ввод пользователя в чат-ботах.

Добавлено: 15.03.2023 17:43

Для этого можно использовать условие, которое будет проверять значение погрешности координат и не учитывать шаги, если она больше 50 метров. Добавим это условие в функцию updated() перед вычислением количества шагов:

function updated(position) {
  const accuracy = position.coords.accuracy;
  if (accuracy <= 50) { // учитываем шаги только если погрешность координат меньше 50 метров
    const speed = position.coords.speed * 3.6; // преобразование скорости в км/ч
    if (speed > 0) {
      const stepsPerMeter = 1 / stepLength;
      const stepsPerSec = speed * stepsPerMeter;
      const stepsThisInterval = stepsPerSec; // количество шагов за секунду
      if (speed < 18) {
        numSteps += stepsThisInterval;
      } else {
        alert("Вы уже не пешком идете: передвижение на транспорте!");
      }
    }
  }
  set("steps", Math.floor(numSteps)); // округляем до целого числа и выводим в div с id="steps"
  set("coordinates", `${position.coords.latitude.toFixed(5)},${position.coords.longitude.toFixed(5)}`);
  set("accuracy", safe(accuracy, 0));
  set("altitude", safe(position.coords.altitude, 0));
  set("altitude-accuracy", safe(position.coords.altitudeAccuracy, 0));
  set("heading", safe(position.coords.heading, 0));
  set("speed", safe(speed, 1));
  set("status", `${new Date(position.timestamp).toLocaleDateString()} ${new Date(position.timestamp).toLocaleTimeString()}`);
}

Теперь шаги будут учитываться только если погрешность координат меньше 50 метров, а если больше, то они не будут учитываться и количество шагов не будет меняться.