2011-08-17 3 views
0

다른 도시의 wheather 조건을 얻기 위해 루프를 만들고이를 Google지도에서 마커로 표시하려고합니다. 내가 이렇게하면 나는 한 번에 하나를 얻을 수 있습니다getJSON을 사용하여 피드에서 여러 번 호출하는 방법

$.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 
        });  
       }); 
      }); 
} 

도움말주세요. 그리고 engrish를 유감스럽게 생각합니다.

추신 : www.kanawogirusa.com.ar PS2 :이 내 페이지입니다 map.js

+0

엘 지수 드 markerWeather ESTA siempre 엔 0 Cambiálo Z como menciona Tigraine. Y si no, usas push : markerWeather.push (new g ...); –

+0

마커에 z를 넣는 것을 잊어 버렸습니다. 여기에 코드를 복사 할 때 엉망입니다! – Emiliano

+0

나는 그것이 변수 z의 범위 문제라고 생각한다. 함수의 내부에는 항상 6이라는 값이있다. 만약 내가 alert (z)를 넣으면; 그것은 루프 전체에 6을 반환합니다. – Emiliano

답변

1

귀하의 문제는 당신이 당신의 마커를 [Z] markerWeather에 [0] .. 그래서 모든이 할당 할당하는 것입니다 여기에 코드입니다 [ 0]

그게 내가 지금 발견 할 수있는 가장 확실한 일이 적어도

..

UPDATE

OK 나는 내가 찾은 것 같아요 문제. .getJson은 비동기 호출이기 때문에 메서드가 이미 반환되었으며 for() 루프는 콜백을 실행하기 위해 첫 번째 비동기 호출이 돌아 왔을 때 이미 변수를 6 번 수정했습니다.

당신이해야 할 것은 이것이다 .. 당신은 폐쇄를 통해 Z 변수를 유지 각 루프 반복에 함수를 호출하여

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); 
} 

+0

Ups 미안하지만, 나는 코드를 복사 할 때 실수였다. 나는 원래 그것을 가지고있다 – Emiliano

+0

굉장한 친구 감사합니다! 그것은 아주 잘 작동합니다! – Emiliano

관련 문제