我正在尝试每隔5秒加载多个CSV文件,以更新Google Maps API v3中的某些显示,但只加载一个或两个,而不是所有文件。
以下是代码:
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,name,status):如果状态为-1表示该通道是空闲的,任何其他数字表示正忙。
1,'Departure Lane 1',-1
假设的行为是:加载相同的csv并更新显示颜色,因此应检查所有csv以检测更改。但是它每个间隔只加载一个csv,所以只更新了“lane”。
laneStatus函数接收位于根目录中的csv的位置(执行代码的index.html的相同文件夹)。 “lane”参数是google.maps.Rectangle对象。
我想我解释得很好,不胜感激任何回复!
谢谢!
答案 0 :(得分:0)
您可能会达到浏览器最大同时请求限制。因为你无法控制你的最终用户浏览器配置如何实现一个简单的队列,它只是先出数组中的第一个。将每个请求添加到队列,并有第二个间隔,每隔500毫秒左右创建一个请求,直到队列为空。
如果您控制数据,您可以将一些文件与另一列合并,以确定它对应的通道吗?或者甚至编写一个组合它们的简单中间件层,它会加快页面的速度,因为它只需要打开一个连接。
我还喜欢使用Web套接字(socket.io),如果您要提取数据,因为它会在请求之间保持持久连接。