2012-04-27 4 views
1

У меня есть приложение, в котором мне нужны данные в пузырьках infowindow для автоматического обновления. Я проверил, и я вижу методы для перемещения маркеров, обновления цветов маркеров и т. П., Но ничего с непосредственным обновлением содержимого infowindow. Я извлекаю необходимое значение (например, building[i][7]) из скрытого элемента DOM, содержимое которого автоматически обновляется, и мне нужно, чтобы содержимое infowindow автоматически обновлялось рядом с ним.Google Maps Infowindow Auto Updating

Вот код, который я использую, чтобы нарисовать пузыри 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

Есть ли какое-то событие, которое будет срабатывать, чтобы вы знали, что данные изменились? Вы хотите сказать, что вы хотите, чтобы содержимое InfoWindow изменялось всякий раз, когда изменялись данные скрытого элемента DOM? –

+0

Отсутствие каких-либо событий, кроме изменения содержимого скрытого div (есть ли способ измерения этого как события?). Вы правы, что я хочу, чтобы содержимое InfoWindow менялось при изменении содержимого скрытого div. – InterfaceGuy

ответ

1

Существует не встроенный способ в JavaScript, чтобы получать уведомления, когда содержание DIV изменений, но я считаю, что jQuery.bind() функцию или новее (v1 JQuery .7) jQuery.on() функция обеспечивает способ реализовать то, что вы пытаетесь достичь.

+0

Спасибо. Я недавно узнал о '.delegate()', '.live()' и '.on()', и, хотя я уверен, что мог бы заставить их работать как-то, я решил пойти с другое решение, которое обновляет значение только для выбранного инфоиндуста и только при нажатии. Это решает ряд проблем. Я ценю ответ. Приветствия. – InterfaceGuy

+0

Как вы обновляете infowindow? можете обновить решение в своем ответе? Спасибо! – asdjkag

0

на Funciton вызов просто запустить

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

Как это отличается от того, что у меня уже есть? – InterfaceGuy