Сохраняйте отслеживаемые данные GPS с Java Script - PullRequest
0 голосов
/ 10 февраля 2020

Я написал код, который отслеживает GPS-данные пользователя: index. html:

<!DOCTYPE html>
<html lang="en">
  <head>
      <meta charset="UTF-8">
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
      <title>Document</title>
      <script type="text/javascript" src="tracking.js"></script> 
  </head>
  <body>

    <button class="btn btn-success m-5" onclick="getLocation()">start tracking</button>

    <button class="btn btn-danger m-5" onclick="endTrack()">end tracking</button>

  </body>
</html>

отслеживание. js:

var id;
var data = [];
var startTime;

function getLocation() {
    startTime = Date.now();

    if (navigator.geolocation) {
        id = navigator.geolocation.watchPosition(showPosition);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}

function showPosition(position) {
    var pos = {
        lat: position.coords.latitude,
        long: position.coords.longitude,
        time: Date.now() - startTime
    }

    data.push(pos);

    console.log("Latitude: " + position.coords.latitude +
    " Longitude: " + position.coords.longitude);
}

function endTrack() {
    console.log("tracking ended");
    navigator.geolocation.clearWatch(id);
}

function getData() {
    return data;
}

Отслеживание работает нормально, но мне также нужно сохранить данные. Лучшим для меня было бы, если бы данные были сохранены в файле, например, в текстовом файле, но так как я использую Java Script, я думаю, что это невозможно, потому что это на стороне клиента. Я знаю, что вы можете создавать файлы и записывать файлы с помощью php, но я не знаю, как объединить php и js в моем случае, чтобы получить данные, сохраненные в data [], в файле при нажатии на конец кнопка отслеживания. Как бы я это сделал?

РЕДАКТИРОВАТЬ: я сейчас отправляю свои данные через ajax:

function getData() {
    var send = JSON.stringify(data);
    console.log(send)
    jQuery.post('save.php', {'data': send}, function(data, status) {
        alert("Data: " + data + "\nStatus: " + status);
    })
}

и получаю их так:

$data = $_POST['data'];
timestamp = date('Y-m-d_H-i-s');
$datei = fopen($timestamp.".txt","x");
fwrite($datei, $data, 100);
fclose($datei);

проблема в том, что я отправляю строку, которая выглядит следующим образом: [{"lat": 80.08359300000001, "long": 8.4771352, "time": 2}, {"lat": 80.08359300000001, "long": 8.4771352, "time": 2001}] только 100 символов печатаются в текстовом файле, console.log (send) показывает все символы, а также предупреждение («Данные:» + данные + »\ nStatus:« + состояние); показывает все данные, только текстовый файл дает сокращенную версию. Я использую XAMPP. Я также попытался увеличить post_max_size и upload_max_size в php .ini, но это также не помогло. Почему не все символы отображаются? Есть ли ограничение для поста (я посмотрел вокруг в других постах, и все они сказали, что нет) или что-то не так с php или что это? Кстати, я не получаю ошибки, может быть, есть одна в коде php, но это не показывается мне, потому что это в другом файле.

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Используйте HTML5 локальное хранилище для сохранения данных через клиент, если ваше приложение маленькое, и вы не против, чтобы оно было редактируемым и очищаемым с клиента.

Однако, если вам нужно, чтобы он использовался только определенным пользователем, или вы хотите что-то более сложное, вы можете попробовать сделать бэкэнд с node.js, например, PHP для написания кода на стороне сервера, но он использует javascript, который может быть более полезно для вас.

Надеюсь, это помогло. Позвольте мне знать, если вам нужно что-нибудь еще. : D

0 голосов
/ 16 февраля 2020

Я обнаружил проблему: в php -файле было ограничение на количество символов:

fwrite($datei, $data, 100);

Мне просто нужно было изменить "100"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...