我正在尝试制作一个循环来获取来自不同城市的天气状况,并将其作为标记显示在googlemap中。 如果我这样做,我可以一次得到一个:
$.getJSON("http://free.worldweatheronline.com/feed/weather.ashx?q="+markers[0].lat+","+markers[0].lng+"&format=json" +"&num_of_days=1" + "&key=e678d973c7184412112807"+"&callback=?",function(jsonp){
$.each(jsonp.data.current_condition, function(i){
var time = this;
markerWeather[0] = new google.maps.Marker({
position: new google.maps.LatLng(markers[0].lat,markers[0].lng),
title: "Temp. " + markers[0].title + ": "+ time.temp_C + " grados",
map: mapa
});
});
});
如果我复制所有内容并更改它与所有标记一起使用的数字......问题是,如果我交换数字并将变量放入循环中,它就不能正常工作..例如:
for(z=0; z<=5; z++){
$.getJSON("http://free.worldweatheronline.com/feed/weather.ashx?q="+markers[z].lat+","+markers[z].lng+"&format=json" +"&num_of_days=1" + "&key=e678d973c7184412112807"+"&callback=?",function(jsonp){
$.each(jsonp.data.current_condition, function(i){
var time = this;
markerWeather[0] = new google.maps.Marker({
position: new google.maps.LatLng(markers[z].lat,markers[z].lng),
title: "Temp. " + markers[z].title + ": "+ time.temp_C + " grados",
map: mapa
});
});
});
}
请帮忙!对不起,感到抱歉。
PS:这是我的页面:www.kanawogirusa.com.ar PS2:这是代码map.js
答案 0 :(得分:1)
您的问题是您将标记[z]分配给markerWeather [0] ..所以所有内容都分配给[0]
至少那是我现在能看到的最明显的事情..
<强>更新强>
好吧我猜我发现了问题。由于.getJson是一个异步调用,该方法已经返回,并且当第一个异步调用返回执行回调时,你的for()循环已经将变量修改了6次。
你需要做的是:
var f = function(z) {
$.getJSON("http://free.worldweatheronline.com/feed/weather.ashx?q="+markers[z].lat+","+markers[z].lng+"&format=json" +"&num_of_days=1" + "&key=e678d973c7184412112807"+"&callback=?",function(jsonp){
$.each(jsonp.data.current_condition, function(i){
var time = this;
markerWeather[z] = new google.maps.Marker({
position: new google.maps.LatLng(markers[z].lat,markers[z].lng),
title: "Temp. " + markers[z].title + ": "+ time.temp_C + " grados",
map: mapa
});
});
});
}
for(z=0; z<=5; z++){
f(z);
}
通过在每次循环迭代中调用一个函数,您可以通过闭包保留z变量..