2017-01-10 15 views
-1

私は、Google Maps API v3の一部のディスプレイを更新するために5秒ごとに複数のCSVファイルをロードしようとしていますが、ステータスがある場合は-1レーンは他の数はそれがビジー状態である意味自由であることを意味します定期的にAJAXを使用してCSVをロードする

setInterval(function() { 
     checkLaneStatus(); 
     initMap(); 
    }, 2000); 


    function checkLaneStatus(){ 
     laneStatus('landing_lane.csv',landing_lane); 

     laneStatus('landing_curve.csv',landing_curve); 

     laneStatus('arrival_lane_1.csv',arrival_lane_1);  
     laneStatus('arrival_lane_2.csv',arrival_lane_2);  
     laneStatus('arrival_lane_3.csv',arrival_lane_3);  
     laneStatus('arrival_lane_4.csv',arrival_lane_4);  

     laneStatus('t1.csv',terminal1); 
     laneStatus('t2.csv',terminal2); 
     laneStatus('t3.csv',terminal3); 
     laneStatus('t4.csv',terminal4); 

     laneStatus('departure_lane_1.csv',departure_lane_1); 
     laneStatus('departure_lane_2.csv',departure_lane_2);  
     laneStatus('departure_lane_3.csv',departure_lane_3);  
     laneStatus('departure_lane_4.csv',departure_lane_4);  

     laneStatus('departure_curve.csv',departure_curve); 

     laneStatus('departure_lane.csv',departure_lane); 
    } 

    function laneStatus(file,lane){ 
     var temp = lane; 
     $.ajax({ 
      type: "GET", 
      url: file, 
      dataType: "text", 
      success: function(data) {processData(data);} 
     }); 
     function processData(allText) { 
      console.log(allText); 
      var allTextLines = allText.split(/\r\n|\n/); 
      var entries = allTextLines[0].split(','); 
      if(entries[2] != -1){ 
       temp.setOptions({strokeColor: colorRed, fillColor: colorRed}); 
      } 
     } 
    } 

CSVファイルの例(ID、名前、状態):ここで

はコードです。

1,'Departure Lane 1',-1 

同じcsvを読み込んで表示色を更新するので、すべてのcsvで検出の変更を確認する必要があります。しかし、それは各区間ごとに1つのCSVしか読み込まないので、その "車線"だけが更新されます。

laneStatus関数は、ルート(コードが実行されるindex.htmlの同じフォルダ)にあるcsvの場所を受け取ります。 "lane"引数はgoogle.maps.Rectangleオブジェクトです。

私はよく説明したと思いますが、返信いただければ幸いです!

ありがとうございます!

+0

各リクエストのデータが地図にどこに与えられているのかわかりませんが、いくつかのカラーオプションを設定しているようです。また、init()を1回だけ呼び出す必要があります。そうしないと、以前にロードされたマーカーがリセットされます – dandavis

答えて

0

あなたのブラウザは同時に最大同時リクエスト数に達している可能性があります。エンドユーザのブラウザの設定を制御することはできないため、最初の最初の配列である単純なキューの実装についてはどうでしょうか。各要求をキューに追加し、キューが空になるまで500ミリ秒ごとにこれらの要求の1つを作成する第2の間隔を設けます。

データを管理している場合、ファイルのいくつかと、それに対応するレーンの列をもう1つ組み合わせることができますか?また、それらを組み合わせたシンプルなミドルウェア層を作成するだけで、1つの接続を開くだけで済むので、ページをかなり高速化できます。

私はまた、多くの場合、リクエスト間で永続的な接続を維持するデータをプルしようとしている場合は、Webソケット(socket.io)を使用するのが好きです。

関連する問題