首页 > 解决方案 > 使用 Java 脚本保存跟踪的 GPS 数据

问题描述

我编写了一些跟踪用户 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) 显示所有字符,并且 alert("Data: " + data + "\nStatus: " + status); 显示所有数据,只有文本文件给出了一个缩短的版本。我使用 XAMPP。我还尝试增加 php.ini 中的 post_max_size 和 upload_max_size ,但这也无济于事。为什么没有显示所有字符?帖子是否有限制(我在其他帖子中四处查看,他们都说没有)或者php有问题还是它是什么?顺便说一句:我没有错误,

标签: javascriptphpfilegps

解决方案


如果您的应用程序很小并且您不介意它可以从客户端编辑和清除,请使用 HTML5本地存储通过客户端保存数据。

但是,如果您需要它仅供某个用户使用,或者您想要更复杂的东西,您可以尝试使用 node.js 做后端,就像 PHP 用于编写服务器端代码但它使用可能更有用的 javascript给你。

希望这有帮助。需要帮助请叫我。:D


推荐阅读