summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Leege <bleege@gmail.com>2015-04-23 18:15:01 -0500
committerBrad Leege <bleege@gmail.com>2015-04-23 18:15:01 -0500
commit7e145780ebbd5d35a74f263c51827ae2a37c4eb8 (patch)
tree65b802c19ce520c2c0b1a1c99ab976ba84cbb23b
parent19b5ef367ead43c9e156807ed86da065b0fd3ba2 (diff)
downloadqtlocation-mapboxgl-7e145780ebbd5d35a74f263c51827ae2a37c4eb8.tar.gz
#1225 - Initial conversion of Mapbox GL app to set access token in AppDelegate and exposing MGLMapView.initWithFrame to support it
-rw-r--r--include/mbgl/ios/MGLMapView.h5
-rw-r--r--include/mbgl/ios/MapboxGL.h3
-rw-r--r--ios/app/MBXAppDelegate.m16
-rw-r--r--ios/app/MBXViewController.mm15
-rw-r--r--platform/ios/MGLMapView.mm2
-rw-r--r--platform/ios/MapboxGL.m15
6 files changed, 38 insertions, 18 deletions
diff --git a/include/mbgl/ios/MGLMapView.h b/include/mbgl/ios/MGLMapView.h
index 8717b5e8a1..eb9a770dcb 100644
--- a/include/mbgl/ios/MGLMapView.h
+++ b/include/mbgl/ios/MGLMapView.h
@@ -20,6 +20,11 @@ IB_DESIGNABLE
/** @name Initializing a Map View */
+/** Initialize a map view with the default style, given frame, and access token set in MapboxGL singleton.
+* @param frame The frame with which to initialize the map view.
+* @return An initialized map view, or `nil` if the map view was unable to be initialized. */
+- (instancetype)initWithFrame:(CGRect)frame;
+
/** Initialize a map view with the default style and a given frame and access token.
* @param frame The frame with which to initialize the map view.
* @param accessToken A Mapbox API access token.
diff --git a/include/mbgl/ios/MapboxGL.h b/include/mbgl/ios/MapboxGL.h
index 84c3f45429..4e5ff09b26 100644
--- a/include/mbgl/ios/MapboxGL.h
+++ b/include/mbgl/ios/MapboxGL.h
@@ -5,6 +5,7 @@
@interface MapboxGL : NSObject
-+ (void) sharedInstanceWithAccessToken:(NSString *)token;
++ (id) sharedInstanceWithAccessToken:(NSString *)token;
++ (NSString *) getAccessToken;
@end \ No newline at end of file
diff --git a/ios/app/MBXAppDelegate.m b/ios/app/MBXAppDelegate.m
index f2ef69ec63..4d314483ae 100644
--- a/ios/app/MBXAppDelegate.m
+++ b/ios/app/MBXAppDelegate.m
@@ -1,11 +1,27 @@
#import "MBXAppDelegate.h"
#import "MBXViewController.h"
+#import <mbgl/ios/MapboxGL.h>
#import <mbgl/ios/MGLMapboxEvents.h>
@implementation MBXAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
+ // Set Access Token
+ NSString *accessToken = [[NSProcessInfo processInfo] environment][@"MAPBOX_ACCESS_TOKEN"];
+ if (accessToken) {
+ // Store to preferences so that we can launch the app later on without having to specify
+ // token.
+ [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:@"access_token"];
+ } else {
+ // Try to retrieve from preferences, maybe we've stored them there previously and can reuse
+ // the token.
+ accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"access_token"];
+ }
+ if ( ! accessToken) NSLog(@"No access token set. Mapbox vector tiles won't work.");
+
+ [MapboxGL sharedInstanceWithAccessToken:accessToken];
+
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[MBXViewController new]];
[self.window makeKeyAndVisible];
diff --git a/ios/app/MBXViewController.mm b/ios/app/MBXViewController.mm
index 13235beb07..394536b98b 100644
--- a/ios/app/MBXViewController.mm
+++ b/ios/app/MBXViewController.mm
@@ -52,20 +52,7 @@ mbgl::Settings_NSUserDefaults *settings = nullptr;
{
[super viewDidLoad];
- NSString *accessToken = [[NSProcessInfo processInfo] environment][@"MAPBOX_ACCESS_TOKEN"];
- if (accessToken) {
- // Store to preferences so that we can launch the app later on without having to specify
- // token.
- [[NSUserDefaults standardUserDefaults] setObject:accessToken forKey:@"access_token"];
- } else {
- // Try to retrieve from preferences, maybe we've stored them there previously and can reuse
- // the token.
- accessToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"access_token"];
- }
-
- if ( ! accessToken) NSLog(@"No access token set. Mapbox vector tiles won't work.");
-
- self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds accessToken:accessToken];
+ self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds];
self.mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.mapView.viewControllerForLayoutGuides = self;
self.mapView.showsUserLocation = YES;
diff --git a/platform/ios/MGLMapView.mm b/platform/ios/MGLMapView.mm
index 5f5e99b0eb..e48b3d82dc 100644
--- a/platform/ios/MGLMapView.mm
+++ b/platform/ios/MGLMapView.mm
@@ -25,6 +25,7 @@
#import "SMCalloutView.h"
#import "MGLMapboxEvents.h"
+#import "MapboxGL.h"
#import <algorithm>
@@ -122,6 +123,7 @@ mbgl::DefaultFileSource *mbglFileSource = nullptr;
if (self && [self commonInit])
{
self.styleURL = nil;
+ self.accessToken = [MapboxGL getAccessToken];
return self;
}
diff --git a/platform/ios/MapboxGL.m b/platform/ios/MapboxGL.m
index b1cb44cbc9..97ac8f1d5d 100644
--- a/platform/ios/MapboxGL.m
+++ b/platform/ios/MapboxGL.m
@@ -1,22 +1,24 @@
#import <Foundation/Foundation.h>
#import "MapboxGL.h"
+#import "NSProcessInfo+MGLAdditions.h"
@interface MapboxGL()
+@property (atomic) NSString *accessToken;
+
@end
-@property (atomic) NSString *accessToken;
@implementation MapboxGL
+static MapboxGL *_sharedManager;
// Can be called from any thread. Called implicitly from any
// public class convenience methods.
//
-+ (instancetype) sharedInstanceWithAccessToken:(NSString *)token {
++ (id) sharedInstanceWithAccessToken:(NSString *)token {
static dispatch_once_t onceToken;
- static MapboxGL *_sharedManager;
dispatch_once(&onceToken, ^{
if ( ! NSProcessInfo.processInfo.mgl_isInterfaceBuilderDesignablesAgent) {
void (^setupBlock)() = ^{
@@ -36,4 +38,11 @@
return _sharedManager;
}
++ (NSString *) getAccessToken {
+ if (_sharedManager) {
+ return _sharedManager.accessToken;
+ }
+ return nil;
+}
+
@end \ No newline at end of file