2012-04-27 86 views
1

我有一個應用程序,我需要在infowindow氣泡中的數據自動更新。我檢查了一下,我看到了移動標記,更新標記顏色等的方法,但沒有直接更新infowindow內容。我從內容自動更新的隱藏DOM元素中提取必要的值(例如building[i][7]),我需要infowindow的內容自動更新。谷歌地圖Infowindow自動更新

這是我用來繪製infowindow氣泡的代碼。

infowindow=new google.maps.InfoWindow(); 
for (i=0;i<buildings.length;i++){ 
    marker=new google.maps.Marker({ 
     position:new google.maps.LatLng(buildings[i][4],buildings[i][5]), 
     map:map, 
     shadow:shadow, 
     icon:greenIcon, 
     title:buildings[i][0]+" \n"+buildings[i][1], 
     zIndex:buildings[i][6] 
    }); 
} 
google.maps.event.addListener(marker,'click',(function(marker,i){ 
    return function(){ 
     infowindow.setContent(
      '<h2>'+buildings[i][0]+'</h2>'+ 
      '<p>'+buildings[i][2]+'</p>'+ 
      '<p>'+buildings[i][7]+'</p>' 
     );infowindow.open(map,marker); 
    } 
})(marker,i)); 

任何幫助,非常感謝!

+0

是否有某種事件會觸發,讓您知道數據已更改?你的意思是說,只要隱藏的DOM元素的數據發生變化,你就想讓InfoWindow內容發生變化? – 2012-04-27 20:14:22

+0

除了隱藏div的內容改變之外,沒有任何事件會觸發(是否有某種方式將其作爲事件進行度量?)。 無論何時隱藏div的內容發生更改,您都希望InfoWindow內容發生更改,這是正確的。 – InterfaceGuy 2012-04-27 21:40:43

回答

1

沒有在JavaScript中內置的方式通知時的DIV變化的內容,但我相信jQuery.bind()功能或更高版本(jQuery的V1 .7)jQuery.on()函數提供了一種方法來實現您正在嘗試實現的內容。

+0

謝謝。我最近學到了'.delegate()','.live()'和'.on()',雖然我確信我可以讓它們以某種方式工作,但我決定一起去不同的解決方案,它僅更新所選infowindow的值,並且僅在單擊它時才更新。這解決了一些問題。 我很感激答案。乾杯。 – InterfaceGuy 2012-05-01 15:25:55

+0

如何更新infowindow?可以在您的答案中更新您的解決方案?謝謝! – asdjkag 2014-09-08 07:21:06

0

上調用功能可按只要運行

infowindow.setContent(
     '<h2>'+buildings[i][0]+'</h2>'+ 
     '<p>'+buildings[i][2]+'</p>'+ 
     '<p>'+buildings[i][7]+'</p>' 
    );infowindow.open(map,marker); 
+0

這與我已有的有何不同? – InterfaceGuy 2012-04-27 18:36:21