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)
| 归档时间: |
|
| 查看次数: |
4917 次 |
| 最近记录: |