summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--platform/darwin/src/MGLOfflineRegion.h4
-rw-r--r--platform/darwin/src/MGLTilePyramidOfflineRegion.mm16
2 files changed, 15 insertions, 5 deletions
diff --git a/platform/darwin/src/MGLOfflineRegion.h b/platform/darwin/src/MGLOfflineRegion.h
index a855ec5614..ad9731eb33 100644
--- a/platform/darwin/src/MGLOfflineRegion.h
+++ b/platform/darwin/src/MGLOfflineRegion.h
@@ -2,6 +2,8 @@
NS_ASSUME_NONNULL_BEGIN
+@class MGLTileSource;
+
/**
An object conforming to the `MGLOfflineRegion` protocol determines which
resources are required by an `MGLOfflinePack` object. At present, only
@@ -13,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
The number of tiles needed to load one of the style’s sources within the region.
*/
-@property (nonatomic, readonly) uint64_t tileCount;
+-(uint64_t)countTilesForTileSource:(MGLTileSource *)tileSource;
@end
diff --git a/platform/darwin/src/MGLTilePyramidOfflineRegion.mm b/platform/darwin/src/MGLTilePyramidOfflineRegion.mm
index 7ebaf801a1..eb6680a443 100644
--- a/platform/darwin/src/MGLTilePyramidOfflineRegion.mm
+++ b/platform/darwin/src/MGLTilePyramidOfflineRegion.mm
@@ -8,6 +8,7 @@
#import "MGLGeometry_Private.h"
#import "MGLStyle.h"
#import "MGLTileSource.h"
+#import "MGLVectorTileSource.h"
@interface MGLTilePyramidOfflineRegion () <MGLOfflineRegion_Private>
@@ -54,11 +55,18 @@
return self;
}
--(uint64_t)tileCount:(MGLTileSource *)tileSource {
+-(uint64_t)countTilesForTileSource:(MGLTileSource *)tileSource {
auto tilePyramidOfflineRegion = [self offlineRegionDefinition];
- // TODO: Figure out how to work with the MGLTileSource here
- // TODO: Pass tile type and size into the below method
- return tilePyramidOfflineRegion.tileCount(mbgl::style::SourceType::Vector, 512, {static_cast<unsigned char>(tilePyramidOfflineRegion.minZoom), static_cast<unsigned char>(tilePyramidOfflineRegion.maxZoom)});
+
+ mbgl::style::SourceType sourceType;
+
+ if ([tileSource isKindOfClass:[MGLVectorTileSource class]]) {
+ sourceType = mbgl::style::SourceType::Vector;
+ } else {
+ sourceType = mbgl::style::SourceType::Raster;
+ }
+
+ return tilePyramidOfflineRegion.tileCount(sourceType, 512, {static_cast<unsigned char>(tilePyramidOfflineRegion.minZoom), static_cast<unsigned char>(tilePyramidOfflineRegion.maxZoom)});
}
- (instancetype)initWithOfflineRegionDefinition:(const mbgl::OfflineRegionDefinition &)definition {