summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ios/app/MBXViewController.mm3
-rw-r--r--platform/ios/MGLMapView.mm36
2 files changed, 33 insertions, 6 deletions
diff --git a/ios/app/MBXViewController.mm b/ios/app/MBXViewController.mm
index 0e0e73c4db..98b337f927 100644
--- a/ios/app/MBXViewController.mm
+++ b/ios/app/MBXViewController.mm
@@ -12,7 +12,8 @@ static NSArray *const kStyleNames = @[
@"Bright",
@"Basic",
@"Outdoors",
- @"Satellite"
+ @"Satellite",
+ @"Hybrid",
];
static NSString *const kStyleVersion = @"v7";
diff --git a/platform/ios/MGLMapView.mm b/platform/ios/MGLMapView.mm
index 45c96e7c3b..141d6cae1d 100644
--- a/platform/ios/MGLMapView.mm
+++ b/platform/ios/MGLMapView.mm
@@ -92,7 +92,9 @@ NSTimeInterval const MGLAnimationDuration = 0.3;
@end
-@implementation MGLMapView
+@implementation MGLMapView {
+ NSMutableArray *_bundledStyleNames;
+}
#pragma mark - Setup & Teardown -
@@ -938,16 +940,40 @@ mbgl::DefaultFileSource *mbglFileSource = nullptr;
- (NSArray *)bundledStyleNames
{
- NSString *stylesPath = [[MGLMapView resourceBundlePath] stringByAppendingString:@"/styles"];
-
- NSArray *styleNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:stylesPath error:nil];
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ if (!_bundledStyleNames) {
+ NSString *stylesPath = [[MGLMapView resourceBundlePath] stringByAppendingString:@"/styles"];
+
+ _bundledStyleNames = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:stylesPath error:nil] mutableCopy];
+
+ // Add hybrids
+ NSString *hybridStylePrefix = @"hybrid-";
+ NSString *satelliteStylePrefix = @"satellite-";
+ NSMutableArray *hybridStyleNames = [NSMutableArray array];
+ for (NSString *styleName in _bundledStyleNames) {
+ if ([styleName hasPrefix:satelliteStylePrefix]) {
+ [hybridStyleNames addObject:[hybridStylePrefix stringByAppendingString:[styleName substringFromIndex:[satelliteStylePrefix length]]]];
+ }
+ }
+ [_bundledStyleNames addObjectsFromArray:hybridStyleNames];
+ }
+ });
- return styleNames;
+ return _bundledStyleNames;
}
- (void)useBundledStyleNamed:(NSString *)styleName
{
+ NSString *hybridStylePrefix = @"hybrid-";
+ BOOL isHybrid = [styleName hasPrefix:hybridStylePrefix];
+ if (isHybrid) {
+ styleName = [@"satellite-" stringByAppendingString:[styleName substringFromIndex:[hybridStylePrefix length]]];
+ }
[self setStyleURL:[NSString stringWithFormat:@"styles/%@.json", styleName]];
+ if (isHybrid) {
+ [self setAppliedStyleClasses:@[@"contours", @"labels"]];
+ }
}
- (NSArray *)getStyleOrderedLayerNames