駅データベース(5) – ロケタッチのスポットIDを路線単位で取得する

ロケタッチには、’駅データ’の駅コードからスポットデータを取得するAPIが提供されている。今回はこのAPIを使って、路線単位で駅のスポットIDを取得することを考える。

例えば駅コードが’1122501′のスポットデータは、以下のリクエストで取得できる。


https://api.loctouch.com/v1/railway/stations/1122501

  • 駅コードを指定してスポットデータを取得&保存する関数
    駅コードを指定してロケタッチサーバに問い合わせ、得られたスポットIDをデータストアに保存する関数を作成する。サーバへの負荷軽減のため、一定間隔で呼び出す前提。(そのため対象をグローバル変数に保持しておく。)

    // JavaScript
    // データストアにある駅データに、ロケタッチのスポットIDを追加する
    //// 対象はグローバル変数 gTgtStations[i] に保持されている
    //// 配列のインデックスを指定して処理を実行する
    function addLoctSpotByStation(i){
      
      // ロケタッチサーバのURI
      var uri = 'https://api.loctouch.com/v1/railway/stations/' + 
        gTgtStations[i].station_cd + '?callback=?';
      
      // サーバにリクエストを発行する
      $.getJSON(uri, function(res){
        if (res.code == 200){ // 処理成功
        // レスポンスからスポットIDを取り出して、データにセットする
          gTgtStations[i].loc_loct = res.station.station_spot_id;
          // データストアを更新する
          gDSrwStation.dbUpd(gTgtStations[i].station_cd, gTgtStations[i], function(){
            console.log('updated:' + i + ' ' + gTgtStations[i].station_name);
          });
        } else { // 処理失敗
          console.log('error:' + i)
        }
      });
    }
    
  • 路線コードを指定して駅データを取得する関数
    路線コードを指定してデータストアから駅データを取得し、結果をグローバル変数に保持しておく。

    // JavaScript
    function addStationsByLinecd(line_cd, callback){
      var query = 'line_cd:' + line_cd; //console.debug(query);
      gDSrwStation.dbRev('', query, function(stations){
        for (var i = 0; i < stations.length; i++) {
          gTgtStations.push(stations[i])
        }
        callback();
      });
    }
    
  • 2つの関数を組み合わせる
    保持している駅データをループで取り出し、(タイマー機能を使って一定間隔で)ロケタッチサーバにリクエストを発行&結果をデータストアに保存する。
    例えば、路線コード’11225′の駅データを10秒間隔で処理したい場合は、以下のようにする。

    // JavaScript
    addStationsByLinecd('11225', function(){
      for (var i = 0; i < gTgtStations.length; i++) {
        var func = 'addLoctSpotByStation(' + i + ')';
        setTimeout(func, 10000 * i);
      }
    });
    
  • 画面イメージ: xttrwconv02.html
    xttrwconv02_b01
カテゴリー: Development, Location Service タグ: パーマリンク