MapBox缓存无法正常工作

时间:2015-04-15 19:00:21

标签: ios objective-c mapbox

我试图在MapBox中缓存地图。当应用程序在线时,一切正常。正确调用了tileCacheDidFinishBackgroundCache。

然后,我重新启动应用程序离线。 RMMapView不是地图,而是仅显示白色。

我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[RMConfiguration sharedInstance] setAccessToken:@"pk......"];

    RMTileCache  * tileCache = [[RMTileCache alloc] initWithExpiryPeriod:0];
    [tileCache setBackgroundCacheDelegate:self];

    tileSource = [[RMMapboxSource alloc] initWithMapID:@"mirap.ld8dbe2c"];    
    mapView = [[RMMapView alloc] initWithFrame:viewMapView.bounds
                                     andTilesource:tileSource];

    [mapView.tileSource setCacheable:YES];
    [viewMapView addSubview:mapView];
}


-(void)viewDidAppear:(BOOL)animated {
    RMSphericalTrapezium rect = [mapView latitudeLongitudeBoundingBox];
    mapView.tileCache.backgroundCacheDelegate = self;
    [mapView.tileCache beginBackgroundCacheForTileSource:mapView.tileSource
                                               southWest:rect.southWest
                                               northEast:rect.northEast
                                                 minZoom:10.0
                                                 maxZoom:20.0];

}
- (void)tileCacheDidFinishBackgroundCache:(RMTileCache *)tileCache {

    NSLog(@"DONE!");

}

1 个答案:

答案 0 :(得分:2)

这就是你需要的:

mapbox-ios-sdk-offline/ViewController.swift#L38-L44

简而言之,使用地图ID初始化切片源是请求远程元数据URL的简写。

-[RMMapboxSource initWithMapID:]

  

此方法需要网络连接才能下载用于定义切片源的TileJSON。

相反,您还希望缓存tileSource.tileJSON并在离线时使用它来初始化磁贴源。

-[RMMapboxSource tileJSON]

  

可用于本地保存,以便在离线时实例化磁贴源。