If you have a jailbreak’d iPhone, you can update the Maps.app database with tiles from OpenStreetMap. Mikel Maron figured out how to update the Maps sqlite DB and was able to import the street tiles for London.

My first idea was to modify the configuration or constant that the Maps App used for constructing Google Maps tile requests. Andrew helped with decompiling and pointers to other files, but we had no luck as yet. But looking at the app or at the GMM module in a hex editor, there appeared to be SQL inserts of tile pointers .. perhaps Maps was using a database to cache requested tiles. Searching through the filesystem found MapTiles.sqlitedb. That db has just two tables..

This is slick. You still use the built-in Maps interface, but you can add whatever you like to its database. Technically you could alter the database with any map tiles you like. One idea would be to make an alternate database file and fill it with topo-maps. Just swap the file out and you can use the Maps application when you’re backpacking.

OpenStreetMap on the iPhone – Link
OpenStreetMap – Link
SQLite Tutorial – Link