2012-08-01 5 views
0

Google지도 v3에서 작업 중입니다. 이지도에서 Infowindow를 사용하여 여러 마커를 표시하려는 경우 해당 지점에 대한 정보가 표시됩니다. 정보 소스는 각 포인트에 대한 데이터가있는 자바 스크립트 배열이며 모든 것이 정상적으로 작동합니다. 배열에 (때때로) 주소 (간혹 null)와 항상 lat-long 좌표가 포함되어 있으므로 주소가 없으면 역 지오 코딩을해야합니다. 여기에 내 코드 :Google Maps v3, 역 지오 코딩 및 다중 Infowindow

var geocoder = new google.maps.Geocoder(); 
for(var i=0;i<markersArray.length;i++){  
    var la=markersArray[i][0]); 
    var lo=markersArray[i][1]); 
    gpoint=new google.maps.LatLng(la,lo); 
    var aMarker = new MarkerWithLabel({ //part of Google Maps Utility Lib 
     position: gpoint, 
     map: map, 
     labelContent: deviceID, 
     labelAnchor: new google.maps.Point(22, 0), 
     labelClass: "labelStyle", 
     html: "<ul><li>Speed: "+markersArray[i][3]+"</li></ul>", 
     address: markersArray[i][4] 
    }); 
    if (aMarker.address<="" || aMarker.address==null) { 
     geocoder.geocode({'latLng': gpoint}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       if (results[1]) { 
        aMarker.address=results[1].formatted_address; 
       } 
      } 
     }); 
    }  
    google.maps.event.addListener(aMarker, 'click', function() { 
     infowindow.setContent(this.html+" "+this.address); 
     infowindow.open(map, this); 
    }); 

.... 
} 

거의 모든 괜찮 : 마커 위치에 있고 그들 모두가 주소가 비어 있었고, 역 지오 코딩 어디 제외한 올바른 주소로 바로 정보창을 보여줍니다. 이 마지막 세트의 경우 마지막 마커 정보 창만 올바른 주소를 표시하고 다른 모든 정보 창 주소는 비어 있습니다. 아이디어가 있으십니까? 매우 감사합니다!

답변

0

이 문제를 해결하는 한 가지 방법은 역 지오 코딩을 수행하는 기능을 생성하는 것이며 정보창 및 마커에서 기능을 종료 할 수 있습니다.

역 지오 코딩 연산이 비동기 적이기 때문에 반환 된 주소는 마지막 마커를 제외하고는 사용할 수 없습니다.

+0

몇 줄의 코드를 알려주시겠습니까? 매우 thx! – user1569385

+0

당신이 쉽게 할 수 있도록 충분한 코드를 제공하지 않았습니다. 작동하는 맵에 대한 링크를 게시하고 코드 제안을 원하면 문제 (또는 jsfiddle)를 보여줍니다. – geocodezip