使用MapBox Android SDK进行离线磁贴缓存

Yas*_*per 4 java android tile ios mapbox

我有一个使用iOS平铺缓存技术的iOS原型,如下所示(Objective-C代码):

RMTileCache  * tileCache = [[RMTileCache alloc] initWithExpiryPeriod:0]; 
[tileCache setBackgroundCacheDelegate:self]; 
RMMapboxSource * tileSource = [[RMMapboxSource alloc] initWithMapID:mapID]; 
[tileCache beginBackgroundCacheForTileSource:tileSource southWest:southWest northEast:northEasth minZoom:minZoom maxZoom:maxZoom];
Run Code Online (Sandbox Code Playgroud)

这基本上做的是下载地图,永久缓存切片并使应用程序可以在将来脱机运行.由于我们正在通过官方付费API,这当然不会违反任何法律限制.

现在我想在Android上实现同样的目标.我有在Android Studio中运行的SDK和一个使用Map ID的远程地图的工作项目,基本上这是(Android Eclipse布局XML):

<com.mapbox.mapboxsdk.views.MapView
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    mapid=“my_map_id" />
Run Code Online (Sandbox Code Playgroud)

这工作正常,但一旦缓存完成,解决方案必须完全脱机.我的问题是:MapBox SDK中是否有上述iOS源代码的Java等价物?我试图查看API,但找不到对tile缓存系统的可靠引用.经过一些痛苦的时间试图让它运行基于方法名称和代码文档,我放弃了.

我正在运行MapBox的最新GitHub发行版以及最新的Android Studio,所有内容都运行良好,但无法找到完成此任务的代码.我不一定需要API参考,几行代码显示它是如何完成的.

Bra*_*ege 10

从版本0.5.1开始,Mapbox Android SDK现在提供离线平铺缓存支持.它于2014年12月20日发布.以下是如何入门的基本示例:

OfflineMapDownloader offlineMapDownloader = OfflineMapDownloader.getOfflineMapDownloader(getActivity());
BoundingBox boundingBox = mapView.getBoundingBox();
CoordinateSpan span = new CoordinateSpan(boundingBox.getLatitudeSpan(), boundingBox.getLongitudeSpan());
CoordinateRegion coordinateRegion = new CoordinateRegion(mapView.getCenter(), span);
offlineMapDownloader.beginDownloadingMapID("MapboxMapID", coordinateRegion, (int) mapView.getZoomLevel(), (int) mapView.getZoomLevel());
Run Code Online (Sandbox Code Playgroud)

要加载以前保存的地图:

ArrayList<OfflineMapDatabase> offlineMapDatabases = offlineMapDownloader.getMutableOfflineMapDatabases();
OfflineMapDatabase db = offlineMapDatabases.get(0);
OfflineMapTileProvider tp = new OfflineMapTileProvider(getActivity(), db);
offlineMapOverlay = new TilesOverlay(tp);
mapView.addOverlay(offlineMapOverlay);
Run Code Online (Sandbox Code Playgroud)