I’ve done enough hiking, mountain biking, and bicycle touring to be able to get a GPS signal on my iPhone 3G (OS 3.1.2), but no map showing my position due to a lack of a cellular connection. While an iPhone is no substitute for a “real” GPS, it would still be nice to have the maps stored offline for more “casual” outings. This procedure will only work on a jailbroken phone, if you don’t have one, or don’t even know what that means, don’t read any further!
The first step was to download and create the offline maps. This part uses something called the “Global Map Download Tool”. Here is the GMDL project page, including the latest download source, and detailed instructions for usage. You will get two files when done: “com.apple.Maps.plist” and a much larger “MapTiles.sqlitedb”. Put those two files in a folder, and give that folder a short name that will help you remember the map region. Repeat this as necessary, creating additional folders for as many different map regions as you desire. Using SSH, transfer the folders you have created under the “/private/var/mobile/media/maps” folder on your iPhone.
The second step is to install an app on the iPhone to switch between the offline maps. There’s an app called “Offline Maps”, version 2.1.0-4, available in Cydia and indicated as being compatible with OS 2.x and 3.x. This is wrong! It will crash every time you use it! However, there is a later version that is compatible, but it is not available in Cydia. Go to the iPhone Offline Map project page and you will see a link on the top to an Atlas Version 3.1.2-2 .deb file download. Download that file, SSH it to your phone, and from a mobile terminal run the command “dpkg -i MyProgram.deb” to unpackage it. It will then install on your phone, giving you an “Atlas” icon, and it will also show up in the list of installed packages in Cydia. (You can remove the .deb file after the install is complete.) In my case, the install didn’t complete the first time, uninstalling from Cydia and unpacking the file a second time did the trick. If you’ve made it this far, then you’ll be able to figure out how to use Atlas to switch between the map regions! 🙂
I hope I’ve done a good job of summarizing bits and pieces of the procedure scattered around the internet, whew!
Edit: I found this even better page after I wrote my post: http://www.ambot-ah.com/2010/04/06/viewing-google-maps-while-offline-on-your-iphone-or-ipod-touch/