Garmin 305 + Camera = Photos on Maps

I have a Garmin Forerunner 305 (which is a GPS running/biking workout helper) and a Canon 870IS (pocket digital camera). Since each device records the date/time with its information, you can later combine the latitude/longitude from the GPS with the photos from the camera to be able to see pretty exactly where your photos were taken (this is called "geotagging" your photos) and to create something like this:

View Larger Map
In this post, I'll go through the various steps necessary to create that result using my GPS logger and digital photo set-up but many of them are transferrable to other loggers and set ups (though at $169, last I checked, the 305 is a steal). I use Picasa, Google Maps and Google Earth because I think they are good products but you should know that I may not be unbiased because I also work at Google.  Other photo managers and hosting services can be used.  From the looks of it, Flickr does this very well too.

Taking Pictures
When you are ready to start taking pictures, turn on your GPS logger. For the Garmin, I also needed to "start" my "run" in order to record the GPS log.  You don't need to do anything special when you take pictures and when you are finished taking all the pictures you want to appear, turn off your GPS logger.  On the Garmin I also needed to "stop" my "run."
Downloading the GPS log
If you haven't already, you'll need to install the Garmin Forerunner 305 drivers and software (these links are for Windows).  Then open up the Garmin Training Center software (ug, relatively horrible and proprietary) and download your GPS log from the device.  Find the part of your "history" from when you took the pictures and note the date/time from the very first entry (you'll need it later). You should then be able to right-click on your log and "Export" it.  Unfortunately you can only export in the little-supported Garmin format, so choose a place where you'll be able to find it and export as .tcx.
Converting the GPS log
There are a number of ways to convert from TCX to GPX (a much more commonly supported format).  I used the online converter from gpsvisualizer. You could also download a perl script to do it locally. In either case, you need to save the resulting GPX file for the next step.
Synchronizing your pictures with your GPS log
To match my images to where they were taken, I use GPicSync.  It is a relatively simple program and works best if you have segregated the pictures you want to geotag into their own folder.  It will then ask for that folder's location and the location of the GPX formatted GPS log.  You'll also need to have GPicSync calculate the correct offset between the date/time recorded by your GPS logger and the date/time from your camera.  To do that, go to "Options|Local Time Correction" in GPicSync and enter in the time from the first enty in the GPS log and the relevant bits of time from the first picture (for example if the GPS log time start was 15:08 and you waited a bit before taking your first picture which was at 8:15, you'd enter 15:08 and 8:08).  Now you should be ready to geotag the photos by clicking "Synchronize."  If you leave the rest of the default settings intact each of your images should now have a lattitude/longitude in its EXIF geolocation field and you should get a backup folder with the photos as they were before you synchronized, a log in your photos folder and a KML file in your photos folder. After checking that everything went well, you can delete the backup folder and two extra files.
Creating a KMZ file in Picasa
Open the picture folder in Picasa (you may have to import them into Picasa if it is not already there).  You should see a small crosshairs in the bottom right of each photo and be able to see lattitude/longitude informaiton when you choose "Properties" when viewing a photo.  You should then select all of the photos that you want to include on your map and choose "Tools|Geotag|Export to Google Earth File."  This may take a little while, but should produce a KMZ file that contains thumbnails and smaller versions of each of your images.  The KMZ file can be opened directly in Google Earth and should show your pictures where they were taken.  For example, here's mine.
Uploading the KMZ file to the web and importing it to Google Maps
Upload your KMZ file to somewhere on the web that is accessible to the world.  I used Google Sites, but this can be anywhere.  Then sign in with your Google Account and go to Google Maps.  Click on the "My Maps" link and "Create New Map." Choose the map's title and publication settings and then click "Import" and provide the URL for your KMZ file on the web.  You should then have a Google Map window which includes your images.  Click "Save" and "Done" and you'll see what other people will see when they come to the map.
[NB: Though it seems based on the "Import" dialog box that you should be able to upload directly from your computer, I couldn't get that to work for me.]
Enjoy!