我想创建一个像this的地图。
我的代码已完成并且可以运行,但是服务器将我的请求限制为每分钟40个请求,因此我需要降低请求速度。我发现我的.csv列表中甚至只有一个City都达到了服务器限制(它应该只发送一个请求)。
错误告诉我,在达到服务器限制之前,循环不会停止将具有相同城市的请求发送到服务器。
我希望循环一次执行每个.length
。
怎么了?
var Städte;
var data;
var profile = 'driving-car'
var preference = 'fastest'
function setup() {
createCanvas(2000,2000);
loadJSON('URL', gotData);
Städte = loadStrings ('v3.1.csv');
}
function gotData(data) {
var route = data.features;
for (var j = 0; j <= 1; j++ ) {
var citydata = Städte[j].split(/,/);
var lon = citydata[3];
var lat = citydata[2];
loadJSON('URL', gotData);
beginShape();
for (var i = 0; i < route[0].geometry.coordinates.length; i=i+500) {
var x = route[0].geometry.coordinates[i][0];
var y = route[0].geometry.coordinates[i][1];
noFill();
vertex(x*100-200,-y*100+6000);
}
endShape();
}
}
my code
最佳答案
如果我正确地阅读了您的代码(由于格式不正确,这会有些困难),那么您将在gotData()
函数中重做请求:
var lat = citydata[2];
loadJSON('URL', gotData);
beginShape();
因此,您的代码如下所示:
setup()
函数被调用。您调用
loadJSON()
函数,它发出请求,然后调用gotData()
函数。gotData()
函数被调用。在
gotData()
函数中,您再次调用loadJSON()
,这将发出另一个请求。gotData()
函数一次又一次地被调用...这就是为什么您要用尽配额。为什么在那里第二个呼叫
loadJSON()
?您能删除它吗?还要注意,您应该养成debugging your code的习惯,并检查您的developer tools来理解这样的问题。