Google Maps API - GMarker.openInfoWindowHtml() stopped working

15.2k Views Asked by At

I have a Google Map that suddenly stopped working for no apparent reason (I hadn't touched the code for months, but the wrapper code from our CMS may have changed without Corporate telling me).

http://www.democratandchronicle.com/section/builder

(sorry about the nasty HTML outside the map, most of that comes from our corporate parent...)

I've narrowed it down to this part of my drawMarker function:

GEvent.addListener(marker, 'click', function() {
  marker.openInfoWindowHtml(html, { maxWidth: 500 });
});

Of note:

  • alert(html); displays the correct HTML for the infowindow.
  • The HTML in the html variable is indeed valid.
  • The click event is firing (confirmed by alert('test'); within it)
  • Another map I host on the same site works fine, despite similar code.
  • No JavaScript errors in Firebug or IE that I can see.

I've been bashing my head against this for a while. What am I missing?

5

There are 5 best solutions below

2
ceejayoz On BEST ANSWER

This resolved itself. I suspect an update to the API broke something for a version or two.

0
Diodeus - James MacFarlane On

Try forcing JavaScript to make a new variable out of your HTML:

GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html+'', { maxWidth: 500 });
});
0
Daniel Beardsley On

I've had random problems with Google Maps API at times and more than once it has been fixed by going back one API version. i.e. if your google maps API javascript inclusion string is like this http://maps.google.com/maps?file=api&v=2.xd&key=XXXXX change the 2.x to something a few versions back (back when it was working) like 2.132 or something

0
Keith Fitzgerald On

try:

GEvent.addListener(marker, 'click', function() {
  this.openInfoWindowHtml(html, { maxWidth: 500 });
});

remember the scope of the object "marker" is outside your function

0
Stu On

I recently had this issue, event handlers definitely ran, etc. Turned out there were two instances of the Google Maps <script> tag on the page. Removing one fixed it.