Newer
Older
Digital_Repository / Repositories / Maps / google_map.js
nstanger on 11 May 2006 1 KB - Split JavaScript off from HTML.
function load()
{
	var startTime = new Date();
	
	var timer = document.getElementById( "timer" );
	timer.innerHTML = "Loading...";
	
	var code = document.getElementById( "code" );
	
	if ( GBrowserIsCompatible() )
	{
		var map = new GMap2( document.getElementById( "map" ) );
		map.addControl( new GSmallMapControl() );
		map.addControl( new GMapTypeControl() );
		map.setCenter( new GLatLng(10, 0), 2 );
	
		// Creates a marker at the given point with the given label
		function createMarker( point, city, abstracts, downloads )
		{
			var marker = new GMarker( point );
			GEvent.addListener( marker, "click",
				function()
				{
					marker.openInfoWindowHtml( "<strong>" + city + "</strong> (" +
						abstracts + " abstracts, " +
						downloads + " downloads)" );
				} );
			return marker;
		}
	
		// Download the data in google_map_data.xml and load it on the map. The format we
		// expect is:
		// <markers>
		//   <marker lat="37.441" lng="-122.141"/>
		//   <marker lat="37.322" lng="-121.213"/>
		// </markers>
		GDownloadUrl( "google_map_data.xml",
			function( data, responseCode )
			{
				var xml = GXml.parse( data );
				var markers = xml.documentElement.getElementsByTagName( "marker" );
				for ( var i = 0; i < markers.length; i++ )
				{
					var point = new GLatLng( parseFloat( markers[i].getAttribute( "lat" ) ),
						parseFloat( markers[i].getAttribute( "lng" ) ) );
					map.addOverlay( createMarker( point, markers[i].getAttribute( "city" ),
						markers[i].getAttribute( "abs" ), markers[i].getAttribute( "dl" ) ) );
				}
				var endTime = new Date();
				timer.innerHTML = markers.length + " cities plotted in " + ( endTime - startTime ) + " ms.";
			} );
	}
}