2010-07-30 9 views
0

Google지도에 다음과 같은 문제가 있습니다.Infowindow in Googlemaps

게시자가 addOverlay()으로 게시 한 마커를 반환하는 createMarker 함수를 만들었습니다. 이것은 완벽하게 작동하지만 마커가 나타납니다 만 유일한 문제는 마커에 대한 클릭 이벤트입니다. '이 텍스트를 게시하고 싶습니다'라는 텍스트로 채워지는 infowindow가 필요합니다. 대신 html이라는 var로 채워집니다. 나는 내 코드 (var html = 'test';)의 시작 부분에 'html이 정의되지 않았다'라는 메시지를 받았다. 이것이 html var을 설정 한 이유이다. 모든 정보창에는 텍스트 'test'가 있습니다. updateInfoWindow()을 사용해 보았지만 작동하지 않습니다.이 문제에 익숙한 사람은 누구입니까? 전체 소스를 제공 할 수 있지만 createMarker 함수로 충분하다고 생각합니다.

function GM_load() { 
    map = new GMap2(document.getElementById("map")); 
    map.addControl(new GSmallMapControl()); 
    map.addControl(new GMapTypeControl()); 
    map.enableScrollWheelZoom(); 
    map.setMapType(G_HYBRID_MAP); 
    geocoder = new GClientGeocoder(); 
    GM_showItems(); 
}  


function GM_showItems() { 
    GDownloadUrl("modules/Googlemaps/ajax/getItems.php", function(data, responseCode) { 
     var xml = GXml.parse(data); 
     var markers = xml.documentElement.getElementsByTagName("marker"); 
     for (var i = 0; i < markers.length; i++) { 


      //start 
      var itemid = markers[i].getAttribute('id'); 
      var title = markers[i].getAttribute('name'); 
      var address = markers[i].getAttribute('address'); 
      var city = markers[i].getAttribute('city'); 
      var x = 0; 
      if (geocoder) { 

       geocoder.getLatLng(address + ' ' + city, 
        function(point) { 
         if (!point) { 
          alert(address + ' ' + city + " not found"); 
         } else { 
          x = x+1; 
          Marker = createMarker(point, x); 
          map.addOverlay(Marker); 
         } 
        } 
       ); 
      } 

     } 

    }); 
} 




function createMarker(latlng, number) { 
    var marker = new GMarker(latlng); 
    marker.value = number; 
    GEvent.addListener(marker,"click", function() { 
     map.openInfoWindowHtml(latlng,'i want this text to be published'); 
    }); 

    return marker; 
} 

답변

0

해결.

var html을 덮어 씁니다. 완벽하지는 않지만 작동합니다.