Two years ago I asked you "where are my readers?" Today, I ask you again, where are you?
Go sign my Google Maps Guest Map, would you, Dear Reader? It'll just take a moment, no registration required.
UPDATE: Read the Guest Map GuestBook directly, without the map.
I did a demo site with Google Maps and the GoogleMaps API recently for work. It sure is a nice clean API if you've got the data. I was able to integrate a nice map a day. I'm sure with a weeks work (which I don't have, it's just a demo) one could do some great stuff.
You just visit the Google Maps API page and sign up for an API key. You're limited to like a billion views, so don't go over! You can read the API docs as much as I can, so I won't bore you too much, but here's a little of what I did to jumpstart my demo.
(There's LOTS of ways to do this, BTW, this is just one. The sample may not be "cutting edge" but it's accessible.)
I was actually integrating the Timeline Control and its XML format with a Google Map...so, let's just say you have an existing XML format:
<data><event start="Feb 13 2007 09:00:00 GMT"end="Feb 16 2007 09:00:00 GMT"isDuration="true"title="Some Window of Time">Be sure to pay attention!</event> <event start="Feb 4 2007 10:04:00 GMT-0500"title="Chipotle $4.58"lat="45.483484" lng="-122.800026" >Food</event> <event start="Feb 7 2007 16:00:00 GMT-0500"title="Jack in the Box $9.44"lat="45.493112" lng="-122.805862">Food</event> </data>
<data><event start="Feb 13 2007 09:00:00 GMT"end="Feb 16 2007 09:00:00 GMT"isDuration="true"title="Some Window of Time">Be sure to pay attention!</event>
<event start="Feb 4 2007 10:04:00 GMT-0500"title="Chipotle $4.58"lat="45.483484" lng="-122.800026" >Food</event>
<event start="Feb 7 2007 16:00:00 GMT-0500"title="Jack in the Box $9.44"lat="45.493112" lng="-122.805862">Food</event>
</data>
I can just add geographic data "along for the ride," made especially easy because this data doesn't have a schema (although I could put it in another namespace).
You add this line to your page:
<script src=http://maps.google.com/maps?file=api&v=2&key=YOURAPIKEYtype="text/javascript"></script>
Then add a map somewhere:
<div id="map" style="height: 200px" ></div>
Then hook up your Load and Unloads:
<BODY onload="GLoad();" onresize="GUnload()">
Then add a little script like this to get your XML and yank the data you need. The interesting bits are in red.
<script type="text/javascript">
function GLoad() { if (GBrowserIsCompatible()) { var gmarkers = []; var htmls = []; var i = 0;
// 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 += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>'; i++; return marker; }
// This function picks up the click and opens the corresponding info window function myclick(i) { gmarkers[i].openInfoWindowHtml(htmls[i]); }
// create the map var map = new GMap2(document.getElementById("map")); map.addControl(new GSmallMapControl()); //SCOTT - EXAMPLES OF OTHER STUFF YOU CAN DO //map.addControl(new GLargeMapControl ()); //map.addControl(new GMapTypeControl()); // THE 10 is the ZOOM LEVEL map.setCenter(new GLatLng(45.519579, -123.004303), 10);
// Read the data from example.xml var request = GXmlHttp.create(); request.open("GET", "your.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("event"); for (var i = 0; i < markers.length; i++) { // obtain the attribues of each marker...don't bother without lat data var latVar = markers[i].getAttribute("lat") if(latVar != null) { var lat = parseFloat(latVar); var lng = parseFloat(markers[i].getAttribute("lng")); var point = new GLatLng(lat,lng); var html = markers[i].getAttribute("title"); // or whatever you like var label = markers[i].getAttribute("title"); // create the marker var marker = createMarker(point,label,html); map.addOverlay(marker); } }
// put the assembled side_bar_html contents into the side_bar div // A Sidebar is optional, you can just comment this out, // or not have a side_bar element. document.getElementById("side_bar").innerHTML = side_bar_html; }}request.send(null);} else {alert("Sorry, the Google Maps API is not compatible with this browser");}// This Javascript is based on code provided by the// Blackpool Community Church Javascript Team// http://www.commchurch.freeserve.co.uk/// http://www.econym.demon.co.uk/googlemaps/}//]]></script>
I can't show you the demo I did, because it's super-secret-financial stuff, but perhaps you'll think of a creative new way to include geographic data in the project you're currently working on!
Ads by The Lounge