2017-01-10 1 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에서 검색 변경 사항을 확인해야합니다. 그러나 각 간격마다 하나의 CSV 만로드되므로 "차선"만 업데이트됩니다.

laneStatus 함수는 루트 (코드가 실행되는 index.html의 동일한 폴더)에있는 csv의 위치를받습니다. "lane"인수는 google.maps.Rectangle 객체입니다.

나는 잘 설명했는데, 답장을 부탁드립니다.

감사합니다.

+0

각 요청의 데이터가지도에 표시되는 곳을 볼 수 없기 때문에 일부 색상 옵션을 설정하는 것처럼 보입니다. 또한 init()을 한 번만 호출해야합니다. 그렇지 않으면 이전에로드 한 마커가 재설정됩니다. – dandavis

답변

0

브라우저에 최대 동시 요청 수 제한이 있습니다. 최종 사용자의 브라우저 구성을 제어 할 수 없기 때문에 첫 번째 배열의 첫 번째 큐인 간단한 큐를 구현하는 방법은 무엇입니까? 각 요청을 대기열에 추가하고 대기열이 비어있을 때까지 500 밀리 초마다 요청 중 하나를 생성하는 두 번째 간격을 갖습니다.

데이터를 관리하는 경우 파일 중 일부를 결합하여 하나의 열을 더 많이 가질 수 있습니까? 또는 이들을 결합하는 간단한 미들웨어 계층을 작성해도 한 연결 만 열면되므로 페이지 속도가 상당히 빨라집니다.

웹 소켓 (socket.io)을 사용하면 데이터를 지속적으로 가져오고 여러 요청간에 지속적인 연결을 유지하는 것이 좋습니다.

관련 문제