Google Maps offers for a few months the feature to download a certain geographic region for later offline use. I use Google Maps Android API in my App and I see that while offline, in contrast to the real google maps app, I cannot zoom in to street level in my App fully, so the downloaded data is probably not used.
Is there a way for my app to make use of it?
You need to create your own TileProvider
and access tiles locally. Check this documentation.
Here are some related threads that may help you:
- Using the android Google Maps API v2 as a viewer of offline tiles: is it possible?
- Offline mode for android app using google maps api
- TileProvider using local tiles
Check this video tutorial about caching and this example from GitHub.
You can also use osmdroid which is a replacement for Android's MapView class. It also includes a modular tile provider system with support for numerous online and offline tile sources and overlay support with built-in overlays for plotting icons, tracking location, and drawing shapes. Here is the tutorial.
org.osmdroid.views.MapView mapView = (org.osmdroid.views.MapView) findViewById(R.id.map_view); //resolve the map view by id given in the layout
mapView.setTileSource(new OnlineTileSourceBase("Google Maps", ResourceProxy.string.unknown, 1, 20, 256, ".png", "http://mt3.google.com/vt/v=w2.97") {
@Override
public String getTileURLString(final MapTile aTile) {
/*
* GOOGLE MAPS URL looks like
* base url const x y zoom
* http://mt3.google.com/vt/v=w2.97&x=74327&y=50500&z=17
*/
return getBaseUrl() + "&x=" + aTile.getX() + "&y=" + aTile.getY() + "&z=" + aTile.getZoomLevel();
}
});
mapView.setUseDataConnection(false); //this actually makes the controller use only offline tiles
Hope this helps!
来源:https://stackoverflow.com/questions/38169034/use-google-maps-offline-maps-cache-in-google-maps-android-api