Google Maps在几个月内提供下载特定地理区域以供以后离线使用的功能。我在我的应用程序中使用了Google Maps Android API,我发现在离线时,与真正的Google Maps应用程序相比,我无法在我的应用程序中完全放大街道水平,因此下载的数据可能没有使用。
是否有办法让我的应用程序使用它?
您需要创建自己的TileProvider
并在本地访问tile。查看此文档
这里有一些相关的线程可以帮助你:
- 使用android谷歌地图API v2作为离线瓷砖的查看器:是可能的吗?
- android应用程序使用谷歌地图api的离线模式
- TileProvider使用本地瓷砖
查看这个视频教程关于缓存和这个例子从GitHub。
你也可以使用osmdroid,它是Android的MapView类的替代品。它还包括一个模块化的瓷砖提供程序系统,支持许多在线和离线的瓷砖源,并支持内置的覆盖,用于绘制图标、跟踪位置和绘制形状。这是教程。
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
希望这对你有帮助!