Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[ios, macos] Add tile template option to raster source
Browse files Browse the repository at this point in the history
  • Loading branch information
boundsj committed Sep 14, 2016
1 parent ef7fa32 commit 495e66a
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 7 deletions.
9 changes: 9 additions & 0 deletions platform/darwin/src/MGLRasterSource.h
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
#import "MGLSource.h"
#import "MGLTypes.h"

NS_ASSUME_NONNULL_BEGIN

@interface MGLRasterSource : MGLSource

@property (nonatomic, readonly, copy) NSURL *URL;
@property (nonatomic, readonly, assign) CGFloat tileSize;
@property (nonatomic, readonly, copy) NS_ARRAY_OF(NSString *) *tileURLTemplates;
@property (nonatomic, readonly) uint8_t minimumZoomLevel;
@property (nonatomic, readonly) uint8_t maximumZoomLevel;

- (instancetype)initWithSourceIdentifier:(NSString *)sourceIdentifier URL:(NSURL *)url tileSize:(CGFloat)tileSize;

- (instancetype)initWithSourceIdentifier:(NSString *)sourceIdentifier tileURLTemplates:(NS_ARRAY_OF(NSString *) *)tileURLTemplates minimumZoomLevel:(NSUInteger)minimumZoomLevel maximumZoomLevel:(NSUInteger)maximumZoomLevel;
@end

NS_ASSUME_NONNULL_END
40 changes: 35 additions & 5 deletions platform/darwin/src/MGLRasterSource.mm
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,48 @@

@implementation MGLRasterSource

- (instancetype)initWithSourceIdentifier:(NSString *)sourceIdentifier URL:(NSURL *)url tileSize:(CGFloat)tileSize {
- (instancetype)initWithSourceIdentifier:(NSString *)sourceIdentifier URL:(NSURL *)url tileSize:(CGFloat)tileSize
{
if (self = [super initWithSourceIdentifier:sourceIdentifier]) {
_URL = url;
_tileSize = tileSize;
}
return self;
}

- (std::unique_ptr<mbgl::style::Source>)mbglSource {
auto source = std::make_unique<mbgl::style::RasterSource>(self.sourceIdentifier.UTF8String,
self.URL.absoluteString.UTF8String,
uint16_t(self.tileSize));
- (instancetype)initWithSourceIdentifier:(NSString *)sourceIdentifier tileURLTemplates:(NS_ARRAY_OF(NSString *) *)tileURLTemplates minimumZoomLevel:(NSUInteger)minimumZoomLevel maximumZoomLevel:(NSUInteger)maximumZoomLevel
{
if (self = [super initWithSourceIdentifier:sourceIdentifier])
{
_tileURLTemplates = tileURLTemplates;
_minimumZoomLevel = minimumZoomLevel;
_maximumZoomLevel = maximumZoomLevel;
}
return self;
}

- (std::unique_ptr<mbgl::style::Source>)mbglSource
{
std::unique_ptr<mbgl::style::RasterSource> source;

if (self.URL)
{
source = std::make_unique<mbgl::style::RasterSource>(self.sourceIdentifier.UTF8String,
self.URL.absoluteString.UTF8String,
uint16_t(self.tileSize));
}
else
{
mbgl::Tileset tileSource;
tileSource.zoomRange = mbgl::Range<uint8_t>(self.minimumZoomLevel, self.maximumZoomLevel);
for (NSString *tileURLTemplate in self.tileURLTemplates)
{
tileSource.tiles.push_back(tileURLTemplate.UTF8String);
}
source = std::make_unique<mbgl::style::RasterSource>(self.sourceIdentifier.UTF8String, tileSource, uint16_t(self.tileSize));

}

return std::move(source);
}

Expand Down
4 changes: 2 additions & 2 deletions platform/darwin/src/MGLVectorSource.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly, copy) NSURL *URL;

@property (nonatomic, readonly, copy) NS_ARRAY_OF(NSString *) *tileURLTemplates;
@property (nonatomic, readonly) NSUInteger minimumZoomLevel;
@property (nonatomic, readonly) NSUInteger maximumZoomLevel;
@property (nonatomic, readonly) uint8_t minimumZoomLevel;
@property (nonatomic, readonly) uint8_t maximumZoomLevel;

/**
Initializes and returns a vector source from a remote url.
Expand Down

0 comments on commit 495e66a

Please sign in to comment.