トラッキング機能を実現する(2)

  • 再生ボタン:トラッキングの開始

  • - 初期(init)・一時停止(pause)状態のときは、最初のポイントに移動する。
    - すでに再生(play)状態の場合は何もしない。(二重起動防止)
    - 地図移動処理(moveMapOnGpsData())を一定周期で起動するようにタイマー登録する。

    $('#btnConsolePlay').live('click',function(){
        if (gcurGpsDataPlayStatus == 'play') {
            return; // すでに再生中の場合は何もしない
        } else if (gcurGpsDataPlayStatus == 'init' || gcurGpsDataPlayStatus == 'stop'){
            moveMapToFirst(); // 最初のポイントに移動
        }
        //alert('play');
        // タイマー設定:1000ミリ秒ごとにmoveMapOnGpsData()をコール
        gTimerId = setInterval('moveMapOnGpsData()',1000);
        gcurGpsDataPlayStatus = 'play'
    });
    
    var gcurGpsDataIdx = 0; // どのGPSデータを地図の中心にするかのカウンタ
    function moveMapOnGpsData(){
        gcurGpsDataIdx++;
        if (gcurGpsDataIdx < gGpsData.length) {
            gMap.panTo(new google.maps.LatLng(
                gGpsData[gcurGpsDataIdx].lat, gGpsData[gcurGpsDataIdx].lon)); // 地図中心を移動
            showGridGpsInfoP(gcurGpsDataIdx); // 当該ポイントの情報を情報パネルに表示
        } else { // 最後のポイントに到達
            clearInterval(gTimerId); // タイマー解除
            gcurGpsDataIdx = 0; // カウンタのクリア
            alert('max');
        }
    }
    
  • 停止ボタン:トラッキングの停止

  • - 再生・一時停止状態「以外」のときは何もしない。
    - タイマーを解除する。カウンターをクリアする(=次回再生時は最初のポイントからになる)。

    $('#btnConsoleStop').live('click',function(){
        if (gcurGpsDataPlayStatus != 'play' && gcurGpsDataPlayStatus != 'pause') { return; }
        clearInterval(gTimerId); // タイマー解除
        gcurGpsDataIdx = 0; // カウンタのクリア(次回再生時は最初のポイントから)
        alert('stop');
        gcurGpsDataPlayStatus = 'stop';
    });
    
  • 一時停止ボタン:トラッキングの中断

  • - 再生状態「以外」のときは何もしない。
    - タイマーを解除する。カウンタは保持する。

    $('#btnConsolePause').live('click',function(){
        if (gcurGpsDataPlayStatus != 'play') {
            return; // 再生中以外の場合は何もしない
        }
        clearInterval(gTimerId); // タイマー解除(再開時は新規設定するのでクリアする)
        alert('pause');
        gcurGpsDataPlayStatus = 'pause';
    });
    
カテゴリー: Development タグ: , , , パーマリンク