Download GPS City Guide from the Maemo Garage.
The documentation isn't wonderful, but here's what I've been able to figure out. You need at least the Maptile Loader package (download from a link on that page) to download maps. The docs say that Maptile Loader can handle OpenStreetMap maps and at least one other format, but I could not figure out how to discover what the other format is and how to configure it to try that out. In any case, OpenStreetMap appears to be pretty good, at least in the areas I've checked on.
You may or may not also need the accompanying Map Downloader program, which has a GUI that you can use to pre-download maps, if you will not be able to download them on the fly.
Start GPS City Guide. It asks if you want to use GPS (generally, say yes). It will start the GPS daemon, the same one that Maemo Mapper uses. Give it some time to find the satellites, after which GPS City Guide will display your latitude and longitude. During steady-state operation the map is redisplayed once a second and the various programs use quite a lot of CPU time (and run down the battery): cityguide uses typically 20%, gpsd uses 4%, and Xomap (X Windows server) is variable but typically 5% because it's working on showing cityguide maps.
The program starts out showing the map of Oulu, Finland (the author's point of physical presence). Click on the crosshair symbol (plus sign in a circle) to download and show the map for your current location. Adjust the zoom level as needed: (+) in a magnifying glass to see smaller streets, (-) in magnifying glass to see more of the city at once. Level 15 gives you about 1000 meters across the page, in which you could distinguish individual houses (if they were on the map, which they aren't). Level 2 puts a whole continent, 5e6 meters across, on one page.
Click on Find Places
and then turn to the Info
display tab,
and a list of nearby points of interest will be downloaded from
http://www.geonames.org/.
With GPS, the list can be updated on the fly.
The maps are saved in ~/Mydocs/.documents/Maps. This is in the main flash memory, and from about an hour writing this documentation it saved 2 megabytes of JPEG-compressed maps. This really should be transferred to the extended flash memory. To do this:
mkdir /media/mmc2/cityguide
cd MyDocs/.documents/Maps
tar cf - . | (cd /media/mmc2/cityguide ; tar xpf -)
mv Maps Maps.deleteme
ln -s /media/mmc2/cityguide Maps
(Check that everything works)
rm -r Maps.deleteme
It turns out that Maptile-Loader has a configuration file: ~/.maptile-loader/maptile-loader.conf
Suggestions for this software:
Only update the display when the target position changes by some threshold that depends on the map scale, e.g. 1% of the page width. This will save the battery if you're moving slowly. The threshold should be settable by the user. Possibly a bitblt could be used to save most of the work of rendering the map, requiring only the newly seen edges to be rendered. But I'm not familiar with what Xlib call would be used for this, or how it would fit into the GTK framework.
It needs a GPS suspension mode where you can view another part of the map, e.g. a destination.
The program should be very forgiving if there is no internet connectivity, as frequently happens away from 802.11 hotspots.
I never found out how to cause Wikipedia articles to appear about points of interest, but if this were to happen, I would suggest making it manual, e.g. click on the list row for the point of interest, or click on the item label on the map. You could seriously tangle up the operating system if this happened automatically when an internet connection was impossible. Also I found that Maemo Mapper and the browser thought they couldn't fit into memory at the same time, and I wonder if the same might be true with Citymap.
Show feedback to the user when maps and points of interest were being downloaded on the fly.
If you could be aware of when the machine's display was shut off, you could save a lot of power by not updating the display. But I don't know of any Dbus signal that tells when this happens.
The user should be encouraged to move the map cache out of his home directory in main flash. The actual directory should be a configuration option.
Here is apparently the original announcement and instructions for Maemo Mapper.
When started for the first time it takes quite a while to process its maps, but once it finishes that, if it lacks GPS input it uses only about 3% to 5% of CPU, but once GPS lock is made, in steady state it uses around 18% plus 4% Xomap and 4% gpsd.
In this program the zoom level numbers are lower (hit the + hardware button) to see smaller objects. For example, level 5 is 900 meters across the page, and it goes in powers of 2, so level 17 should give continental scale, 3.7e6 meters.
The maps and points of interest are saved in two big database files in ~/MyDocs/.documents/Maps (which is different from the arrangement described in the announcement linked above).