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

Commit 973cd37

Browse files
committed
[ios] #5626 wip runtime styling
1 parent 1bc4f0e commit 973cd37

16 files changed

+231
-1
lines changed
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#import <Mapbox/Mapbox.h>
2+
3+
#import "MGLTypes.h"
4+
5+
@interface MGLFillStyleLayer : MGLStyleLayer
6+
7+
@property (nonatomic) MGLColor *fillColor;
8+
9+
@end
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#import "MGLFillStyleLayer.h"
2+
3+
#include "MGLStyleLayer_Private.hpp"
4+
5+
#include <mbgl/style/layers/fill_layer.hpp>
6+
7+
@interface MGLFillStyleLayer() {
8+
mbgl::style::FillLayer *fillLayer;
9+
}
10+
@end
11+
12+
@implementation MGLFillStyleLayer
13+
14+
- (void)setLayer:(mbgl::style::Layer *)layer
15+
{
16+
fillLayer = reinterpret_cast<mbgl::style::FillLayer *>(layer);
17+
}
18+
19+
- (void)setFillColor:(MGLColor *)fillColor
20+
{
21+
_fillColor = fillColor;
22+
fillLayer->setFillColor(MGLColorFromColor(fillColor));
23+
[self updateStyleAndClasses];
24+
}
25+
26+
@end

platform/darwin/src/MGLStyle.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
#import "MGLTypes.h"
44

5+
@class MGLFillStyleLayer;
6+
@class MGLStyleLayer;
7+
58
NS_ASSUME_NONNULL_BEGIN
69

710
/**
@@ -158,7 +161,9 @@ static const NSInteger MGLStyleDefaultVersion = 9;
158161
*/
159162
+ (NSURL *)satelliteStreetsStyleURLWithVersion:(NSInteger)version;
160163

161-
- (instancetype)init NS_UNAVAILABLE;
164+
//- (instancetype)init NS_UNAVAILABLE;
165+
166+
- (MGLStyleLayer *)layerWithIdentifier:(NSString *)identifier;
162167

163168
@end
164169

platform/darwin/src/MGLStyle.mm

+22
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
#import "MGLStyle.h"
22

3+
#import "MGLStyleLayer.h"
4+
#import "MGLFillStyleLayer.h"
5+
#import "MGLStyle_Private.hpp"
6+
#import "MGLStyleLayer_Private.hpp"
37
#import <mbgl/util/default_styles.hpp>
8+
#include <mbgl/style/layers/fill_layer.hpp>
9+
#include <mbgl/mbgl.hpp>
10+
11+
@interface MGLStyle()
12+
@property (nonatomic, weak) MGLMapView *mapView;
13+
@property (nonatomic) mbgl::Map *mbglMap;
14+
@end
415

516
@implementation MGLStyle
617

@@ -54,4 +65,15 @@ + (NSURL *)emeraldStyleURL {
5465
return MGLStyleURL_emerald;
5566
}
5667

68+
- (MGLStyleLayer *)layerWithIdentifier:(NSString *)identifier
69+
{
70+
mbgl::style::Layer *layer = self.mbglMap->getLayer(identifier.UTF8String);
71+
mbgl::style::FillLayer *fillLayer = reinterpret_cast<mbgl::style::FillLayer *>(layer);
72+
MGLFillStyleLayer *fillStyleLayer = [[MGLFillStyleLayer alloc] init];
73+
fillStyleLayer.layer = fillLayer;
74+
fillStyleLayer.mapView = self.mapView;
75+
fillStyleLayer.mbglMap = self.mbglMap;
76+
return fillStyleLayer;
77+
}
78+
5779
@end

platform/darwin/src/MGLStyleLayer.h

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#import <Foundation/Foundation.h>
2+
3+
@interface MGLStyleLayer : NSObject
4+
5+
@end

platform/darwin/src/MGLStyleLayer.mm

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#import "MGLStyleLayer.h"
2+
3+
#import "MGLTypes.h"
4+
#import "MGLStyleLayer_Private.hpp"
5+
#include <mbgl/mbgl.hpp>
6+
7+
#if TARGET_OS_IPHONE
8+
#import <UIKit/UIKit.h>
9+
#else
10+
#import <Cocoa/Cocoa.h>
11+
#endif
12+
13+
@interface MGLStyleLayer()
14+
@property (nonatomic, weak) MGLMapView *mapView;
15+
@property (nonatomic) mbgl::Map *mbglMap;
16+
@property (nonatomic) mbgl::style::Layer *layer;
17+
@end
18+
19+
@implementation MGLStyleLayer
20+
21+
mbgl::Color MGLColorFromColor(MGLColor *color)
22+
{
23+
if (!color)
24+
{
25+
return { 0, 0, 0, 0 };
26+
}
27+
CGFloat r, g, b, a;
28+
[color getRed:&r green:&g blue:&b alpha:&a];
29+
30+
return { (float)r, (float)g, (float)b, (float)a };
31+
}
32+
33+
- (void)updateStyleAndClasses
34+
{
35+
self.mbglMap->update(mbgl::Update::RecalculateStyle | mbgl::Update::Classes);
36+
}
37+
38+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#import "MGLStyleLayer.h"
2+
3+
#import "MGLTypes.h"
4+
5+
#include <mbgl/style/layer.hpp>
6+
#include <mbgl/mbgl.hpp>
7+
#include <mbgl/util/chrono.hpp>
8+
9+
@class MGLMapView;
10+
11+
@interface MGLStyleLayer (Private)
12+
@property (nonatomic, weak) MGLMapView *mapView;
13+
@property (nonatomic) mbgl::Map *mbglMap;
14+
@property (nonatomic) mbgl::style::Layer *layer;
15+
16+
mbgl::Color MGLColorFromColor(MGLColor *color);
17+
18+
- (void)updateStyleAndClasses;
19+
20+
@end
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#import "MGLStyle.h"
2+
3+
#import "MGLStyleLayer.h"
4+
#import "MGLFillStyleLayer.h"
5+
#import <mbgl/util/default_styles.hpp>
6+
#include <mbgl/mbgl.hpp>
7+
8+
@interface MGLStyle (Private)
9+
@property (nonatomic, weak) MGLMapView *mapView;
10+
@property (nonatomic) mbgl::Map *mbglMap;
11+
@end

platform/darwin/src/MGLTypes.h

+8
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@
1212
#define _Nonnull
1313
#endif
1414

15+
#if TARGET_OS_IPHONE
16+
#define MGLColor UIColor
17+
@class UIColor;
18+
#else
19+
#define MGLColor NSColor
20+
@class NSColor;
21+
#endif
22+
1523
NS_ASSUME_NONNULL_BEGIN
1624

1725
/** Indicates an error occurred in the Mapbox SDK. */

platform/ios/app/MBXViewController.m

+12
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#import "MBXCustomCalloutView.h"
55
#import "MBXOfflinePacksTableViewController.h"
66
#import "MBXAnnotationView.h"
7+
#import "MGLFillStyleLayer.h"
78

89
#import <Mapbox/Mapbox.h>
910

@@ -191,6 +192,7 @@ - (IBAction)showSettings:(__unused id)sender
191192
@"Start World Tour",
192193
@"Add Custom Callout Point",
193194
@"Remove Annotations",
195+
@"Runtime styling",
194196
nil];
195197

196198
if (self.debugLoggingEnabled)
@@ -335,6 +337,10 @@ - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSIn
335337
{
336338
[self.mapView removeAnnotations:self.mapView.annotations];
337339
}
340+
else if (buttonIndex == actionSheet.firstOtherButtonIndex + 13)
341+
{
342+
[self testRuntimeStyling];
343+
}
338344
else if (buttonIndex == actionSheet.numberOfButtons - 2 && self.debugLoggingEnabled)
339345
{
340346
NSString *fileContents = [NSString stringWithContentsOfFile:[self telemetryDebugLogfilePath] encoding:NSUTF8StringEncoding error:nil];
@@ -407,6 +413,12 @@ - (void)presentAnnotationWithCustomCallout
407413
[self.mapView showAnnotations:@[annotation] animated:YES];
408414
}
409415

416+
- (void)testRuntimeStyling
417+
{
418+
MGLFillStyleLayer *waterLayer = (MGLFillStyleLayer *)[self.mapView.style layerWithIdentifier:@"water"];
419+
waterLayer.fillColor = [UIColor redColor];
420+
}
421+
410422
- (IBAction)handleLongPress:(UILongPressGestureRecognizer *)longPress
411423
{
412424
if (longPress.state == UIGestureRecognizerStateBegan)

platform/ios/ios.xcodeproj/project.pbxproj

+36
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@
1212
35305D4A1D22AA6A0007D005 /* NSData+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35305D461D22AA450007D005 /* NSData+MGLAdditions.h */; settings = {ATTRIBUTES = (Private, ); }; };
1313
353794D01D22B3BD002C281C /* NSData+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35305D461D22AA450007D005 /* NSData+MGLAdditions.h */; settings = {ATTRIBUTES = (Private, ); }; };
1414
353D23961D0B0DFE002BE09D /* MGLAnnotationViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 353D23951D0B0DFE002BE09D /* MGLAnnotationViewTests.m */; };
15+
35D13AB71D3D15E300AFB4E0 /* MGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AB51D3D15E300AFB4E0 /* MGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
16+
35D13AB81D3D15E300AFB4E0 /* MGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AB51D3D15E300AFB4E0 /* MGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
17+
35D13AB91D3D15E300AFB4E0 /* MGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AB61D3D15E300AFB4E0 /* MGLStyleLayer.mm */; };
18+
35D13ABA1D3D15E300AFB4E0 /* MGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AB61D3D15E300AFB4E0 /* MGLStyleLayer.mm */; };
19+
35D13AC31D3D19DD00AFB4E0 /* MGLFillStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AC11D3D19DD00AFB4E0 /* MGLFillStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
20+
35D13AC41D3D19DD00AFB4E0 /* MGLFillStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AC11D3D19DD00AFB4E0 /* MGLFillStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
21+
35D13AC51D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AC21D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm */; };
22+
35D13AC61D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AC21D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm */; };
23+
35E0CFE61D3E501500188327 /* MGLStyle_Private.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35E0CFE51D3E501500188327 /* MGLStyle_Private.hpp */; };
24+
35E0CFE71D3E501500188327 /* MGLStyle_Private.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35E0CFE51D3E501500188327 /* MGLStyle_Private.hpp */; };
25+
35E0CFE91D3E53FE00188327 /* MGLStyle_Private.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35E0CFE81D3E53FE00188327 /* MGLStyle_Private.hpp */; };
26+
35E0CFEA1D3E53FE00188327 /* MGLStyle_Private.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35E0CFE81D3E53FE00188327 /* MGLStyle_Private.hpp */; };
1527
35E208A71D24210F00EC9A46 /* MGLNSDataAdditionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 35E208A61D24210F00EC9A46 /* MGLNSDataAdditionsTests.m */; };
1628
4018B1C71CDC287F00F666AF /* MGLAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */; };
1729
4018B1C81CDC287F00F666AF /* MGLAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */; };
@@ -335,6 +347,12 @@
335347
35305D461D22AA450007D005 /* NSData+MGLAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSData+MGLAdditions.h"; sourceTree = "<group>"; };
336348
35305D471D22AA450007D005 /* NSData+MGLAdditions.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSData+MGLAdditions.mm"; sourceTree = "<group>"; };
337349
353D23951D0B0DFE002BE09D /* MGLAnnotationViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLAnnotationViewTests.m; sourceTree = "<group>"; };
350+
35D13AB51D3D15E300AFB4E0 /* MGLStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleLayer.h; sourceTree = "<group>"; };
351+
35D13AB61D3D15E300AFB4E0 /* MGLStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLStyleLayer.mm; sourceTree = "<group>"; };
352+
35D13AC11D3D19DD00AFB4E0 /* MGLFillStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillStyleLayer.h; sourceTree = "<group>"; };
353+
35D13AC21D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillStyleLayer.mm; sourceTree = "<group>"; };
354+
35E0CFE51D3E501500188327 /* MGLStyle_Private.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = MGLStyle_Private.hpp; sourceTree = "<group>"; };
355+
35E0CFE81D3E53FE00188327 /* MGLStyle_Private.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = MGLStyle_Private.hpp; sourceTree = "<group>"; };
338356
35E208A61D24210F00EC9A46 /* MGLNSDataAdditionsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MGLNSDataAdditionsTests.m; sourceTree = "<group>"; };
339357
4018B1C31CDC277F00F666AF /* MGLAnnotationView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationView_Private.h; sourceTree = "<group>"; };
340358
4018B1C41CDC277F00F666AF /* MGLAnnotationView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLAnnotationView.mm; sourceTree = "<group>"; };
@@ -708,7 +726,13 @@
708726
DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */,
709727
DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */,
710728
DA8848111CBAFA6200AB86E3 /* MGLTypes.m */,
729+
35D13AC11D3D19DD00AFB4E0 /* MGLFillStyleLayer.h */,
730+
35D13AC21D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm */,
731+
35E0CFE51D3E501500188327 /* MGLStyle_Private.hpp */,
732+
35D13AB51D3D15E300AFB4E0 /* MGLStyleLayer.h */,
733+
35D13AB61D3D15E300AFB4E0 /* MGLStyleLayer.mm */,
711734
DA8848911CBB049300AB86E3 /* reachability */,
735+
35E0CFE81D3E53FE00188327 /* MGLStyle_Private.hpp */,
712736
);
713737
name = Foundation;
714738
path = ../darwin/src;
@@ -964,16 +988,19 @@
964988
isa = PBXHeadersBuildPhase;
965989
buildActionMask = 2147483647;
966990
files = (
991+
35D13AC31D3D19DD00AFB4E0 /* MGLFillStyleLayer.h in Headers */,
967992
DA88483A1CBAFB8500AB86E3 /* MGLAnnotationImage.h in Headers */,
968993
DA35A2BB1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */,
969994
DA8848861CBB033F00AB86E3 /* Fabric+FABKits.h in Headers */,
970995
DA8848201CBAFA6200AB86E3 /* MGLOfflinePack_Private.h in Headers */,
971996
DA8847FA1CBAFA5100AB86E3 /* MGLPolyline.h in Headers */,
972997
4018B1C91CDC288A00F666AF /* MGLAnnotationView_Private.h in Headers */,
973998
DA88482C1CBAFA6200AB86E3 /* NSBundle+MGLAdditions.h in Headers */,
999+
35D13AB71D3D15E300AFB4E0 /* MGLStyleLayer.h in Headers */,
9741000
DA88488E1CBB047F00AB86E3 /* reachability.h in Headers */,
9751001
DA8848231CBAFA6200AB86E3 /* MGLOfflineStorage_Private.h in Headers */,
9761002
DA88483B1CBAFB8500AB86E3 /* MGLCalloutView.h in Headers */,
1003+
35E0CFE61D3E501500188327 /* MGLStyle_Private.hpp in Headers */,
9771004
DA8848531CBAFB9800AB86E3 /* MGLCompactCalloutView.h in Headers */,
9781005
DA8847FB1CBAFA5100AB86E3 /* MGLShape.h in Headers */,
9791006
DA88485A1CBAFB9800AB86E3 /* MGLUserLocation_Private.h in Headers */,
@@ -1014,6 +1041,7 @@
10141041
DA8848851CBB033F00AB86E3 /* FABKitProtocol.h in Headers */,
10151042
DA88481B1CBAFA6200AB86E3 /* MGLGeometry_Private.h in Headers */,
10161043
DA88485C1CBAFB9800AB86E3 /* MGLUserLocationAnnotationView.h in Headers */,
1044+
35E0CFE91D3E53FE00188327 /* MGLStyle_Private.hpp in Headers */,
10171045
DA8848871CBB033F00AB86E3 /* Fabric.h in Headers */,
10181046
35305D4A1D22AA6A0007D005 /* NSData+MGLAdditions.h in Headers */,
10191047
DA8848841CBB033F00AB86E3 /* FABAttributes.h in Headers */,
@@ -1037,6 +1065,7 @@
10371065
DA35A29F1CC9E94C00E826B2 /* MGLCoordinateFormatter.h in Headers */,
10381066
DABFB8711CBE9A0F00D62B32 /* MGLMapView+MGLCustomStyleLayerAdditions.h in Headers */,
10391067
DABFB8611CBE99E500D62B32 /* MGLMultiPoint.h in Headers */,
1068+
35E0CFE71D3E501500188327 /* MGLStyle_Private.hpp in Headers */,
10401069
DABFB86D1CBE9A0F00D62B32 /* MGLAnnotationImage.h in Headers */,
10411070
DABFB8721CBE9A0F00D62B32 /* MGLUserLocation.h in Headers */,
10421071
DABFB8661CBE99E500D62B32 /* MGLPointAnnotation.h in Headers */,
@@ -1057,7 +1086,10 @@
10571086
4018B1CB1CDC288E00F666AF /* MGLAnnotationView.h in Headers */,
10581087
DABFB85F1CBE99E500D62B32 /* MGLGeometry.h in Headers */,
10591088
DABFB85D1CBE99E500D62B32 /* MGLAccountManager.h in Headers */,
1089+
35E0CFEA1D3E53FE00188327 /* MGLStyle_Private.hpp in Headers */,
1090+
35D13AB81D3D15E300AFB4E0 /* MGLStyleLayer.h in Headers */,
10601091
DA35A2BC1CCA9A6900E826B2 /* MGLClockDirectionFormatter.h in Headers */,
1092+
35D13AC41D3D19DD00AFB4E0 /* MGLFillStyleLayer.h in Headers */,
10611093
DABFB86E1CBE9A0F00D62B32 /* MGLCalloutView.h in Headers */,
10621094
DABFB8601CBE99E500D62B32 /* MGLMapCamera.h in Headers */,
10631095
DA737EE21D056A4E005BDA16 /* MGLMapViewDelegate.h in Headers */,
@@ -1397,6 +1429,7 @@
13971429
DA8848501CBAFB9800AB86E3 /* MGLAnnotationImage.m in Sources */,
13981430
DA8848281CBAFA6200AB86E3 /* MGLShape.m in Sources */,
13991431
DA35A2B31CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
1432+
35D13AB91D3D15E300AFB4E0 /* MGLStyleLayer.mm in Sources */,
14001433
DA35A2CB1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */,
14011434
DA8848321CBAFA6200AB86E3 /* NSString+MGLAdditions.m in Sources */,
14021435
DA35A2A11CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */,
@@ -1410,6 +1443,7 @@
14101443
DA8848261CBAFA6200AB86E3 /* MGLPolygon.mm in Sources */,
14111444
DA8848521CBAFB9800AB86E3 /* MGLAPIClient.m in Sources */,
14121445
DA8848301CBAFA6200AB86E3 /* NSProcessInfo+MGLAdditions.m in Sources */,
1446+
35D13AC51D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm in Sources */,
14131447
DA8848241CBAFA6200AB86E3 /* MGLOfflineStorage.mm in Sources */,
14141448
DA88482A1CBAFA6200AB86E3 /* MGLTilePyramidOfflineRegion.mm in Sources */,
14151449
DA88481A1CBAFA6200AB86E3 /* MGLAccountManager.m in Sources */,
@@ -1439,6 +1473,7 @@
14391473
DAA4E41D1CBB730400178DFB /* MGLGeometry.mm in Sources */,
14401474
DAA4E41F1CBB730400178DFB /* MGLMultiPoint.mm in Sources */,
14411475
DA35A2B41CCA141D00E826B2 /* MGLCompassDirectionFormatter.m in Sources */,
1476+
35D13ABA1D3D15E300AFB4E0 /* MGLStyleLayer.mm in Sources */,
14421477
DA35A2CC1CCAAAD200E826B2 /* NSValue+MGLAdditions.m in Sources */,
14431478
DAA4E4281CBB730400178DFB /* MGLTypes.m in Sources */,
14441479
DA35A2A21CC9E95F00E826B2 /* MGLCoordinateFormatter.m in Sources */,
@@ -1452,6 +1487,7 @@
14521487
DAA4E42C1CBB730400178DFB /* reachability.m in Sources */,
14531488
DAA4E4311CBB730400178DFB /* MGLMapboxEvents.m in Sources */,
14541489
DAA4E4231CBB730400178DFB /* MGLPolygon.mm in Sources */,
1490+
35D13AC61D3D19DD00AFB4E0 /* MGLFillStyleLayer.mm in Sources */,
14551491
DAA4E42A1CBB730400178DFB /* NSProcessInfo+MGLAdditions.m in Sources */,
14561492
DAA4E4211CBB730400178DFB /* MGLOfflineStorage.mm in Sources */,
14571493
DAA4E42F1CBB730400178DFB /* MGLCompactCalloutView.m in Sources */,

platform/ios/src/MGLMapView.h

+5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
1414
@class MGLPolyline;
1515
@class MGLPolygon;
1616
@class MGLShape;
17+
@class MGLStyle;
1718

1819
@protocol MGLMapViewDelegate;
1920
@protocol MGLAnnotation;
@@ -1086,6 +1087,10 @@ IB_DESIGNABLE
10861087
*/
10871088
- (void)removeOverlays:(NS_ARRAY_OF(id <MGLOverlay>) *)overlays;
10881089

1090+
#pragma mark - Runtime styling API
1091+
1092+
- (MGLStyle *)style;
1093+
10891094
#pragma mark Accessing the Underlying Map Data
10901095

10911096
/**

platform/ios/src/MGLMapView.mm

+9
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#import "MGLUserLocation_Private.h"
4040
#import "MGLAnnotationImage_Private.h"
4141
#import "MGLAnnotationView_Private.h"
42+
#import "MGLStyle_Private.hpp"
4243
#import "MGLMapboxEvents.h"
4344
#import "MGLCompactCalloutView.h"
4445
#import "MGLAnnotationContainerView.h"
@@ -600,6 +601,14 @@ - (UIImage *)compassImage
600601
return image;
601602
}
602603

604+
- (MGLStyle *)style
605+
{
606+
MGLStyle *style = [[MGLStyle alloc] init];
607+
style.mapView = self;
608+
style.mbglMap = _mbglMap;
609+
return style;
610+
}
611+
603612
- (void)reachabilityChanged:(NSNotification *)notification
604613
{
605614
MGLReachability *reachability = [notification object];

0 commit comments

Comments
 (0)