jquery - 让 gps 脚本运行一次,不需要停止和启动按钮

标签 jquery mysql geolocation

我是新来的,所以要友善。 我希望这个 gps 跟踪器在加载页面“gps.php”时自动将一个条目写入我的 mysql 数据库 如果你按下开始按钮,然后按下停止按钮,我就可以正常工作了。 我想完全摆脱按钮,只让这个 jquery 脚本运行一次并向 mysql 表输入一次注入(inject)。

所有代码都在这里http://cdpn.io/qkEvA

你能不能请你帮忙,我已经苦苦挣扎了几个星期(我不是职业程序员;)

$(document).ready(function() {

// how often should we send location data? in seconds
var sendInterval = 0.9;

var runnerId;
while (!runnerId){
    runnerId = prompt("Enter your album name:", "");
}
var intervalId;
var watchId;
var index = 0;

var formData = {};

$("#status p").text("Not tracking");
$('#start').on("click", startTrack);
$('#stop').on("click", stopTrack);

function startTrack(){
    if(navigator.geolocation){
        watchId = navigator.geolocation.watchPosition(geo_success, errorHandler,
        {enableHighAccuracy:true, maximumAge:30000, timeout:27000});
    }
    else{
        alert("Sorry, device does not support geolocation! Update your browser.");
    }
}

function stopTrack(){
    clearInterval(intervalId);
    navigator.geolocation.clearWatch(watchId);
    index = 0;
    $("#status p").text("Not tracking").removeClass("active").addClass("stopped");
    $("#start").removeAttr("disabled");
    $("#stop").attr("disabled", "disabled");
}

function geo_success(position){
    $("#status p").text("Tracking     active").removeClass("stopped").addClass("active");
    $("#start").attr("disabled", "disabled");
    $("#stop").removeAttr("disabled");

    lat = position.coords.latitude;
    lon = position.coords.longitude;

    formData.lat=lat;
    formData.lon=lon;

    if(index === 0){
        intervalId = setInterval(postData, sendInterval*1000);
    }

    index++;
}

function addTime(){
    // insert time in formData-object
    var d = new Date();
    var d_utc = ISODateString(d);

    formData.time=d_utc;

    // date to ISO 8601,
    // developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date#Example.3a_ISO_8601_formatted_dates

function ISODateString(d){
        function pad(n){return n<10 ? '0'+n : n}
        return d.getUTCFullYear()+'-'
        + pad(d.getUTCMonth()+1)+'-'
        + pad(d.getUTCDate())+'D'
        + pad(d.getUTCHours()+2)+':'
        + pad(d.getUTCMinutes())+':'
        + pad(d.getUTCSeconds())+'T'
    }
}

function postData(){
    addTime();

    $.ajax({
        type:   'POST',
        url:    'save.php?file='+runnerId,
        data:   formData,
        async:  false,
    });
}

function errorHandler(err){ 
    if(err.code == 1) {
        alert("Error: Access was denied");
    }
    else if(err.code == 2) {
        alert("Error: Position is unavailable");
    }
}
});

最佳答案

如果您想在页面加载后立即开始跟踪并在页面关闭前停止堆叠,您应该在代码中替换为:

$('#start').on("click", startTrack);
$('#stop').on("click", stopTrack);

为此:

startTrack();
$( window ).on( 'unload', stopTrack );

并将此代码移动到 startTrack 函数定义下。

关于jquery - 让 gps 脚本运行一次,不需要停止和启动按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120226/

相关文章:

c# geocoordinate watcher 不返回正确的坐标

javascript - 通过 jQuery 随机背景图片

javascript - 用于检查邮政编码文本是否不是来自特定州的正则表达式

javascript - 到达页面顶部某个元素时如何添加class并删除?

php - 获取PHP MYSQL排名查询根据分数总和进行排名

php - 通过 PHP 更新 MySQL 数据库的一行的频率是多少?

php - 如何在单个mysql查询中执行多个条件?

python - 单击“提交”按钮后使用 Python 获取新 URL

PHP/MySQL/jQuery(管理员用户)聊天

google-app-engine - Google App Engine 地理散列