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

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

Изменить атрибут с помощью JS

Добавлено: 13.03.2023 12:50

<div class="map" id="ulf6mygs64kcp7rikbl6" data-service="yandex" data-params="{&quot;center&quot;:[&quot;55.7539103&quot;,&quot;37.6208203&quot;],&quot;point&quot;:[&quot;55.7539103&quot;,&quot;37.6208203&quot;],&quot;zoom&quot;:&quot;10&quot;,&quot;type&quot;:&quot;yandex#map&quot;}" style="">

Приведи пример кода на JS который будет изменять в атрибуте data-params значение center и point {"center":["55.7539103","37.6208203"],"point":["55.7539103","37.6208203"],"zoom":"10","type":"yandex#map"} на значения из переменных: latitude и longitude

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

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

Добавлено: 13.03.2023 12:51

const latitude = 10;
const longitude = 5;

const mapBlock = document.querySelector('#ulf6mygs64kcp7rikbl6');
mapBlock.dataset.params = mapBlock.dataset.params.replace(/center.*?\]\]/gi, `center":[${latitude}, ${longitude}]`).replace(/point.*?\]\]/gi, `point":[${latitude}, ${longitude}]`);
Дмитрий Соловей@solovey
Администратор

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

Добавлено: 13.03.2023 13:10

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) : "?";
}
function updated(position) {
    var timestamp = new Date(position.timestamp);
    var latitude = position.coords.latitude.toFixed(5);
    var longitude = position.coords.longitude.toFixed(5);
    set("coordinates", `${latitude},${longitude}`);
    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(position.coords.speed, 1));
    set("status", `${timestamp.toLocaleDateString()} ${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();

Данный код выводит в div id="speed" скорость в meters/second.
Дополни данный скрипт, который будет считать количество шагов, пройденных человеком, с учетом среднего человеческого шага

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

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

Добавлено: 13.03.2023 13:10

Для подсчета количества шагов необходимо сделать следующее:

  1. Создать переменную stepLength и присвоить ей значение длины среднего человеческого шага в метрах. Например, 0.7 метра.
  2. Создать переменную numSteps и присвоить ей начальное значение 0.
  3. В функции updated добавить следующий код:
const speed = position.coords.speed;
if (speed > 0) {
  const stepsPerMeter = 1 / stepLength;
  const stepsPerSec = speed * stepsPerMeter;
  const stepsPerMin = stepsPerSec * 60;
  const stepsThisInterval = stepsPerMin * 1; // количество шагов за минуту
  numSteps += stepsThisInterval;
  set("steps", Math.floor(numSteps)); // округляем до целого числа и выводим в div с id="steps"
}
  1. В html-разметке добавить div с id="steps", который будет выводить количество шагов. Например:
<div id="steps"></div>
Дмитрий Соловей@solovey
Администратор

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

Добавлено: 13.03.2023 13:19

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

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

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

Добавлено: 13.03.2023 13:19

Для вывода общего количества пройденных шагов необходимо только изменить строку, где обновляется значение в блоке с id="steps". Вместо set("steps", Math.floor(numStepsPerMin)); необходимо записать set("steps", Math.floor(numSteps));. Получится следующий код:

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"
}
Дмитрий Соловей@solovey
Администратор

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

Добавлено: 13.03.2023 13:23

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

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

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

Добавлено: 13.03.2023 13:24

Для того чтобы значение пройденных шагов не сбрасывалось, необходимо объявить переменную numSteps вне функции updated. Затем, в функции updated нужно обновить только количество шагов за текущий интервал и округлить значения при выводе на страницу. Измененный код будет выглядеть так:

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();