if (GBrowserIsCompatible()) { // this variable will collect the html which will eventualkly be placed in the side_bar var side_bar_html = ''; // arrays to hold copies of the markers and html used by the side_bar // because the function closure trick doesnt work there var gmarkers = []; var htmls = []; var i = 0; geocoder = new GClientGeocoder(); function showAddress(address) { if (geocoder) { geocoder.getLatLng( address, function(point) { if (!point) { document.getElementById('errors').style.padding = "1em"; var alertMsg = "

We were unable to find that address

"; } else { map.setCenter(point, 14); var marker = createMarker(point,address, address) map.addOverlay(marker); glat = marker.getPoint().lat(); glng = marker.getPoint().lng(); } } ); } } // A function to create the marker and set up the event window function createMarker(point,name,html) { var marker = new GMarker(point); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); }); // save the info we need to use later for the side_bar gmarkers[i] = marker; htmls[i] = html; // add a line to the side_bar html side_bar_html += '' + name + '<\/a>'; i++; return marker; } // This function picks up the click and opens the corresponding info window function myclick(i) { gmarkers[i].openInfoWindowHtml(htmls[i]); scroll(0,0); } // create the map var map = new GMap2(document.getElementById("map")); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(37.1392,-1.8505), 13); // Read the data from markers.xml var request = GXmlHttp.create(); request.open("GET", "markers.xml", true); request.onreadystatechange = function() { if (request.readyState == 4) { var xmlDoc = request.responseXML; // obtain the array of markers and loop through it var markers = xmlDoc.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { // obtain the attribues of each marker var lat = parseFloat(markers[i].getAttribute("lat")); var lng = parseFloat(markers[i].getAttribute("lng")); var point = new GLatLng(lat,lng); var html = markers[i].getAttribute("html"); var label = markers[i].getAttribute("label"); // create the marker var marker = createMarker(point,label,html); map.addOverlay(marker); } // put the assembled side_bar_html contents into the side_bar div document.getElementById("side_bar").innerHTML = side_bar_html; } } request.send(null); } else { alert("Sorry, the Google Maps API is not compatible with this browser"); }