I’d like to be able to implement this in an Android app, and I thought it was possible with the newest Google Maps API release, but I haven’t seen much discussion on the topic. Ideally, you’d be able to download/cache maps for a certain region for later offline use. Is it only possible to do this via the Google Maps 5 application and not the API without violating the ToS? I know OpenStreetMap and others allow this, but I believe Google Maps still offers superior mapping and the most widespread usage.
Thanks in advance.
Is it only possible to do this via the Google Maps 5 application and not the API without violating the ToS?
Correct, though AFAIK it’s not even physically possible with the API.
Downloading and caching the Google Maps assets is against the Google Maps API TOS.
Check the TOS section 8:
License Restrictions. Except as expressly permitted under the Terms, or unless you have received prior written authorization from Google (or, as applicable, from the provider of particular Content), the license granted to you in Section 7 is conditioned on your adherence to all of the restrictions in this Section 8. Under this Section 8, you must not (nor may you permit anyone else to):
8.2. copy, translate, modify, create a derivative work of, pre-fetch, cache, or publicly display any Content or any part thereof.
There are 3rd party Maps API-s which enable to do this, like Nutiteq maps SDK. Not with Google maps, as it is really against their ToS, but with Bing (with Enterprise license), OpenStreetMap (free) or other map sources.
Disclaimer: I’m developer of it.
You can try to use GoogleMapsRipper 2.0.4 from http://www.blueblackworks.com
GoogleMapsRipper is mapping software that allows you to download both satellite imagery, topographic and road maps from Google Maps, Bing Maps and OpenStreet Maps.
According this 10.1.3(b) you can do it temporally on mobile device.
This project implement it, I can’t provide particular example but you can dig in into it coz it open-source.