2012-09-05 8 views
9

Próbuję umożliwić zmianę treści wyświetlanej wewnątrz DIV, która jest zawartością infomatow. Byłem w stanie zmienić zawartość z Hello na YO w infowindow. Problem polega na tym, że po zamknięciu okna informacyjnego i ponownym otwarciu zaktualizowana zawartość powraca do oryginału. Poniżej jest mój kod:zmiana zawartości infowindow maps v3

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) { 
     if (event.type == google.maps.drawing.OverlayType.MARKER) { 
      //event.overlay.setTitle("Hello"); 
      var infowindow = new google.maps.InfoWindow({ 
       content: '<div id="content" onmouseover="updateContent()">Hello</div>', 
       maxWidth: 10 
      }); 
      google.maps.event.addListener(event.overlay, 'click', function() { 
       infowindow.open(map, event.overlay); 
      }); 
     } 
    }); 

    function updateContent() { 
     document.getElementById('content').innerHTML = "Yo"; 
    } 

Zasadniczo chcę, aby utworzyć okno domyślne informacji i pozwalają użytkownikowi na wejście swój własny tekst po umieszczać one Marke na stronie ...

Odpowiedz

5

trzeba ustawić zawartość poprzez metody setContentHTML

var infowindow ; 
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) { 
    if (event.type == google.maps.drawing.OverlayType.MARKER) { 
     //event.overlay.setTitle("Hello"); 
     infowindow = new google.maps.InfoWindow({ 
      content: '<div id="content" onmouseover="updateContent()">Hello</div>', 
      maxWidth: 10 
     }); 
     google.maps.event.addListener(event.overlay,'click',function() 
     infowindow.open(map,event.overlay); 
    }); 
}}); 

function updateContent(){ 
    infowindow.setContent("YO"); 
} 
+0

Po wypróbowaniu tego dostaję błąd, że setContentHTML nie jest metodą obiektu infoWindow Google (uważam, że jest to standardowy DHTML, ale obiekt Google infoWindow nie dziedziczy go). Aby osiągnąć cel PO, odłączyłem istniejące infoWindow, utworzyłem nowy obiekt infoWindow z nową zawartością, a następnie dołączałem go do istniejącego znacznika. –

+7

Możesz użyć funkcji "infowindow.setContent (...)", co działa dobrze dla mnie :) – ghedas

+2

Ładna identyfikacja –

12

Znalazłem powyższy akceptowane odpowiedź nie działa jak musiałem użyć setContent() w następujący sposób:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) { 
    if (event.type == google.maps.drawing.OverlayType.MARKER) { 
     //event.overlay.setTitle("Hello"); 
     var infowindow = new google.maps.InfoWindow({ 
      content: '<div id="content" onmouseover="updateContent()">Hello</div>', 
      maxWidth: 10 
     }); 
     google.maps.event.addListener(event.overlay, 'click', function() { 
      infowindow.open(map, event.overlay); 
     }); 
    } 
}); 
function updateContent() { 
    infowindow.setContent("Yo"); 
} 
Powiązane problemy