diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2017-02-17 12:18:49 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2017-02-20 14:36:27 +0100 |
commit | 6c0310209de9d6721d6fb9391c43df6cb9962e22 (patch) | |
tree | 1c67720cdc6b4fad7ebc637a8ae24ef3658e2f0a /platform/darwin/src/MGLOfflineStorage.mm | |
parent | 03a14ff0003e976a4ded70d284bc80adf54bc6c9 (diff) | |
download | qtlocation-mapboxgl-6c0310209de9d6721d6fb9391c43df6cb9962e22.tar.gz |
[macos,ios] expose callback for transforming URLs
Diffstat (limited to 'platform/darwin/src/MGLOfflineStorage.mm')
-rw-r--r-- | platform/darwin/src/MGLOfflineStorage.mm | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLOfflineStorage.mm b/platform/darwin/src/MGLOfflineStorage.mm index af0f592902..64f9111f14 100644 --- a/platform/darwin/src/MGLOfflineStorage.mm +++ b/platform/darwin/src/MGLOfflineStorage.mm @@ -42,9 +42,53 @@ NSString * const MGLOfflinePackMaximumCountUserInfoKey = MGLOfflinePackUserInfoK sharedOfflineStorage = [[self alloc] init]; [sharedOfflineStorage reloadPacks]; }); + return sharedOfflineStorage; } +- (void)setDelegate:(id<MGLOfflineStorageDelegate>)newValue { + _delegate = newValue; + if ([self.delegate respondsToSelector:@selector(offlineStorage:URLForResourceOfKind:withURL:)]) { + _mbglFileSource->setResourceTransform([offlineStorage = self](auto kind_, std::string&& url_) -> std::string { + NSURL* url = + [NSURL URLWithString:[[NSString alloc] initWithBytes:url_.data() + length:url_.length() + encoding:NSUTF8StringEncoding]]; + MGLResourceKind kind = MGLResourceKindUnknown; + switch (kind_) { + case mbgl::Resource::Kind::Tile: + kind = MGLResourceKindTile; + break; + case mbgl::Resource::Kind::Glyphs: + kind = MGLResourceKindGlyphs; + break; + case mbgl::Resource::Kind::Style: + kind = MGLResourceKindStyle; + break; + case mbgl::Resource::Kind::Source: + kind = MGLResourceKindSource; + break; + case mbgl::Resource::Kind::SpriteImage: + kind = MGLResourceKindSpriteImage; + break; + case mbgl::Resource::Kind::SpriteJSON: + kind = MGLResourceKindSpriteJSON; + break; + case mbgl::Resource::Kind::Unknown: + kind = MGLResourceKindUnknown; + break; + + } + url = [offlineStorage.delegate offlineStorage:offlineStorage + URLForResourceOfKind:kind + withURL:url]; + return url.absoluteString.UTF8String; + }); + } else { + _mbglFileSource->setResourceTransform(nullptr); + } +} + /** Returns the file URL to the offline cache, with the option to omit the private subdirectory for legacy (v3.2.0 - v3.2.3) migration purposes. |