How can I save Google Maps in iOS for offline use?
Is there a way to retain a map with as much detail as possible (street view, maps, directions, zoom levels) offline?
This question refers to the Apple maps program that shipped with iOS versions 1 to 5 that relied on google map tiles. Please open a new question for iOS 6 maps and the google map app that is also available on the App Store since 2012.
Solution 1:
Without jailbreaking, the iPhone DOES cache the last few map tiles on the view, at all the view zoom levels. I'm not sure how extensive this is, and because it's only a temporary cache the data is always a second away from deletion.
Without jailbreaking, you can download an application, there are lots of them, but my favorite is called MotionX GPS, which is on the App Store. It allows you to cache and save certain types of map tiles from a variety of map modes, including Terrain, roads, and more. I'm not sure if they're specifically Google Maps, but you can get some types of maps for sure.
After jailbreaking, which is both legal and easy, you can find a couple of 3rd party utilities to help you download map tiles to the device, but most of them require you to view the tiles in the app itself, not in the Maps application.
Solution 2:
Yes there is, but to do it properly requires a jailbreak (legal, voids warranty) and a possible breaking of the Google Maps TOS.
The cache can be used to an extent: The Google Maps application uses its cache offline, so tiles are visible and the map can be panned a bit (if it was panned while online and could fetch neighboring tiles). Directions are retained in the list view even if you can't follow them all in map view.
If you want more than this, it isn't built in by default. If you jailbreak, you could hack it to have a much larger cache that supports hundreds of MB of content including zoom levels, etc.
Setting it up would be a significant hack and against the Google Maps TOS. When online, you'd need to sniff your own packets off the iPhone, detect those involving Google Maps, and build a cache. When offline, you'll want to redirect all requests to Google Maps servers to a local HTTP server running on the iPhone, and then serve the tiles.
I've seen this done with a computer that was frequently offline, but not with an iPhone, but it should work just fine. You can also add custom tile layers this way if you want.
Solution 3:
Another method does not involve as much hacking. It seems some people have already solved this problem. You do need to jailbreak, and directions will not work, but browsing at different zoom levels should work, and GPS works too, so you at least know where you are.
See the following sites:
- http://iphonenodata.com/site/offline-maps/
- http://joesonic.com/blog/2008/04/14/google-maps-offline-for-iphone/
- http://iphonefreakz.com/2008/04/12/save-google-maps-with-maps-offline-for-later-viewing/