iOS7 MKTileOverlay缓存(保存缓存方法?)

时间:2013-12-25 09:33:51

标签: map ios7 mapkit mktileoverlay

我在地图应用程序上工作并考虑在iOS7中使用MKTileOverlay和MKTileOverlayRenderer的新功能。但我没有运气就四处搜索。

我找到了这个帖子,告诉我做子类化MKTileOverlay

Hiding mapview when mapoverlay is visible ios7

线程代码:

-(void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData *, NSError *))result
{
    NSData *tile = [self someHowGetTileImageIntoNSDataBaseOnPath:path];
    if (tile) {
        result(tile, nil);
    } else {
        result(nil, [NSError errorWithDomain: CUSTOM_ERROR_DOMAIN code: 1 userInfo:nil]);
    }
}

问题是: [self someHowGetTileImageIntoNSDataBaseOnPath:path]是加载tileData 但是如何将tileData保存到DB?

如果我能从数据库result(tile, nil);获取tileData足以让make叠加显示? 或者我需要在覆盖loadTileAtPath:result:

后做一些其他事情

谢谢

1 个答案:

答案 0 :(得分:0)

我很抱歉提出愚蠢的问题,现在我想我更了解这个MKTileOverlay。

-(void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData *, NSError *))result
{
    NSData *tile = [self someHowGetTileImageIntoNSDataBaseOnPath:path];
    if (tile) {
        result(tile, nil);
    } else {
        NSHTTPURLResponse *response = nil;
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[self URLForTilePath:path]];
        //Or you can using asynchronous request.
        NSData *tileData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
        [self saveCachedWithData:tileData];
        result(tileData, nil);
    }
}

可能四处寻找让我晕眩,无法理解它的图书馆, 再次抱歉,希望这可以帮助那些面临同样问题的人。