1

Could someone please help explain why I can't get this to work? I properly generates all the locations, however, it doesn't generate the info boxes. Why is this and can someone help me with it?

            var map = new GMap2(document.getElementById("map"));
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());
            map.setCenter(new GLatLng(47.6062, -122.3321), 8);
            var wa_locations = new Array(new Array("Seattle", "47.6062", "-122.3321", "###-###-####", "###-###-####"),
                                         new Array("Bellevue", "47.6104", "-122.2007", "###-###-####", "###-###-####"),
                                         new Array("Tacoma", "47.2529", "-122.4443", "###-###-####", "###-###-####"),
                                         new Array("Everett", "47.9790", "-122.2021", "###-###-####", "###-###-####"));
            for(var i = 0; i < wa_locations.length; i++)
            {
                var point = new GLatLng(wa_locations[i][1], wa_locations[i][2]);
                map.addOverlay(new GMarker(point)); 
                GEvent.addListener(point, "click", function()
                {
                    point.openInfoWindowHtml("<b>" + wa_locations[i][0] + "</b><br/>Sales: " + wa_locations[i][3] +  "<br/>Helpdesk: " + wa_locations[i][4] +  "");
                });                     
            }   

1 Answer 1

3

You are adding a listener to your point instead of to your marker. Further, from your comment it appears you have a JavaScript closure issue. You can avoid the listener and the closure by using bindInfoWindowHtml. Here's the last part tweaked to use the marker and bindInfoWindowHtml:

        for(var i = 0; i < wa_locations.length; i++)
        {
            var point = new GLatLng(wa_locations[i][1], wa_locations[i][2]);
            var marker = new GMarker(point);
            marker.bindInfoWindowHtml("<b>" + wa_locations[i][0] + "</b><br/>Sales: " + wa_locations[i][3] +  "<br/>Helpdesk: " + wa_locations[i][4] +  "");
            map.addOverlay(marker); 
        }   
Sign up to request clarification or add additional context in comments.

2 Comments

So now it kicks back an error when I click on these object: Message: 'wa_locations[...].0' is null or not an object
I tweaked my answer to remove the JavaScript closure and use bindInfoWindowHtml.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.