2012-07-18 2 views
0

Google지도 api v3 (javascript)을 사용하여 지오 코더를 구현하고 있습니다. 나는 여러 마커를 넣고 있는데 마커를 클릭하면 해당 주소가 정보창에 오길 원합니다. 그러나 마커를 클릭하면 처음에는 주소 기본값 (코드 지오 주소를 사용할 수 없음)이 표시되고 두 번째 마커를 클릭하면 이전에 클릭 한 마커의 주소가 나타납니다. 나는 코드 조각을 붙이고있다.마커를 클릭하면 지오 코더가 이전에 저장된 값을 반환합니다.

var addr=" Geo-Address Unavailable!"; 
    var geocoder = new google.maps.Geocoder(); 
    for(var i = 0; i < latLngs.length-1; i++){ //latLngs is the array of latlongs 
     marker = new google.maps.Marker({ 
     position: latlng, 
     id:markerId, 
     icon: image, 
     map: map, 
     animation : google.maps.Animation.DROP, 
      }); 
    } 
    markers[markerId] = marker; 
     var infowindow = new google.maps.InfoWindow({ 
        content: "loading..." 
       }); 
       google.maps.event.addListener(marker, "click", function() { 
        geocoder.geocode({'latLng': this.getPosition()}, function(results, status) { 
         if (status == google.maps.GeocoderStatus.OK) { 
           addr = results[0].formatted_address; 

          } 
        }); 

        infowindow.setContent(addr); 
        infowindow.open(map, this); 
       }); 
+0

(bla bla) {...는 작동하지 않습니다. 진지한 답변을 원한다면 심각한 코드를 게시하십시오. – Marcelo

답변

0

지오 코딩은 비동기입니다. 지오 코더의 콜백 내에서 리턴 된 값을 사용해야합니다. 무슨 일이 일어나고 무엇

는 :

  1. 당신은 지오 코더에 요청을 보냅니다.
  2. 는 응답이
  3. 당신이 첫 번째 요청
  4. 응답에 지오 코더에서 돌아 오는에 대한 응답을 표시
  5. 는 지오 코더에 또 다른 요청을 보내 다시 지오 코더에서 오는 응답을
  6. 를 표시 두 번째 요청
관련 문제