summaryrefslogtreecommitdiff
path: root/platform/ios/benchmark
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/benchmark')
-rw-r--r--platform/ios/benchmark/MBXBenchAppDelegate.h7
-rw-r--r--platform/ios/benchmark/MBXBenchAppDelegate.m15
-rw-r--r--platform/ios/benchmark/MBXBenchViewController.h5
-rw-r--r--platform/ios/benchmark/MBXBenchViewController.mm152
-rw-r--r--platform/ios/benchmark/app-info.plist53
-rwxr-xr-xplatform/ios/benchmark/assets/glyphs/download.sh29
-rw-r--r--platform/ios/benchmark/assets/sprites/mapbox-streets.json2034
-rw-r--r--platform/ios/benchmark/assets/sprites/mapbox-streets.pngbin0 -> 81643 bytes
-rw-r--r--platform/ios/benchmark/assets/sprites/mapbox-streets@2x.json2034
-rw-r--r--platform/ios/benchmark/assets/sprites/mapbox-streets@2x.pngbin0 -> 192103 bytes
-rw-r--r--platform/ios/benchmark/assets/styles/streets-v8.json8935
-rwxr-xr-xplatform/ios/benchmark/assets/tiles/download.sh96
-rw-r--r--platform/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json1
-rw-r--r--platform/ios/benchmark/benchmark-ios.gypi61
-rw-r--r--platform/ios/benchmark/img/Icon-40.pngbin0 -> 1295 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-40@2x.pngbin0 -> 2971 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-40@3x.pngbin0 -> 5936 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-60.pngbin0 -> 2051 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-60@2x.pngbin0 -> 5936 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-60@3x.pngbin0 -> 11806 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-72.pngbin0 -> 2610 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-72@2x.pngbin0 -> 7894 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-76.pngbin0 -> 2841 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-76@2x.pngbin0 -> 8633 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-Small-50.pngbin0 -> 1676 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-Small-50@2x.pngbin0 -> 4490 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-Small.pngbin0 -> 1009 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-Small@2x.pngbin0 -> 2046 bytes
-rw-r--r--platform/ios/benchmark/img/Icon-Small@3x.pngbin0 -> 3371 bytes
-rw-r--r--platform/ios/benchmark/img/Icon.pngbin0 -> 2009 bytes
-rw-r--r--platform/ios/benchmark/img/Icon.svg6
-rw-r--r--platform/ios/benchmark/img/Icon@2x.pngbin0 -> 5436 bytes
-rw-r--r--platform/ios/benchmark/img/iTunesArtwork.pngbin0 -> 113442 bytes
-rw-r--r--platform/ios/benchmark/img/iTunesArtwork@2x.pngbin0 -> 399202 bytes
-rw-r--r--platform/ios/benchmark/locations.cpp18
-rw-r--r--platform/ios/benchmark/locations.hpp23
-rw-r--r--platform/ios/benchmark/main.m10
37 files changed, 13479 insertions, 0 deletions
diff --git a/platform/ios/benchmark/MBXBenchAppDelegate.h b/platform/ios/benchmark/MBXBenchAppDelegate.h
new file mode 100644
index 0000000000..b8f6c2e641
--- /dev/null
+++ b/platform/ios/benchmark/MBXBenchAppDelegate.h
@@ -0,0 +1,7 @@
+#import <UIKit/UIKit.h>
+
+@interface MBXBenchAppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end \ No newline at end of file
diff --git a/platform/ios/benchmark/MBXBenchAppDelegate.m b/platform/ios/benchmark/MBXBenchAppDelegate.m
new file mode 100644
index 0000000000..e8fbd88d28
--- /dev/null
+++ b/platform/ios/benchmark/MBXBenchAppDelegate.m
@@ -0,0 +1,15 @@
+#import "MBXBenchAppDelegate.h"
+#import "MBXBenchViewController.h"
+
+@implementation MBXBenchAppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+ self.window.rootViewController = [MBXBenchViewController new];
+ [self.window makeKeyAndVisible];
+
+ return YES;
+}
+
+@end
diff --git a/platform/ios/benchmark/MBXBenchViewController.h b/platform/ios/benchmark/MBXBenchViewController.h
new file mode 100644
index 0000000000..c4439be5ec
--- /dev/null
+++ b/platform/ios/benchmark/MBXBenchViewController.h
@@ -0,0 +1,5 @@
+#import <UIKit/UIKit.h>
+
+@interface MBXBenchViewController : UIViewController
+
+@end
diff --git a/platform/ios/benchmark/MBXBenchViewController.mm b/platform/ios/benchmark/MBXBenchViewController.mm
new file mode 100644
index 0000000000..44ca48f436
--- /dev/null
+++ b/platform/ios/benchmark/MBXBenchViewController.mm
@@ -0,0 +1,152 @@
+#import "MBXBenchViewController.h"
+
+#import <mbgl/ios/MGLMapView.h>
+
+#include "locations.hpp"
+
+#include <chrono>
+
+@interface MGLMapView (MBXBenchmarkAdditions)
+
+#pragma mark - Debugging
+
+/** Triggers another render pass even when it is not necessary. */
+- (void)setNeedsGLDisplay;
+
+/** Returns whether the map view is currently loading or processing any assets required to render the map */
+- (BOOL)isFullyLoaded;
+
+@end
+
+@interface MBXBenchViewController () <MGLMapViewDelegate>
+
+@property (nonatomic) MGLMapView *mapView;
+
+@end
+
+@implementation MBXBenchViewController
+
+#pragma mark - Setup
+
++ (void)initialize
+{
+ if (self == [MBXBenchViewController class])
+ {
+ [[NSUserDefaults standardUserDefaults] registerDefaults:@{
+ @"MBXUserTrackingMode": @(MGLUserTrackingModeNone),
+ @"MBXShowsUserLocation": @NO,
+ @"MBXDebug": @NO,
+ }];
+ }
+}
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+
+ NSURL* url = [[NSURL alloc] initWithString:@"mapbox://styles/mapbox/streets-v8.json"];
+ self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds styleURL:url];
+ self.mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+ self.mapView.delegate = self;
+ self.mapView.zoomEnabled = NO;
+ self.mapView.scrollEnabled = NO;
+ self.mapView.rotateEnabled = NO;
+ self.mapView.userInteractionEnabled = YES;
+
+ [self startBenchmarkIteration];
+
+ [self.view addSubview:self.mapView];
+
+}
+
+size_t idx = 0;
+enum class State { None, WaitingForAssets, WarmingUp, Benchmarking } state = State::None;
+int frames = 0;
+TimePoint started;
+std::vector<std::pair<std::string, double>> result;
+
+static const int warmupDuration = 20; // frames
+static const int benchmarkDuration = 200; // frames
+
+- (void)startBenchmarkIteration
+{
+ if (mbgl::bench::locations.size() > idx) {
+ const auto& location = mbgl::bench::locations[idx];
+ [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(location.latitude, location.longitude) zoomLevel:location.zoom animated:NO];
+ self.mapView.direction = location.bearing;
+ state = State::WaitingForAssets;
+ NSLog(@"Benchmarking \"%s\"", location.name.c_str());
+ NSLog(@"- Loading assets...");
+ } else {
+ // Do nothing. The benchmark is completed.
+ NSLog(@"Benchmark completed.");
+ NSLog(@"Result:");
+ size_t colWidth = 0;
+ for (const auto& row : result) {
+ colWidth = std::max(row.first.size(), colWidth);
+ }
+ for (const auto& row : result) {
+ NSLog(@"| %-*s | %4.1f fps |", int(colWidth), row.first.c_str(), row.second);
+ }
+ exit(0);
+ }
+}
+
+- (void)mapViewDidFinishRenderingFrame:(MGLMapView *)mapView fullyRendered:(__unused BOOL)fullyRendered
+{
+ if (state == State::Benchmarking)
+ {
+ frames++;
+ if (frames >= benchmarkDuration)
+ {
+ state = State::None;
+
+ // Report FPS
+ const auto duration = Microseconds(Clock::now() - started);
+ const auto fps = double(frames * 1e6) / duration;
+ result.emplace_back(mbgl::bench::locations[idx].name, fps);
+ NSLog(@"- FPS: %.1f", fps);
+
+ // Start benchmarking the next location.
+ idx++;
+ [self startBenchmarkIteration];
+ } else {
+ [mapView setNeedsGLDisplay];
+ }
+ return;
+ }
+
+ else if (state == State::WarmingUp)
+ {
+ frames++;
+ if (frames >= warmupDuration)
+ {
+ frames = 0;
+ state = State::Benchmarking;
+ started = Clock::now();
+ NSLog(@"- Benchmarking for %d frames...", benchmarkDuration);
+ }
+ [mapView setNeedsGLDisplay];
+ return;
+ }
+
+ else if (state == State::WaitingForAssets)
+ {
+ if ([mapView isFullyLoaded])
+ {
+ // Start the benchmarking timer.
+ state = State::WarmingUp;
+ [self.mapView emptyMemoryCache];
+ NSLog(@"- Warming up for %d frames...", warmupDuration);
+ [mapView setNeedsGLDisplay];
+ }
+ return;
+ }
+}
+
+- (NSUInteger)supportedInterfaceOrientations
+{
+ return UIInterfaceOrientationMaskLandscape;
+}
+
+@end
diff --git a/platform/ios/benchmark/app-info.plist b/platform/ios/benchmark/app-info.plist
new file mode 100644
index 0000000000..9d0aad09e1
--- /dev/null
+++ b/platform/ios/benchmark/app-info.plist
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleDisplayName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.mapbox.GL.benchmark</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>0.0.2</string>
+ <key>CFBundleSignature</key>
+ <string>MBGL</string>
+ <key>CFBundleVersion</key>
+ <string>0.0.3</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>NSHumanReadableCopyright</key>
+ <string>© 2015–2016 Mapbox</string>
+ <key>UIApplicationExitsOnSuspend</key>
+ <true/>
+ <key>UILaunchStoryboardName</key>
+ <string>Default</string>
+ <key>UIRequiredDeviceCapabilities</key>
+ <array>
+ <string>armv7</string>
+ </array>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>MGLMapboxMetricsEnabledSettingShownInApp</key>
+ <true/>
+</dict>
+</plist>
diff --git a/platform/ios/benchmark/assets/glyphs/download.sh b/platform/ios/benchmark/assets/glyphs/download.sh
new file mode 100755
index 0000000000..01ca5c63c7
--- /dev/null
+++ b/platform/ios/benchmark/assets/glyphs/download.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+set -u
+
+LIST=(
+ "DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/0-255.pbf"
+ "DIN%20Offc%20Pro%20Medium%2cArial%20Unicode%20MS%20Regular/0-255.pbf"
+ "DIN%20Offc%20Pro%20Bold%2cArial%20Unicode%20MS%20Bold/0-255.pbf"
+ "DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/256-511.pbf"
+ "DIN%20Offc%20Pro%20Regular%2cArial%20Unicode%20MS%20Regular/8192-8447.pbf"
+ "DIN%20Offc%20Pro%20Medium%2cArial%20Unicode%20MS%20Regular/8192-8447.pbf"
+ "DIN%20Offc%20Pro%20Italic%2cArial%20Unicode%20MS%20Regular/0-255.pbf"
+
+)
+
+# from https://gist.github.com/cdown/1163649
+urldecode() {
+ local url_encoded="${1//+/ }"
+ printf '%b' "${url_encoded//%/\x}"
+}
+
+for i in ${LIST[@]} ; do
+ OUTPUT=`urldecode "$i"`
+ if [ ! -f "${OUTPUT}" ] ; then
+ mkdir -p "`dirname "${OUTPUT}"`"
+ echo "Downloading glyph '${OUTPUT}'"
+ curl -# "https://api.tiles.mapbox.com/v4/fontstack/${i}?access_token=${MAPBOX_ACCESS_TOKEN}" | gunzip > "${OUTPUT}"
+ fi
+done
diff --git a/platform/ios/benchmark/assets/sprites/mapbox-streets.json b/platform/ios/benchmark/assets/sprites/mapbox-streets.json
new file mode 100644
index 0000000000..488bf335de
--- /dev/null
+++ b/platform/ios/benchmark/assets/sprites/mapbox-streets.json
@@ -0,0 +1,2034 @@
+{
+ "secondary_marker": {
+ "x": 0,
+ "y": 0,
+ "width": 20,
+ "height": 50,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default_marker": {
+ "x": 22,
+ "y": 0,
+ "width": 20,
+ "height": 50,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-alternate-1-large": {
+ "x": 44,
+ "y": 0,
+ "width": 21,
+ "height": 37,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-business-1-large": {
+ "x": 67,
+ "y": 0,
+ "width": 27,
+ "height": 37,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-business-2-large": {
+ "x": 0,
+ "y": 52,
+ "width": 27,
+ "height": 37,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-alternate-2-large": {
+ "x": 29,
+ "y": 52,
+ "width": 27,
+ "height": 37,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-truck-1-large": {
+ "x": 58,
+ "y": 52,
+ "width": 23,
+ "height": 35,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-truck-2-large": {
+ "x": 96,
+ "y": 0,
+ "width": 27,
+ "height": 35,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "marsh-32": {
+ "x": 0,
+ "y": 91,
+ "width": 32,
+ "height": 32,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-alternate-1-small": {
+ "x": 96,
+ "y": 37,
+ "width": 17,
+ "height": 31,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-business-1-small": {
+ "x": 34,
+ "y": 91,
+ "width": 17,
+ "height": 31,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-alternate-2-small": {
+ "x": 53,
+ "y": 91,
+ "width": 21,
+ "height": 31,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-truck-2-small": {
+ "x": 76,
+ "y": 91,
+ "width": 21,
+ "height": 31,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-business-2-small": {
+ "x": 99,
+ "y": 91,
+ "width": 21,
+ "height": 31,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-truck-1-small": {
+ "x": 125,
+ "y": 0,
+ "width": 17,
+ "height": 31,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-duplex-4-large": {
+ "x": 144,
+ "y": 0,
+ "width": 40,
+ "height": 29,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-duplex-3-large": {
+ "x": 144,
+ "y": 31,
+ "width": 35,
+ "height": 29,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-2-large": {
+ "x": 144,
+ "y": 62,
+ "width": 29,
+ "height": 29,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-duplex-5-large": {
+ "x": 0,
+ "y": 125,
+ "width": 43,
+ "height": 29,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-3-large": {
+ "x": 144,
+ "y": 93,
+ "width": 35,
+ "height": 29,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-1-large": {
+ "x": 45,
+ "y": 125,
+ "width": 25,
+ "height": 29,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-business-3-large": {
+ "x": 72,
+ "y": 125,
+ "width": 35,
+ "height": 28,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-business-2-large": {
+ "x": 109,
+ "y": 125,
+ "width": 29,
+ "height": 28,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-business-1-large": {
+ "x": 140,
+ "y": 125,
+ "width": 25,
+ "height": 28,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-federal-2-large": {
+ "x": 0,
+ "y": 156,
+ "width": 25,
+ "height": 26,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-federal-4-large": {
+ "x": 27,
+ "y": 156,
+ "width": 37,
+ "height": 26,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-federal-1-large": {
+ "x": 66,
+ "y": 156,
+ "width": 20,
+ "height": 26,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-federal-3-large": {
+ "x": 88,
+ "y": 156,
+ "width": 30,
+ "height": 26,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-state-3-large": {
+ "x": 120,
+ "y": 156,
+ "width": 31,
+ "height": 25,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-state-4-large": {
+ "x": 186,
+ "y": 0,
+ "width": 36,
+ "height": 25,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-3-small": {
+ "x": 186,
+ "y": 27,
+ "width": 30,
+ "height": 25,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-2-small": {
+ "x": 186,
+ "y": 54,
+ "width": 25,
+ "height": 25,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-1-small": {
+ "x": 186,
+ "y": 81,
+ "width": 21,
+ "height": 25,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-duplex-5-small": {
+ "x": 186,
+ "y": 108,
+ "width": 36,
+ "height": 25,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-duplex-4-small": {
+ "x": 186,
+ "y": 135,
+ "width": 34,
+ "height": 25,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-duplex-3-small": {
+ "x": 153,
+ "y": 156,
+ "width": 30,
+ "height": 25,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-business-2-small": {
+ "x": 0,
+ "y": 184,
+ "width": 25,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-business-3-small": {
+ "x": 27,
+ "y": 184,
+ "width": 30,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-interstate-business-1-small": {
+ "x": 59,
+ "y": 184,
+ "width": 21,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-state-1-large": {
+ "x": 82,
+ "y": 184,
+ "width": 20,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-state-2-large": {
+ "x": 104,
+ "y": 184,
+ "width": 25,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "post-15": {
+ "x": 131,
+ "y": 184,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "prison-15": {
+ "x": 156,
+ "y": 184,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-christian-15": {
+ "x": 181,
+ "y": 184,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-jewish-15": {
+ "x": 224,
+ "y": 0,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-muslim-15": {
+ "x": 224,
+ "y": 25,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rocket-15": {
+ "x": 224,
+ "y": 50,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "shop-15": {
+ "x": 224,
+ "y": 75,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "star-15": {
+ "x": 224,
+ "y": 100,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "suitcase-15": {
+ "x": 224,
+ "y": 125,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "swimming-15": {
+ "x": 224,
+ "y": 150,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "theatre-15": {
+ "x": 224,
+ "y": 175,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "town-hall-15": {
+ "x": 0,
+ "y": 210,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-15": {
+ "x": 25,
+ "y": 210,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-stroked-15": {
+ "x": 50,
+ "y": 210,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dentist-15": {
+ "x": 75,
+ "y": 210,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hospital-15": {
+ "x": 100,
+ "y": 210,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "pharmacy-15": {
+ "x": 125,
+ "y": 210,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "america-football-15": {
+ "x": 150,
+ "y": 210,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "baseball-15": {
+ "x": 175,
+ "y": 210,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "basketball-15": {
+ "x": 200,
+ "y": 210,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "campsite-15": {
+ "x": 249,
+ "y": 0,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cemetery-15": {
+ "x": 249,
+ "y": 25,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dog-park-15": {
+ "x": 249,
+ "y": 50,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "beer-15": {
+ "x": 249,
+ "y": 75,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "park-15": {
+ "x": 249,
+ "y": 100,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bar-15": {
+ "x": 249,
+ "y": 125,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "playground-15": {
+ "x": 249,
+ "y": 150,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "zoo-15": {
+ "x": 249,
+ "y": 175,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "college-15": {
+ "x": 249,
+ "y": 200,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "ferry-15": {
+ "x": 0,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "school-15": {
+ "x": 25,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-metro-15": {
+ "x": 50,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cafe-15": {
+ "x": 75,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bus-15": {
+ "x": 100,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airport-15": {
+ "x": 125,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airfield-15": {
+ "x": 150,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fast-food-15": {
+ "x": 175,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-light-15": {
+ "x": 200,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-15": {
+ "x": 225,
+ "y": 235,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "heliport-15": {
+ "x": 274,
+ "y": 0,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "restaurant-15": {
+ "x": 274,
+ "y": 25,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "alcohol-shop-15": {
+ "x": 274,
+ "y": 50,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "art-gallery-15": {
+ "x": 274,
+ "y": 75,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bakery-15": {
+ "x": 274,
+ "y": 100,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bank-15": {
+ "x": 274,
+ "y": 125,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bicycle-15": {
+ "x": 274,
+ "y": 150,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "car-15": {
+ "x": 274,
+ "y": 175,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cinema-15": {
+ "x": 274,
+ "y": 200,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-15": {
+ "x": 274,
+ "y": 225,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-stroked-15": {
+ "x": 0,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "clothing-store-15": {
+ "x": 25,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "embassy-15": {
+ "x": 50,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fire-station-15": {
+ "x": 75,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fuel-15": {
+ "x": 100,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "garden-15": {
+ "x": 125,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "grocery-15": {
+ "x": 150,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hairdresser-15": {
+ "x": 175,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "harbor-15": {
+ "x": 200,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "ice-cream-15": {
+ "x": 225,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "laundry-15": {
+ "x": 250,
+ "y": 260,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "library-15": {
+ "x": 299,
+ "y": 0,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "lodging-15": {
+ "x": 299,
+ "y": 25,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "marker-15": {
+ "x": 299,
+ "y": 50,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "monument-15": {
+ "x": 299,
+ "y": 75,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "museum-15": {
+ "x": 299,
+ "y": 100,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "music-15": {
+ "x": 299,
+ "y": 125,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "place-of-worship-15": {
+ "x": 299,
+ "y": 150,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "police-15": {
+ "x": 299,
+ "y": 175,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "golf-15": {
+ "x": 299,
+ "y": 200,
+ "width": 23,
+ "height": 23,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-federal-4-small": {
+ "x": 0,
+ "y": 285,
+ "width": 31,
+ "height": 22,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-federal-1-small": {
+ "x": 299,
+ "y": 225,
+ "width": 17,
+ "height": 22,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-duplex-3-large": {
+ "x": 33,
+ "y": 285,
+ "width": 32,
+ "height": 22,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-federal-2-small": {
+ "x": 299,
+ "y": 249,
+ "width": 21,
+ "height": 22,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-duplex-4-large": {
+ "x": 67,
+ "y": 285,
+ "width": 34,
+ "height": 22,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-federal-3-small": {
+ "x": 103,
+ "y": 285,
+ "width": 25,
+ "height": 22,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-duplex-5-large": {
+ "x": 130,
+ "y": 285,
+ "width": 37,
+ "height": 22,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "washington-metro-11": {
+ "x": 225,
+ "y": 210,
+ "width": 21,
+ "height": 21,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-3-large": {
+ "x": 169,
+ "y": 285,
+ "width": 30,
+ "height": 21,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-2-large": {
+ "x": 201,
+ "y": 285,
+ "width": 27,
+ "height": 21,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "light-11": {
+ "x": 250,
+ "y": 235,
+ "width": 21,
+ "height": 21,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "subway-11": {
+ "x": 275,
+ "y": 260,
+ "width": 21,
+ "height": 21,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-1-large": {
+ "x": 230,
+ "y": 285,
+ "width": 20,
+ "height": 21,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "u-bahn-11": {
+ "x": 252,
+ "y": 285,
+ "width": 21,
+ "height": 21,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-state-1-small": {
+ "x": 186,
+ "y": 162,
+ "width": 17,
+ "height": 20,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-state-4-small": {
+ "x": 275,
+ "y": 285,
+ "width": 29,
+ "height": 20,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mx-state-3-small": {
+ "x": 324,
+ "y": 0,
+ "width": 25,
+ "height": 20,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle.sdf": {
+ "x": 324,
+ "y": 22,
+ "width": 19,
+ "height": 20,
+ "pixelRatio": 1,
+ "sdf": true
+ },
+ "mx-state-2-small": {
+ "x": 324,
+ "y": 44,
+ "width": 21,
+ "height": 20,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "zoo-11": {
+ "x": 324,
+ "y": 66,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "beer-11": {
+ "x": 324,
+ "y": 87,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dlr-11": {
+ "x": 324,
+ "y": 108,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dlr.london-overground.london-underground.national-rail-11": {
+ "x": 0,
+ "y": 309,
+ "width": 75,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dlr.london-underground-11": {
+ "x": 77,
+ "y": 309,
+ "width": 39,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dlr.london-underground.national-rail-11": {
+ "x": 118,
+ "y": 309,
+ "width": 57,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dlr.national-rail-11": {
+ "x": 177,
+ "y": 309,
+ "width": 39,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "heliport-11": {
+ "x": 324,
+ "y": 129,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "museum-11": {
+ "x": 324,
+ "y": 150,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "london-overground-11": {
+ "x": 324,
+ "y": 171,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "london-overground.london-underground-11": {
+ "x": 218,
+ "y": 309,
+ "width": 39,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "london-overground.london-underground.national-rail-11": {
+ "x": 259,
+ "y": 309,
+ "width": 57,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "london-overground.national-rail-11": {
+ "x": 0,
+ "y": 330,
+ "width": 39,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "london-underground-11": {
+ "x": 324,
+ "y": 192,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "london-underground.national-rail-11": {
+ "x": 41,
+ "y": 330,
+ "width": 39,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-11": {
+ "x": 324,
+ "y": 213,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "metro.rer-11": {
+ "x": 82,
+ "y": 330,
+ "width": 39,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "moscow-metro-11": {
+ "x": 324,
+ "y": 234,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "national-rail-11": {
+ "x": 324,
+ "y": 255,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-11": {
+ "x": 324,
+ "y": 276,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rer-11": {
+ "x": 96,
+ "y": 70,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rer.transilien-11": {
+ "x": 123,
+ "y": 330,
+ "width": 39,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "s-bahn-11": {
+ "x": 318,
+ "y": 309,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "music-11": {
+ "x": 164,
+ "y": 330,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "transilien-11": {
+ "x": 185,
+ "y": 330,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "school-11": {
+ "x": 206,
+ "y": 330,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "place-of-worship-11": {
+ "x": 227,
+ "y": 330,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "weiner-linien-11": {
+ "x": 248,
+ "y": 330,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "ferry-11": {
+ "x": 269,
+ "y": 330,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-stroked-11": {
+ "x": 290,
+ "y": 330,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bus-11": {
+ "x": 311,
+ "y": 330,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "police-11": {
+ "x": 351,
+ "y": 0,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airport-11": {
+ "x": 351,
+ "y": 21,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fast-food-11": {
+ "x": 351,
+ "y": 42,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airfield-11": {
+ "x": 351,
+ "y": 63,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "post-11": {
+ "x": 351,
+ "y": 84,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "clothing-store-11": {
+ "x": 351,
+ "y": 105,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "prison-11": {
+ "x": 351,
+ "y": 126,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "alcohol-shop-11": {
+ "x": 351,
+ "y": 147,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-christian-11": {
+ "x": 351,
+ "y": 168,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "embassy-11": {
+ "x": 351,
+ "y": 189,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-jewish-11": {
+ "x": 351,
+ "y": 210,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bar-11": {
+ "x": 351,
+ "y": 231,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-muslim-11": {
+ "x": 351,
+ "y": 252,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fire-station-11": {
+ "x": 351,
+ "y": 273,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rocket-11": {
+ "x": 351,
+ "y": 294,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "art-gallery-11": {
+ "x": 351,
+ "y": 315,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "shop-11": {
+ "x": 0,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fuel-11": {
+ "x": 21,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "star-11": {
+ "x": 42,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "restaurant-11": {
+ "x": 63,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "suitcase-11": {
+ "x": 84,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "garden-11": {
+ "x": 105,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "swimming-11": {
+ "x": 126,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bakery-11": {
+ "x": 147,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "theatre-11": {
+ "x": 168,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "grocery-11": {
+ "x": 189,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "town-hall-11": {
+ "x": 210,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-metro-11": {
+ "x": 231,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-11": {
+ "x": 252,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hairdresser-11": {
+ "x": 273,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-stroked-11": {
+ "x": 294,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bank-11": {
+ "x": 315,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dentist-11": {
+ "x": 336,
+ "y": 351,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "harbor-11": {
+ "x": 372,
+ "y": 0,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hospital-11": {
+ "x": 372,
+ "y": 21,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cafe-11": {
+ "x": 372,
+ "y": 42,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "pharmacy-11": {
+ "x": 372,
+ "y": 63,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "ice-cream-11": {
+ "x": 372,
+ "y": 84,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "america-football-11": {
+ "x": 372,
+ "y": 105,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bicycle-11": {
+ "x": 372,
+ "y": 126,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "baseball-11": {
+ "x": 372,
+ "y": 147,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "laundry-11": {
+ "x": 372,
+ "y": 168,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "basketball-11": {
+ "x": 372,
+ "y": 189,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "college-11": {
+ "x": 372,
+ "y": 210,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "campsite-11": {
+ "x": 372,
+ "y": 231,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "library-11": {
+ "x": 372,
+ "y": 252,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cemetery-11": {
+ "x": 372,
+ "y": 273,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "car-11": {
+ "x": 372,
+ "y": 294,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dog-park-11": {
+ "x": 372,
+ "y": 315,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "lodging-11": {
+ "x": 372,
+ "y": 336,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "golf-11": {
+ "x": 0,
+ "y": 372,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-light-11": {
+ "x": 21,
+ "y": 372,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "park-11": {
+ "x": 42,
+ "y": 372,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "marker-11": {
+ "x": 63,
+ "y": 372,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cinema-11": {
+ "x": 84,
+ "y": 372,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "monument-11": {
+ "x": 105,
+ "y": 372,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "playground-11": {
+ "x": 126,
+ "y": 372,
+ "width": 19,
+ "height": 19,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-5-large": {
+ "x": 147,
+ "y": 372,
+ "width": 48,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-1-large": {
+ "x": 197,
+ "y": 372,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-3-small": {
+ "x": 217,
+ "y": 372,
+ "width": 25,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-2-small": {
+ "x": 244,
+ "y": 372,
+ "width": 21,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-1-small": {
+ "x": 205,
+ "y": 162,
+ "width": 17,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-2-large": {
+ "x": 267,
+ "y": 372,
+ "width": 25,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-6-large": {
+ "x": 294,
+ "y": 372,
+ "width": 50,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-3-large": {
+ "x": 346,
+ "y": 372,
+ "width": 32,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-5-large": {
+ "x": 393,
+ "y": 0,
+ "width": 45,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-4-large": {
+ "x": 393,
+ "y": 20,
+ "width": 39,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-1-large": {
+ "x": 393,
+ "y": 40,
+ "width": 22,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-6-large": {
+ "x": 0,
+ "y": 393,
+ "width": 54,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-2-large": {
+ "x": 393,
+ "y": 60,
+ "width": 28,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-4-large": {
+ "x": 393,
+ "y": 80,
+ "width": 42,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-3-large": {
+ "x": 393,
+ "y": 100,
+ "width": 35,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-duplex-5-small": {
+ "x": 393,
+ "y": 120,
+ "width": 29,
+ "height": 17,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-duplex-4-small": {
+ "x": 393,
+ "y": 139,
+ "width": 28,
+ "height": 17,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-highway-duplex-3-small": {
+ "x": 393,
+ "y": 158,
+ "width": 27,
+ "height": 17,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "entrance-11": {
+ "x": 417,
+ "y": 40,
+ "width": 17,
+ "height": 17,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "marsh-16": {
+ "x": 422,
+ "y": 158,
+ "width": 16,
+ "height": 16,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-1-small": {
+ "x": 393,
+ "y": 177,
+ "width": 17,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-6-small": {
+ "x": 393,
+ "y": 194,
+ "width": 45,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-4-small": {
+ "x": 393,
+ "y": 211,
+ "width": 33,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-3-small": {
+ "x": 393,
+ "y": 228,
+ "width": 27,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-5-small": {
+ "x": 393,
+ "y": 245,
+ "width": 38,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-2-small": {
+ "x": 412,
+ "y": 177,
+ "width": 21,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-2-small": {
+ "x": 393,
+ "y": 262,
+ "width": 23,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-1-small": {
+ "x": 423,
+ "y": 60,
+ "width": 15,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-4-small": {
+ "x": 393,
+ "y": 279,
+ "width": 35,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "metro-11": {
+ "x": 423,
+ "y": 139,
+ "width": 15,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-3-small": {
+ "x": 393,
+ "y": 296,
+ "width": 29,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "us-state-5-small": {
+ "x": 393,
+ "y": 313,
+ "width": 40,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "default-6-small": {
+ "x": 393,
+ "y": 330,
+ "width": 44,
+ "height": 15,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "oneway-spaced-white-large": {
+ "x": 424,
+ "y": 120,
+ "width": 14,
+ "height": 6,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "oneway-spaced-large": {
+ "x": 424,
+ "y": 128,
+ "width": 14,
+ "height": 6,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "oneway-spaced-small": {
+ "x": 422,
+ "y": 228,
+ "width": 11,
+ "height": 5,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "oneway-spaced-white-small": {
+ "x": 422,
+ "y": 235,
+ "width": 11,
+ "height": 5,
+ "pixelRatio": 1,
+ "sdf": false
+ }
+} \ No newline at end of file
diff --git a/platform/ios/benchmark/assets/sprites/mapbox-streets.png b/platform/ios/benchmark/assets/sprites/mapbox-streets.png
new file mode 100644
index 0000000000..00925f91a2
--- /dev/null
+++ b/platform/ios/benchmark/assets/sprites/mapbox-streets.png
Binary files differ
diff --git a/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.json b/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.json
new file mode 100644
index 0000000000..0a193fb4db
--- /dev/null
+++ b/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.json
@@ -0,0 +1,2034 @@
+{
+ "secondary_marker": {
+ "x": 0,
+ "y": 0,
+ "width": 40,
+ "height": 100,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default_marker": {
+ "x": 42,
+ "y": 0,
+ "width": 40,
+ "height": 100,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-business-1-large": {
+ "x": 84,
+ "y": 0,
+ "width": 54,
+ "height": 74,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-alternate-1-large": {
+ "x": 140,
+ "y": 0,
+ "width": 42,
+ "height": 74,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-alternate-2-large": {
+ "x": 0,
+ "y": 102,
+ "width": 54,
+ "height": 74,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-business-2-large": {
+ "x": 56,
+ "y": 102,
+ "width": 54,
+ "height": 74,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-truck-1-large": {
+ "x": 112,
+ "y": 102,
+ "width": 46,
+ "height": 70,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-truck-2-large": {
+ "x": 184,
+ "y": 0,
+ "width": 54,
+ "height": 70,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "marsh-32": {
+ "x": 240,
+ "y": 0,
+ "width": 64,
+ "height": 64,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-truck-1-small": {
+ "x": 240,
+ "y": 66,
+ "width": 34,
+ "height": 62,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-business-2-small": {
+ "x": 184,
+ "y": 72,
+ "width": 42,
+ "height": 62,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-alternate-2-small": {
+ "x": 0,
+ "y": 178,
+ "width": 42,
+ "height": 62,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-alternate-1-small": {
+ "x": 44,
+ "y": 178,
+ "width": 34,
+ "height": 62,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-truck-2-small": {
+ "x": 80,
+ "y": 178,
+ "width": 42,
+ "height": 62,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-business-1-small": {
+ "x": 124,
+ "y": 178,
+ "width": 34,
+ "height": 62,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-duplex-3-large": {
+ "x": 160,
+ "y": 178,
+ "width": 68,
+ "height": 56,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-3-large": {
+ "x": 230,
+ "y": 178,
+ "width": 68,
+ "height": 56,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-duplex-4-large": {
+ "x": 0,
+ "y": 242,
+ "width": 78,
+ "height": 56,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-1-large": {
+ "x": 80,
+ "y": 242,
+ "width": 48,
+ "height": 56,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-duplex-5-large": {
+ "x": 130,
+ "y": 242,
+ "width": 84,
+ "height": 56,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-2-large": {
+ "x": 216,
+ "y": 242,
+ "width": 56,
+ "height": 56,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-business-1-large": {
+ "x": 306,
+ "y": 0,
+ "width": 48,
+ "height": 54,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-business-2-large": {
+ "x": 0,
+ "y": 300,
+ "width": 56,
+ "height": 54,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-business-3-large": {
+ "x": 58,
+ "y": 300,
+ "width": 68,
+ "height": 54,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-federal-1-large": {
+ "x": 306,
+ "y": 56,
+ "width": 40,
+ "height": 52,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-federal-2-large": {
+ "x": 128,
+ "y": 300,
+ "width": 50,
+ "height": 52,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-federal-3-large": {
+ "x": 180,
+ "y": 300,
+ "width": 60,
+ "height": 52,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-federal-4-large": {
+ "x": 242,
+ "y": 300,
+ "width": 74,
+ "height": 52,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-state-4-large": {
+ "x": 356,
+ "y": 0,
+ "width": 72,
+ "height": 50,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-state-3-large": {
+ "x": 356,
+ "y": 52,
+ "width": 62,
+ "height": 50,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-duplex-5-small": {
+ "x": 356,
+ "y": 104,
+ "width": 70,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-2-small": {
+ "x": 356,
+ "y": 154,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-duplex-3-small": {
+ "x": 356,
+ "y": 204,
+ "width": 58,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-duplex-4-small": {
+ "x": 356,
+ "y": 254,
+ "width": 66,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-1-small": {
+ "x": 356,
+ "y": 304,
+ "width": 40,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-state-2-large": {
+ "x": 0,
+ "y": 356,
+ "width": 50,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-3-small": {
+ "x": 52,
+ "y": 356,
+ "width": 58,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-state-1-large": {
+ "x": 306,
+ "y": 110,
+ "width": 40,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "music-15": {
+ "x": 306,
+ "y": 160,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "place-of-worship-15": {
+ "x": 306,
+ "y": 208,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "police-15": {
+ "x": 240,
+ "y": 130,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "post-15": {
+ "x": 112,
+ "y": 356,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "prison-15": {
+ "x": 160,
+ "y": 356,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-christian-15": {
+ "x": 208,
+ "y": 356,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-jewish-15": {
+ "x": 256,
+ "y": 356,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-muslim-15": {
+ "x": 304,
+ "y": 356,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rocket-15": {
+ "x": 352,
+ "y": 356,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "shop-15": {
+ "x": 430,
+ "y": 0,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "star-15": {
+ "x": 430,
+ "y": 48,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "suitcase-15": {
+ "x": 430,
+ "y": 96,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "swimming-15": {
+ "x": 430,
+ "y": 144,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "theatre-15": {
+ "x": 430,
+ "y": 192,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "town-hall-15": {
+ "x": 430,
+ "y": 240,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-15": {
+ "x": 430,
+ "y": 288,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-stroked-15": {
+ "x": 430,
+ "y": 336,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dentist-15": {
+ "x": 0,
+ "y": 406,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hospital-15": {
+ "x": 48,
+ "y": 406,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "pharmacy-15": {
+ "x": 96,
+ "y": 406,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "america-football-15": {
+ "x": 144,
+ "y": 406,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "baseball-15": {
+ "x": 192,
+ "y": 406,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "basketball-15": {
+ "x": 240,
+ "y": 406,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "campsite-15": {
+ "x": 288,
+ "y": 406,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cemetery-15": {
+ "x": 336,
+ "y": 406,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dog-park-15": {
+ "x": 384,
+ "y": 406,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "beer-15": {
+ "x": 478,
+ "y": 0,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "park-15": {
+ "x": 478,
+ "y": 48,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bar-15": {
+ "x": 478,
+ "y": 96,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "playground-15": {
+ "x": 478,
+ "y": 144,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "zoo-15": {
+ "x": 478,
+ "y": 192,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "ferry-15": {
+ "x": 478,
+ "y": 240,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bus-15": {
+ "x": 478,
+ "y": 288,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airport-15": {
+ "x": 478,
+ "y": 336,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "college-15": {
+ "x": 478,
+ "y": 384,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airfield-15": {
+ "x": 0,
+ "y": 454,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "school-15": {
+ "x": 48,
+ "y": 454,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-metro-15": {
+ "x": 96,
+ "y": 454,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cafe-15": {
+ "x": 144,
+ "y": 454,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fast-food-15": {
+ "x": 192,
+ "y": 454,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-light-15": {
+ "x": 240,
+ "y": 454,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-15": {
+ "x": 288,
+ "y": 454,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-business-3-small": {
+ "x": 336,
+ "y": 454,
+ "width": 58,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "heliport-15": {
+ "x": 396,
+ "y": 454,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-business-2-small": {
+ "x": 444,
+ "y": 454,
+ "width": 48,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "restaurant-15": {
+ "x": 526,
+ "y": 0,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "alcohol-shop-15": {
+ "x": 526,
+ "y": 48,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-interstate-business-1-small": {
+ "x": 526,
+ "y": 96,
+ "width": 40,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "art-gallery-15": {
+ "x": 526,
+ "y": 144,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bakery-15": {
+ "x": 526,
+ "y": 192,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bank-15": {
+ "x": 526,
+ "y": 240,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bicycle-15": {
+ "x": 526,
+ "y": 288,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "car-15": {
+ "x": 526,
+ "y": 336,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cinema-15": {
+ "x": 526,
+ "y": 384,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-15": {
+ "x": 526,
+ "y": 432,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-stroked-15": {
+ "x": 0,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "clothing-store-15": {
+ "x": 48,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "embassy-15": {
+ "x": 96,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fire-station-15": {
+ "x": 144,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fuel-15": {
+ "x": 192,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "garden-15": {
+ "x": 240,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "grocery-15": {
+ "x": 288,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hairdresser-15": {
+ "x": 336,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "harbor-15": {
+ "x": 384,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "ice-cream-15": {
+ "x": 432,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "laundry-15": {
+ "x": 480,
+ "y": 502,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "library-15": {
+ "x": 574,
+ "y": 0,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "lodging-15": {
+ "x": 574,
+ "y": 48,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "marker-15": {
+ "x": 574,
+ "y": 96,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "monument-15": {
+ "x": 574,
+ "y": 144,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "museum-15": {
+ "x": 574,
+ "y": 192,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "golf-15": {
+ "x": 574,
+ "y": 240,
+ "width": 46,
+ "height": 46,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-federal-4-small": {
+ "x": 0,
+ "y": 550,
+ "width": 62,
+ "height": 44,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-federal-3-small": {
+ "x": 64,
+ "y": 550,
+ "width": 50,
+ "height": 44,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-duplex-5-large": {
+ "x": 116,
+ "y": 550,
+ "width": 74,
+ "height": 44,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-federal-2-small": {
+ "x": 574,
+ "y": 288,
+ "width": 42,
+ "height": 44,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-duplex-4-large": {
+ "x": 192,
+ "y": 550,
+ "width": 68,
+ "height": 44,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-federal-1-small": {
+ "x": 574,
+ "y": 334,
+ "width": 34,
+ "height": 44,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-duplex-3-large": {
+ "x": 262,
+ "y": 550,
+ "width": 64,
+ "height": 44,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-1-large": {
+ "x": 574,
+ "y": 380,
+ "width": 40,
+ "height": 42,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-2-large": {
+ "x": 328,
+ "y": 550,
+ "width": 54,
+ "height": 42,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-3-large": {
+ "x": 384,
+ "y": 550,
+ "width": 60,
+ "height": 42,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-state-3-small": {
+ "x": 184,
+ "y": 136,
+ "width": 50,
+ "height": 40,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-state-1-small": {
+ "x": 574,
+ "y": 424,
+ "width": 34,
+ "height": 40,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-state-2-small": {
+ "x": 574,
+ "y": 466,
+ "width": 42,
+ "height": 40,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mx-state-4-small": {
+ "x": 446,
+ "y": 550,
+ "width": 58,
+ "height": 40,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "u-bahn-11": {
+ "x": 574,
+ "y": 508,
+ "width": 40,
+ "height": 40,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "subway-11": {
+ "x": 306,
+ "y": 256,
+ "width": 40,
+ "height": 40,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "light-11": {
+ "x": 432,
+ "y": 406,
+ "width": 40,
+ "height": 40,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle.sdf": {
+ "x": 528,
+ "y": 502,
+ "width": 38,
+ "height": 40,
+ "pixelRatio": 2,
+ "sdf": true
+ },
+ "washington-metro-11": {
+ "x": 506,
+ "y": 550,
+ "width": 40,
+ "height": 40,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "zoo-11": {
+ "x": 548,
+ "y": 550,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "beer-11": {
+ "x": 622,
+ "y": 0,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "heliport-11": {
+ "x": 622,
+ "y": 40,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "museum-11": {
+ "x": 622,
+ "y": 80,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "ferry-11": {
+ "x": 622,
+ "y": 120,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-11": {
+ "x": 622,
+ "y": 160,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bus-11": {
+ "x": 622,
+ "y": 200,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "music-11": {
+ "x": 622,
+ "y": 240,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "school-11": {
+ "x": 622,
+ "y": 280,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airport-11": {
+ "x": 622,
+ "y": 320,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "place-of-worship-11": {
+ "x": 622,
+ "y": 360,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airfield-11": {
+ "x": 622,
+ "y": 400,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-stroked-11": {
+ "x": 622,
+ "y": 440,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "police-11": {
+ "x": 622,
+ "y": 480,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fast-food-11": {
+ "x": 622,
+ "y": 520,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "post-11": {
+ "x": 0,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "clothing-store-11": {
+ "x": 40,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "prison-11": {
+ "x": 80,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "alcohol-shop-11": {
+ "x": 120,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-11": {
+ "x": 160,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-christian-11": {
+ "x": 200,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "embassy-11": {
+ "x": 240,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-jewish-11": {
+ "x": 280,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bar-11": {
+ "x": 320,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-muslim-11": {
+ "x": 360,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fire-station-11": {
+ "x": 400,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rocket-11": {
+ "x": 440,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "art-gallery-11": {
+ "x": 480,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "shop-11": {
+ "x": 520,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fuel-11": {
+ "x": 560,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "star-11": {
+ "x": 600,
+ "y": 596,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "restaurant-11": {
+ "x": 662,
+ "y": 0,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "suitcase-11": {
+ "x": 662,
+ "y": 40,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "garden-11": {
+ "x": 662,
+ "y": 80,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "swimming-11": {
+ "x": 662,
+ "y": 120,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bakery-11": {
+ "x": 662,
+ "y": 160,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "theatre-11": {
+ "x": 662,
+ "y": 200,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "grocery-11": {
+ "x": 662,
+ "y": 240,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "town-hall-11": {
+ "x": 662,
+ "y": 280,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-metro-11": {
+ "x": 662,
+ "y": 320,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-11": {
+ "x": 662,
+ "y": 360,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hairdresser-11": {
+ "x": 662,
+ "y": 400,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-stroked-11": {
+ "x": 662,
+ "y": 440,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bank-11": {
+ "x": 662,
+ "y": 480,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dentist-11": {
+ "x": 662,
+ "y": 520,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "harbor-11": {
+ "x": 662,
+ "y": 560,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hospital-11": {
+ "x": 0,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cafe-11": {
+ "x": 40,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "pharmacy-11": {
+ "x": 80,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "ice-cream-11": {
+ "x": 120,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "america-football-11": {
+ "x": 160,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bicycle-11": {
+ "x": 200,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "baseball-11": {
+ "x": 240,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "laundry-11": {
+ "x": 280,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "basketball-11": {
+ "x": 320,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "college-11": {
+ "x": 360,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "campsite-11": {
+ "x": 400,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "library-11": {
+ "x": 440,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cemetery-11": {
+ "x": 480,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "car-11": {
+ "x": 520,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dog-park-11": {
+ "x": 560,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "lodging-11": {
+ "x": 600,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "golf-11": {
+ "x": 640,
+ "y": 636,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-light-11": {
+ "x": 702,
+ "y": 0,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "park-11": {
+ "x": 702,
+ "y": 40,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "marker-11": {
+ "x": 702,
+ "y": 80,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cinema-11": {
+ "x": 702,
+ "y": 120,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "monument-11": {
+ "x": 702,
+ "y": 160,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "playground-11": {
+ "x": 702,
+ "y": 200,
+ "width": 38,
+ "height": 38,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-3-small": {
+ "x": 0,
+ "y": 676,
+ "width": 50,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-1-small": {
+ "x": 702,
+ "y": 240,
+ "width": 34,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dlr-11": {
+ "x": 702,
+ "y": 278,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dlr.london-overground.london-underground.national-rail-11": {
+ "x": 52,
+ "y": 676,
+ "width": 148,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dlr.london-underground-11": {
+ "x": 202,
+ "y": 676,
+ "width": 76,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-6-large": {
+ "x": 280,
+ "y": 676,
+ "width": 100,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dlr.london-underground.national-rail-11": {
+ "x": 382,
+ "y": 676,
+ "width": 112,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dlr.national-rail-11": {
+ "x": 496,
+ "y": 676,
+ "width": 76,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-5-large": {
+ "x": 574,
+ "y": 676,
+ "width": 90,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "london-overground-11": {
+ "x": 702,
+ "y": 316,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-4-large": {
+ "x": 742,
+ "y": 0,
+ "width": 78,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "london-overground.london-underground-11": {
+ "x": 742,
+ "y": 38,
+ "width": 76,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-3-large": {
+ "x": 742,
+ "y": 76,
+ "width": 65,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "london-overground.london-underground.national-rail-11": {
+ "x": 0,
+ "y": 714,
+ "width": 112,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-2-large": {
+ "x": 742,
+ "y": 114,
+ "width": 50,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-6-large": {
+ "x": 114,
+ "y": 714,
+ "width": 108,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-1-large": {
+ "x": 742,
+ "y": 152,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "weiner-linien-11": {
+ "x": 780,
+ "y": 152,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "transilien-11": {
+ "x": 742,
+ "y": 190,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "s-bahn-11": {
+ "x": 780,
+ "y": 190,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rer.transilien-11": {
+ "x": 742,
+ "y": 228,
+ "width": 76,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rer-11": {
+ "x": 742,
+ "y": 266,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "national-rail-11": {
+ "x": 780,
+ "y": 266,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "moscow-metro-11": {
+ "x": 742,
+ "y": 304,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "metro.rer-11": {
+ "x": 742,
+ "y": 342,
+ "width": 76,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-5-large": {
+ "x": 224,
+ "y": 714,
+ "width": 96,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "london-underground.national-rail-11": {
+ "x": 742,
+ "y": 380,
+ "width": 76,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-2-small": {
+ "x": 742,
+ "y": 418,
+ "width": 42,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "london-overground.national-rail-11": {
+ "x": 742,
+ "y": 456,
+ "width": 76,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-1-large": {
+ "x": 742,
+ "y": 494,
+ "width": 44,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-4-large": {
+ "x": 322,
+ "y": 714,
+ "width": 84,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-2-large": {
+ "x": 742,
+ "y": 532,
+ "width": 56,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-3-large": {
+ "x": 742,
+ "y": 570,
+ "width": 70,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "london-underground-11": {
+ "x": 780,
+ "y": 304,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-duplex-3-small": {
+ "x": 742,
+ "y": 608,
+ "width": 54,
+ "height": 34,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-duplex-4-small": {
+ "x": 742,
+ "y": 644,
+ "width": 56,
+ "height": 34,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-highway-duplex-5-small": {
+ "x": 666,
+ "y": 676,
+ "width": 58,
+ "height": 34,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "marsh-16": {
+ "x": 786,
+ "y": 418,
+ "width": 32,
+ "height": 32,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "entrance-11": {
+ "x": 788,
+ "y": 494,
+ "width": 32,
+ "height": 32,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-1-small": {
+ "x": 742,
+ "y": 680,
+ "width": 30,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-2-small": {
+ "x": 774,
+ "y": 680,
+ "width": 46,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-2-small": {
+ "x": 408,
+ "y": 714,
+ "width": 42,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-3-small": {
+ "x": 452,
+ "y": 714,
+ "width": 54,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-4-small": {
+ "x": 508,
+ "y": 714,
+ "width": 66,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-3-small": {
+ "x": 576,
+ "y": 714,
+ "width": 58,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-5-small": {
+ "x": 636,
+ "y": 714,
+ "width": 76,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-5-small": {
+ "x": 714,
+ "y": 714,
+ "width": 80,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-6-small": {
+ "x": 0,
+ "y": 752,
+ "width": 90,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "default-6-small": {
+ "x": 92,
+ "y": 752,
+ "width": 88,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-4-small": {
+ "x": 182,
+ "y": 752,
+ "width": 70,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "us-state-1-small": {
+ "x": 702,
+ "y": 354,
+ "width": 34,
+ "height": 30,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "metro-11": {
+ "x": 702,
+ "y": 386,
+ "width": 28,
+ "height": 28,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "oneway-spaced-white-large": {
+ "x": 702,
+ "y": 416,
+ "width": 28,
+ "height": 12,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "oneway-spaced-large": {
+ "x": 702,
+ "y": 430,
+ "width": 28,
+ "height": 12,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "oneway-spaced-small": {
+ "x": 794,
+ "y": 114,
+ "width": 22,
+ "height": 10,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "oneway-spaced-white-small": {
+ "x": 794,
+ "y": 126,
+ "width": 22,
+ "height": 10,
+ "pixelRatio": 2,
+ "sdf": false
+ }
+} \ No newline at end of file
diff --git a/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.png b/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.png
new file mode 100644
index 0000000000..0d5bd533f7
--- /dev/null
+++ b/platform/ios/benchmark/assets/sprites/mapbox-streets@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/assets/styles/streets-v8.json b/platform/ios/benchmark/assets/styles/streets-v8.json
new file mode 100644
index 0000000000..4befdc121a
--- /dev/null
+++ b/platform/ios/benchmark/assets/styles/streets-v8.json
@@ -0,0 +1,8935 @@
+{
+ "version": 8,
+ "name": "Mapbox Streets",
+ "sources": {
+ "composite": {
+ "url": "asset://tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json",
+ "type": "vector"
+ }
+ },
+ "sprite": "asset://sprites/mapbox-streets",
+ "glyphs": "asset://glyphs/{fontstack}/{range}.pbf",
+ "layers": [
+ {
+ "id": "background",
+ "type": "background",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "background-color": "#ede9d9"
+ }
+ },
+ {
+ "id": "landcover_crop",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landcover",
+ "minzoom": 0,
+ "maxzoom": 14,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "crop"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#ddecb1",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 14,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_grass",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landcover",
+ "minzoom": 0,
+ "maxzoom": 14,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "grass"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#ddecb1",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 14,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_scrub",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landcover",
+ "minzoom": 0,
+ "maxzoom": 14,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "scrub"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#ddecb1",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 14,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_wood",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landcover",
+ "minzoom": 0,
+ "maxzoom": 14,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "wood"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#ddecb1",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 14,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_snow",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landcover",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "snow"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#fff",
+ "fill-opacity": 0.2,
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "scrub",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 9,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "scrub"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#ddecb1",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9,
+ 0
+ ],
+ [
+ 16,
+ 0.2
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "grass",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 9,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "grass"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#ddecb1",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9,
+ 0
+ ],
+ [
+ 16,
+ 0.4
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "wood",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 6,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "wood"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#ddecb1",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 16,
+ 0.5
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "agriculture",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "agriculture"
+ ]
+ ],
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "fill-color": "rgba(221,85,85,1.000)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "hospital",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "hospital"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#f4dcdc"
+ }
+ },
+ {
+ "id": "school",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "school"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#f3ebb4"
+ }
+ },
+ {
+ "id": "parks",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "park"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#cde8a2",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 6,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "glaciers",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 9,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "glacier"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#dcedf9",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9,
+ 0
+ ],
+ [
+ 10,
+ 0.25
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "pitch",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "pitch"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#c3e194"
+ }
+ },
+ {
+ "id": "pitch-line",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "pitch"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "line-color": "#e1f2c6"
+ }
+ },
+ {
+ "id": "cemetery",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "cemetery"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#dde6c2"
+ }
+ },
+ {
+ "id": "industrial",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "industrial"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#e0dae0"
+ }
+ },
+ {
+ "id": "sand",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "sand"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#ededcf"
+ }
+ },
+ {
+ "id": "hillshade_highlight_bright",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 18,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "level",
+ 94
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#fff",
+ "fill-opacity": {
+ "stops": [
+ [
+ 15,
+ 0.12
+ ],
+ [
+ 18,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_highlight_med",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "level",
+ 90
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#fff",
+ "fill-opacity": {
+ "stops": [
+ [
+ 15,
+ 0.12
+ ],
+ [
+ 18,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_faint",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 17,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "level",
+ 89
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#5a5517",
+ "fill-opacity": {
+ "stops": [
+ [
+ 15,
+ 0.05
+ ],
+ [
+ 17,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_med",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "level",
+ 78
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#5a5517",
+ "fill-opacity": {
+ "stops": [
+ [
+ 15,
+ 0.05
+ ],
+ [
+ 17,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_dark",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "level",
+ 67
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#5a5517",
+ "fill-opacity": {
+ "stops": [
+ [
+ 15,
+ 0.06
+ ],
+ [
+ 17,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_extreme",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 17,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "level",
+ 56
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#5a5517",
+ "fill-opacity": {
+ "stops": [
+ [
+ 15,
+ 0.06
+ ],
+ [
+ 17,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "waterway-river",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "waterway",
+ "minzoom": 8,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "any",
+ [
+ "in",
+ "class",
+ "river"
+ ],
+ [
+ "in",
+ "class",
+ "canal"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "butt"
+ ],
+ [
+ 11,
+ "round"
+ ]
+ ]
+ },
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": "#8ccbf7",
+ "line-width": {
+ "base": 1.3,
+ "stops": [
+ [
+ 8.5,
+ 0.1
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ 0
+ ],
+ [
+ 8.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "waterway-other",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "waterway",
+ "minzoom": 13,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!=",
+ "class",
+ "river"
+ ],
+ [
+ "!=",
+ "class",
+ "canal"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-join": "round",
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-color": "#8ccbf7",
+ "line-width": {
+ "base": 1.35,
+ "stops": [
+ [
+ 13.5,
+ 0.1
+ ],
+ [
+ 20,
+ 3
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 13.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "water",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "water",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#8ccbf7"
+ }
+ },
+ {
+ "id": "landuse-overlay",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse_overlay",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all"
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#9DD3D8",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 0.25
+ ],
+ [
+ 10.5,
+ 0.15
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "landuse-overlay-pattern",
+ "ref": "landuse-overlay",
+ "interactive": true,
+ "paint": {
+ "fill-color": "#9DD3D8",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 0
+ ],
+ [
+ 10.5,
+ 1
+ ]
+ ]
+ },
+ "fill-pattern": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ "marsh-16"
+ ],
+ [
+ 14,
+ "marsh-32"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "barrier_line-land-polygon",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "barrier_line",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "land"
+ ],
+ [
+ "in",
+ "$type",
+ "Polygon"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "#ede9d9"
+ }
+ },
+ {
+ "id": "barrier_line-land-line",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "barrier_line",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "land"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.99,
+ "stops": [
+ [
+ 14,
+ 0.75
+ ],
+ [
+ 20,
+ 40
+ ]
+ ]
+ },
+ "line-color": "#ede9d9"
+ }
+ },
+ {
+ "id": "building-bottom",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "building",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#cbc6b7",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ 0
+ ],
+ [
+ 16,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "building-top",
+ "ref": "building-bottom",
+ "interactive": true,
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "#ede9d9"
+ ],
+ [
+ 16,
+ "#e8e0cc"
+ ]
+ ]
+ },
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.5,
+ 1
+ ]
+ ]
+ },
+ "fill-outline-color": "#d0cbbb",
+ "fill-translate": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ [
+ 0,
+ 0
+ ]
+ ],
+ [
+ 20,
+ [
+ -5,
+ -5
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "aeroway-polygon",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "aeroway",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "!=",
+ "type",
+ "apron"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "#dbcedb",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "aeroway-runway",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "aeroway",
+ "minzoom": 9,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "runway"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt"
+ },
+ "paint": {
+ "line-color": "#dbcedb",
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 9,
+ 1
+ ],
+ [
+ 18,
+ 80
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "aeroway-taxiway",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "aeroway",
+ "minzoom": 9,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "taxiway"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt"
+ },
+ "paint": {
+ "line-color": "#dbcedb",
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 0.5
+ ],
+ [
+ 18,
+ 20
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-3-4-boundaries-bg",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ ">=",
+ "admin_level",
+ 3
+ ],
+ [
+ "in",
+ "maritime",
+ 0
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-join": "bevel"
+ },
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "#ede9d9"
+ ],
+ [
+ 16,
+ "#f6e8e1"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 3.5
+ ],
+ [
+ 10,
+ 8
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ 0
+ ],
+ [
+ 8,
+ 0.75
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-translate": [
+ 0,
+ 0
+ ],
+ "line-blur": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 0
+ ],
+ [
+ 8,
+ 3
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street_limited-polygon",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "Polygon"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#EEE8E3",
+ "fill-opacity": 0.75
+ }
+ },
+ {
+ "id": "tunnel-path-bg",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "path"
+ ]
+ ],
+ "layout": {
+ "visibility": "none",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "#d9d3c9",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 0.5
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-path",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "path"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ [
+ 0.1,
+ 1.25
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.1,
+ 1.6
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.1,
+ 1.45
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.1,
+ 1.3
+ ]
+ ]
+ ]
+ },
+ "line-color": "#f5f2ee",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street-low",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street_limited-low",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-motorway_link-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "motorway_link"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-service-driveway-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "service",
+ "driveway"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#c4beb7",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-street_limited-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ],
+ [
+ "!=",
+ "type",
+ "construction"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#c4beb7",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#c4beb7",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-main-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "main"
+ ],
+ [
+ "!=",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "#c4beb7"
+ }
+ },
+ {
+ "id": "tunnel-trunk-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "main"
+ ],
+ [
+ "in",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-motorway-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "motorway"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-motorway_link",
+ "ref": "tunnel-motorway_link-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#ffbe8c",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "tunnel-service-driveway",
+ "ref": "tunnel-service-driveway-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-dasharray": [
+ 1,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "tunnel-construction",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 14,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "type",
+ "construction"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street_limited",
+ "ref": "tunnel-street_limited-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "#EFEDEB",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street",
+ "ref": "tunnel-street-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-main",
+ "ref": "tunnel-main-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-blur": 0
+ }
+ },
+ {
+ "id": "tunnel-trunk",
+ "ref": "tunnel-trunk-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "#f2de9e"
+ }
+ },
+ {
+ "id": "tunnel-motorway",
+ "ref": "tunnel-motorway-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": 1,
+ "line-color": "#ffbe8c",
+ "line-blur": 0
+ }
+ },
+ {
+ "id": "tunnel-rail",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 13,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "#d8d5c8"
+ ],
+ [
+ 16,
+ "#c0beb2"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-rail-tracks",
+ "ref": "tunnel-rail",
+ "interactive": true,
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "#d8d5c8"
+ ],
+ [
+ 16,
+ "#c0beb2"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path-bg",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "path"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "#d9d3c9",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 0.5
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path",
+ "ref": "road-path-bg",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ [
+ 0.1,
+ 1.25
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.1,
+ 1.6
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.1,
+ 1.45
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.1,
+ 1.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-polygon-outline",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "Polygon"
+ ]
+ ],
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "line-color": "#d9d3c9",
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 1.5
+ ],
+ [
+ 20,
+ 4
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-street-low",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "motorway_link"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-driveway-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "service",
+ "driveway"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ],
+ [
+ "!=",
+ "type",
+ "construction"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-main-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "main"
+ ],
+ [
+ "!=",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 5,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "main"
+ ],
+ [
+ "in",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 5.9,
+ 0
+ ],
+ [
+ 6,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "motorway"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5.9,
+ 0
+ ],
+ [
+ 6,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-polygon",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "Polygon"
+ ]
+ ],
+ "layout": {
+ "visibility": "none"
+ },
+ "paint": {
+ "fill-color": "#EFEDEB",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-service-driveway",
+ "ref": "road-service-driveway-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "#fff"
+ }
+ },
+ {
+ "id": "road-motorway_link",
+ "ref": "road-motorway_link-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#ffa159",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-construction",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "type",
+ "construction"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited",
+ "ref": "road-street_limited-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "#EFEDEB",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street",
+ "ref": "road-street-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-main",
+ "ref": "road-main-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "#ede9d9"
+ ],
+ [
+ 8,
+ "#fff"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk",
+ "ref": "road-trunk-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "#f2cf60"
+ }
+ },
+ {
+ "id": "road-motorway",
+ "ref": "road-motorway-case",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5.9,
+ "#fff"
+ ],
+ [
+ 6,
+ "#ffa159"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "#d8d5c8"
+ ],
+ [
+ 16,
+ "#b3b1a6"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks",
+ "ref": "road-rail",
+ "interactive": true,
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "#d8d5c8"
+ ],
+ [
+ 16,
+ "#b3b1a6"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-polygon",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "Polygon"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "#EEE8E3",
+ "fill-opacity": 0.75
+ }
+ },
+ {
+ "id": "bridge-path-bg",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "path"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "#d9d3c9",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path",
+ "ref": "bridge-path-bg",
+ "interactive": true,
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.1,
+ 1.25
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.1,
+ 1.6
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.1,
+ 1.45
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.1,
+ 1.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 12,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "motorway_link"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-service-driveway-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "service",
+ "driveway"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 14,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ],
+ [
+ "!=",
+ "type",
+ "construction"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 14,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-main-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 8,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "main"
+ ],
+ [
+ "!=",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-motorway-trunk-case",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "any",
+ [
+ "in",
+ "class",
+ "motorway"
+ ],
+ [
+ "in",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 10,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "motorway_link"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#ffa159"
+ }
+ },
+ {
+ "id": "bridge-service-driveway",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "service",
+ "driveway"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "#fff"
+ }
+ },
+ {
+ "id": "bridge-construction",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 14,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "type",
+ "construction"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "#d9d3c9",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ],
+ [
+ "!=",
+ "type",
+ "construction"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "#EFEDEB",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-main",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "main"
+ ],
+ [
+ "!=",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "#fff",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "main"
+ ],
+ [
+ "in",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "#f2cf60"
+ }
+ },
+ {
+ "id": "bridge-motorway",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "motorway"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "#ffa159"
+ }
+ },
+ {
+ "id": "bridge-rail",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 13,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "#d8d5c8"
+ ],
+ [
+ 16,
+ "#b3b1a6"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks",
+ "ref": "bridge-rail",
+ "interactive": true,
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "#d8d5c8"
+ ],
+ [
+ 16,
+ "#b3b1a6"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-aerialway",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 13,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "aerialway"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt"
+ },
+ "paint": {
+ "line-color": "#b3ada6",
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "hedges",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "barrier_line",
+ "minzoom": 16,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "hedge"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": "#e2f4c2",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 1
+ ],
+ [
+ 20,
+ 3
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 2,
+ 5,
+ 2,
+ 1,
+ 2
+ ]
+ }
+ },
+ {
+ "id": "fences",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "barrier_line",
+ "minzoom": 16,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "fence"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": "#cbc6b7",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 1
+ ],
+ [
+ 20,
+ 3
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 2,
+ 5,
+ 2,
+ 1,
+ 2
+ ]
+ }
+ },
+ {
+ "id": "gates",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "barrier_line",
+ "minzoom": 17,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "gate"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": "#cbc6b7",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 1
+ ],
+ [
+ 20,
+ 3
+ ]
+ ]
+ },
+ "line-opacity": 0.5,
+ "line-dasharray": [
+ 1,
+ 2,
+ 5,
+ 2,
+ 1,
+ 2
+ ]
+ }
+ },
+ {
+ "id": "admin-2-boundaries-bg",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 1,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "admin_level",
+ 2
+ ],
+ [
+ "in",
+ "maritime",
+ 0
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-join": "miter",
+ "line-cap": "butt"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 3.5
+ ],
+ [
+ 10,
+ 10
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "#ede9d9"
+ ],
+ [
+ 8,
+ "#f6e8e1"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 0
+ ],
+ [
+ 4,
+ 0.5
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ],
+ "line-blur": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 0
+ ],
+ [
+ 10,
+ 2
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-3-4-boundaries",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ ">=",
+ "admin_level",
+ 3
+ ],
+ [
+ "in",
+ "maritime",
+ 0
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-join": "round",
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ [
+ 2,
+ 0
+ ]
+ ],
+ [
+ 7,
+ [
+ 2,
+ 2,
+ 6,
+ 2
+ ]
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ 0.75
+ ],
+ [
+ 12,
+ 1.5
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 2,
+ 0
+ ],
+ [
+ 3,
+ 1
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ "#c3bfcc"
+ ],
+ [
+ 7,
+ "#aba8b3"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-2-boundaries",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 1,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "admin_level",
+ 2
+ ],
+ [
+ "in",
+ "maritime",
+ 0
+ ],
+ [
+ "in",
+ "disputed",
+ 0
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-join": "round",
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-color": "#787680",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 0.5
+ ],
+ [
+ 10,
+ 2
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-2-boundaries-dispute",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 1,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "admin_level",
+ 2
+ ],
+ [
+ "in",
+ "maritime",
+ 0
+ ],
+ [
+ "in",
+ "disputed",
+ 1
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "line-cap": "butt",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-dasharray": [
+ 1.5,
+ 1.5
+ ],
+ "line-color": "#787680",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 0.5
+ ],
+ [
+ 10,
+ 2
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "contour",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "contour",
+ "minzoom": 14,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!=",
+ "index",
+ 5
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-opacity": 0.07,
+ "line-color": "#66601a"
+ }
+ },
+ {
+ "id": "contour-index",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "contour",
+ "minzoom": 14,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "index",
+ 5
+ ]
+ ],
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-opacity": 0.12,
+ "line-color": "#66601a"
+ }
+ },
+ {
+ "id": "tunnel-oneway-arrows-color",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "oneway",
+ 1
+ ],
+ [
+ "in",
+ "class",
+ "main",
+ "street",
+ "street_limited"
+ ],
+ [
+ "!=",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-spaced-small"
+ ],
+ [
+ 17,
+ "oneway-spaced-large"
+ ]
+ ]
+ },
+ "icon-ignore-placement": false,
+ "symbol-spacing": 250
+ },
+ "paint": {}
+ },
+ {
+ "id": "tunnel-oneway-arrows-white",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "tunnel",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "oneway",
+ 1
+ ],
+ [
+ "any",
+ [
+ "in",
+ "class",
+ "motorway",
+ "motorway_link"
+ ],
+ [
+ "in",
+ "type",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-spaced-white-small"
+ ],
+ [
+ 17,
+ "oneway-spaced-white-large"
+ ]
+ ]
+ },
+ "icon-ignore-placement": false,
+ "symbol-spacing": 250
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-color",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "oneway",
+ 1
+ ],
+ [
+ "in",
+ "class",
+ "main",
+ "street",
+ "street_limited"
+ ],
+ [
+ "!=",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-spaced-small"
+ ],
+ [
+ 17,
+ "oneway-spaced-large"
+ ]
+ ]
+ },
+ "icon-ignore-placement": false,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 250
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "oneway",
+ 1
+ ],
+ [
+ "any",
+ [
+ "in",
+ "class",
+ "motorway",
+ "motorway_link"
+ ],
+ [
+ "in",
+ "type",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-spaced-white-small"
+ ],
+ [
+ 17,
+ "oneway-spaced-white-large"
+ ]
+ ]
+ },
+ "icon-ignore-placement": false,
+ "icon-padding": 2,
+ "symbol-spacing": 250
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-color",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "oneway",
+ 1
+ ],
+ [
+ "in",
+ "class",
+ "main",
+ "street",
+ "street_limited"
+ ],
+ [
+ "!=",
+ "type",
+ "trunk"
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-spaced-small"
+ ],
+ [
+ 17,
+ "oneway-spaced-large"
+ ]
+ ]
+ },
+ "icon-ignore-placement": false,
+ "symbol-spacing": 250
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-white",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "bridge",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "oneway",
+ 1
+ ],
+ [
+ "any",
+ [
+ "in",
+ "class",
+ "motorway",
+ "motorway_link"
+ ],
+ [
+ "in",
+ "type",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-spaced-white-small"
+ ],
+ [
+ 17,
+ "oneway-spaced-white-large"
+ ]
+ ]
+ },
+ "icon-ignore-placement": false,
+ "symbol-spacing": 250
+ },
+ "paint": {}
+ },
+ {
+ "id": "housenum-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "housenum_label",
+ "minzoom": 17,
+ "maxzoom": 22,
+ "interactive": true,
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{house_num}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 4,
+ "text-max-width": 7,
+ "text-size": 9.5
+ },
+ "paint": {
+ "text-color": "#b2aca5",
+ "text-halo-color": "#e8e0cc",
+ "text-halo-width": 1.5,
+ "text-halo-blur": 0
+ }
+ },
+ {
+ "id": "contour-index-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "contour",
+ "minzoom": 14,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "index",
+ 5
+ ]
+ ],
+ "layout": {
+ "text-field": "{ele} m",
+ "symbol-placement": "line",
+ "text-max-angle": 25,
+ "visibility": "visible",
+ "text-padding": 5,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": 9.5
+ },
+ "paint": {
+ "text-color": "#a7a696",
+ "text-halo-width": 1,
+ "text-halo-blur": 1,
+ "text-halo-color": "rgba(237,233,217, 0.25)"
+ }
+ },
+ {
+ "id": "waterway-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "waterway_label",
+ "minzoom": 12,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "river"
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "visibility": "visible",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-max-angle": 30,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 12
+ ],
+ [
+ 18,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-width": 0.5,
+ "text-halo-color": "#ffffff",
+ "text-color": "#004087",
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-scalerank4-l15",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 17,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "rail-light",
+ "rail-metro",
+ "rail",
+ "airport",
+ "airfield",
+ "heliport",
+ "rocket",
+ "park",
+ "golf",
+ "cemetery",
+ "zoo",
+ "campsite",
+ "swimming",
+ "dog-park"
+ ],
+ [
+ "in",
+ "scalerank",
+ 4
+ ],
+ [
+ ">=",
+ "localrank",
+ 15
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "icon-image": "{maki}-11",
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#65513d",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "poi-scalerank4-l1",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 16,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "rail-light",
+ "rail-metro",
+ "rail",
+ "airport",
+ "airfield",
+ "heliport",
+ "rocket",
+ "park",
+ "golf",
+ "cemetery",
+ "zoo",
+ "campsite",
+ "swimming",
+ "dog-park"
+ ],
+ [
+ "in",
+ "scalerank",
+ 4
+ ],
+ [
+ "<=",
+ "localrank",
+ 14
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "icon-image": "{maki}-11",
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 1,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#65513d",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "poi-parks_scalerank4",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 16,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "maki",
+ "park",
+ "cemetery",
+ "golf",
+ "zoo",
+ "playground"
+ ],
+ [
+ "in",
+ "scalerank",
+ 4
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "icon-image": "{maki}-11",
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 1,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#4c661f",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "poi-scalerank3",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "rail-light",
+ "rail-metro",
+ "rail",
+ "airport",
+ "airfield",
+ "heliport",
+ "rocket",
+ "park",
+ "golf",
+ "cemetery",
+ "zoo",
+ "campsite",
+ "swimming",
+ "dog-park"
+ ],
+ [
+ "in",
+ "scalerank",
+ 3
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "icon-image": "{maki}-11",
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 1,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#65513d",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "poi-parks-scalerank3",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "maki",
+ "park",
+ "cemetery",
+ "golf",
+ "zoo"
+ ],
+ [
+ "in",
+ "scalerank",
+ 3
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "icon-image": "{maki}-11",
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#4c661f",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "road-label-small",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "road_label",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "main",
+ "street_limited",
+ "street"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "text-ignore-placement": false,
+ "text-max-angle": 30,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-padding": 1,
+ "visibility": "visible",
+ "text-rotation-alignment": "map",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 10
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#3a3836",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1.25,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "road-label-medium",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "road_label",
+ "minzoom": 11,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "street",
+ "street_limited"
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "text-max-angle": 30,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-padding": 1,
+ "visibility": "visible",
+ "text-rotation-alignment": "map",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 10
+ ],
+ [
+ 20,
+ 14
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#3a3836",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "road-label-large",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "road_label",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "main",
+ "motorway"
+ ]
+ ],
+ "layout": {
+ "text-allow-overlap": false,
+ "text-ignore-placement": false,
+ "text-max-angle": 30,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-padding": 1,
+ "visibility": "visible",
+ "text-rotation-alignment": "map",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 9,
+ 10
+ ],
+ [
+ 20,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#3a3836",
+ "text-halo-color": "rgba(255,255,255, 0.75)",
+ "text-halo-width": 1,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "other-motorway-shields",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "road_label",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "shield",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex"
+ ],
+ [
+ "<=",
+ "reflen",
+ 6
+ ]
+ ],
+ "layout": {
+ "text-allow-overlap": false,
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{shield}-{reflen}-small"
+ ],
+ [
+ 16,
+ "{shield}-{reflen}-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "viewport",
+ "symbol-avoid-edges": false,
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 100
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 9
+ ],
+ [
+ 16.01,
+ 11
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#3a3836",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "interstate_motorway_shields",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "road_label",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "shield",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex"
+ ],
+ [
+ "<=",
+ "reflen",
+ 6
+ ]
+ ],
+ "layout": {
+ "text-allow-overlap": false,
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{shield}-{reflen}-small"
+ ],
+ [
+ 16,
+ "{shield}-{reflen}-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "viewport",
+ "symbol-avoid-edges": false,
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 100
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 9
+ ],
+ [
+ 16.01,
+ 11
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#fff",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "poi-scalerank2",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 13,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "rail-light",
+ "rail-metro",
+ "rail",
+ "airport",
+ "airfield",
+ "heliport",
+ "rocket",
+ "park",
+ "golf",
+ "cemetery",
+ "zoo",
+ "campsite",
+ "swimming",
+ "dog-park"
+ ],
+ [
+ "in",
+ "scalerank",
+ 2
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "icon-image": {
+ "stops": [
+ [
+ 14,
+ "{maki}-11"
+ ],
+ [
+ 15,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1.25
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 11
+ ],
+ [
+ 20,
+ 14
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#65513d",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1.25
+ }
+ },
+ {
+ "id": "poi-parks-scalerank2",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 13,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "maki",
+ "park",
+ "golf",
+ "cemetery",
+ "zoo",
+ "campsite",
+ "swimming",
+ "dog-park"
+ ],
+ [
+ "in",
+ "scalerank",
+ 2
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "icon-image": {
+ "stops": [
+ [
+ 14,
+ "{maki}-11"
+ ],
+ [
+ 15,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1.25
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 11
+ ],
+ [
+ 20,
+ 14
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#4c661f",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1.25
+ }
+ },
+ {
+ "id": "rail-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 12,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "Rail Station"
+ ]
+ ],
+ "layout": {
+ "icon-image": "{network}-11",
+ "symbol-avoid-edges": true,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "icon-allow-overlap": false,
+ "symbol-placement": "point",
+ "text-justify": "center",
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ ""
+ ],
+ [
+ 13,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.02,
+ "icon-padding": 0,
+ "text-max-width": 7,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#65513d",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1.5,
+ "icon-halo-width": 4,
+ "icon-halo-color": "#fff",
+ "text-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "water-label-sm",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "water_label",
+ "minzoom": 15,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "area",
+ 10000
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "visibility": "visible",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 13
+ ],
+ [
+ 20,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-width": 0,
+ "text-halo-color": "#ffffff",
+ "text-color": "#004087",
+ "text-halo-blur": 1.5
+ }
+ },
+ {
+ "id": "water-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "water_label",
+ "minzoom": 5,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ ">",
+ "area",
+ 10000
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "visibility": "visible",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 13
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-width": 0,
+ "text-halo-color": "#ffffff",
+ "text-color": "#004087",
+ "text-halo-blur": 1.5
+ }
+ },
+ {
+ "id": "poi-parks-scalerank1",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "maki",
+ "park",
+ "golf",
+ "cemetery",
+ "zoo",
+ "campsite",
+ "swimming",
+ "dog-park"
+ ],
+ [
+ "<=",
+ "scalerank",
+ 1
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "icon-image": {
+ "stops": [
+ [
+ 13,
+ "{maki}-11"
+ ],
+ [
+ 14,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 14
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#4c661f",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1,
+ "text-halo-blur": 0
+ }
+ },
+ {
+ "id": "poi-scalerank1",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "rail-light",
+ "rail-metro",
+ "rail",
+ "airport",
+ "airfield",
+ "heliport",
+ "rocket",
+ "park",
+ "golf",
+ "cemetery",
+ "zoo",
+ "campsite",
+ "swimming",
+ "dog-park"
+ ],
+ [
+ "<=",
+ "scalerank",
+ 1
+ ],
+ [
+ "!=",
+ "type",
+ "Island"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "icon-image": {
+ "stops": [
+ [
+ 13,
+ "{maki}-11"
+ ],
+ [
+ 14,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 1
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 14
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#65513d",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "airport-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 9,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "maki",
+ "airport",
+ "heliport",
+ "rocket"
+ ],
+ [
+ "<=",
+ "scalerank",
+ 2
+ ]
+ ],
+ "layout": {
+ "text-allow-overlap": false,
+ "icon-image": {
+ "stops": [
+ [
+ 12,
+ "{maki}-11"
+ ],
+ [
+ 13,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-ignore-placement": false,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 12,
+ [
+ 0,
+ 1
+ ]
+ ],
+ [
+ 13,
+ [
+ 0,
+ 1.25
+ ]
+ ]
+ ]
+ },
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "stops": [
+ [
+ 12,
+ "{ref}"
+ ],
+ [
+ 13,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.02,
+ "text-max-width": 9,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 12
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#000000",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1.25
+ }
+ },
+ {
+ "id": "poi-islets",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "Islet"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 0
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "center",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 8,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 14,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#65513d",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "place-neighbourhood",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "neighbourhood"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-transform": "uppercase",
+ "text-letter-spacing": 0.1,
+ "text-max-width": 7,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 3,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 12,
+ 11
+ ],
+ [
+ 16,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "rgba(255,255,255, 0.5)",
+ "text-halo-width": 1.75,
+ "text-color": "#805540",
+ "text-halo-blur": 0
+ }
+ },
+ {
+ "id": "place-suburb",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "suburb"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-letter-spacing": 0.15,
+ "text-max-width": 7,
+ "text-padding": 3,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 11
+ ],
+ [
+ 15,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "rgba(255,255,255, 0.5)",
+ "text-halo-width": 1.75,
+ "text-color": "#805540"
+ }
+ },
+ {
+ "id": "place-hamlet",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "hamlet"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 12,
+ 11.5
+ ],
+ [
+ 15,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1.25,
+ "text-color": "#000000"
+ }
+ },
+ {
+ "id": "place-village",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 8,
+ "maxzoom": 15,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "village"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11.5
+ ],
+ [
+ 16,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1.25,
+ "text-color": "#000000"
+ }
+ },
+ {
+ "id": "place-town",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 6,
+ "maxzoom": 15,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "town"
+ ]
+ ],
+ "layout": {
+ "icon-image": "circle.sdf",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 12,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "visibility": "visible",
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ 0,
+ -0.15
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ 11.5
+ ],
+ [
+ 15,
+ 20
+ ]
+ ]
+ },
+ "icon-size": 0.3
+ },
+ "paint": {
+ "text-color": "#000000",
+ "icon-halo-blur": 1,
+ "icon-halo-color": "#ffffff",
+ "icon-halo-width": 1,
+ "icon-color": "#000000",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1.25,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "poi-islands",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 0,
+ "maxzoom": 22,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "type",
+ "Island"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-allow-overlap": false,
+ "text-ignore-placement": false,
+ "text-max-angle": 38,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "point",
+ "text-padding": 2,
+ "visibility": "visible",
+ "text-offset": [
+ 0,
+ 0
+ ],
+ "icon-optional": false,
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "center",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.02,
+ "text-max-width": 7,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#65513d",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "place-city-sm",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 0,
+ "maxzoom": 14,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "scalerank",
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "in",
+ "type",
+ "city"
+ ]
+ ],
+ "layout": {
+ "icon-image": "circle.sdf",
+ "text-transform": "none",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "visibility": "visible",
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ -0.2
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 12
+ ],
+ [
+ 14,
+ 22
+ ]
+ ]
+ },
+ "icon-size": 0.3
+ },
+ "paint": {
+ "text-color": "#000000",
+ "icon-halo-blur": 1,
+ "icon-halo-color": "#ffffff",
+ "icon-halo-width": 1,
+ "icon-color": "#000000",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1.25,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "place-city-md-s",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 0,
+ "maxzoom": 14,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "scalerank",
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "in",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "S",
+ "SE",
+ "SW",
+ "E"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "icon-image": "circle.sdf",
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "top"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ 0.1
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 5,
+ 12
+ ],
+ [
+ 12,
+ 22
+ ]
+ ]
+ },
+ "icon-size": 0.35
+ },
+ "paint": {
+ "text-halo-width": 1,
+ "text-halo-color": "#ffffff",
+ "text-color": "#000000",
+ "text-halo-blur": 1,
+ "icon-color": "#000000",
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "place-city-md-n",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 0,
+ "maxzoom": 14,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "scalerank",
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "in",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "N",
+ "NE",
+ "NW",
+ "W"
+ ]
+ ],
+ "layout": {
+ "icon-image": "circle.sdf",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "visibility": "visible",
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ -0.25
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 5,
+ 12
+ ],
+ [
+ 12,
+ 22
+ ]
+ ]
+ },
+ "icon-size": 0.35
+ },
+ "paint": {
+ "text-color": "#000000",
+ "icon-halo-blur": 1,
+ "icon-halo-color": "#ffffff",
+ "icon-halo-width": 1,
+ "icon-color": "#000000",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ },
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "place-city-lg-s",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 1,
+ "maxzoom": 14,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ [
+ "in",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "S",
+ "SE",
+ "SW",
+ "E"
+ ]
+ ],
+ "layout": {
+ "icon-image": "circle.sdf",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "visibility": "visible",
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ 0.15
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "top"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 4,
+ 12
+ ],
+ [
+ 10,
+ 22
+ ]
+ ]
+ },
+ "icon-size": 0.4
+ },
+ "paint": {
+ "text-color": "#000000",
+ "icon-halo-blur": 1,
+ "icon-halo-color": "#ffffff",
+ "icon-halo-width": 1,
+ "icon-color": "#000000",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ },
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "place-city-lg-n",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 1,
+ "maxzoom": 14,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ [
+ "in",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "N",
+ "NE",
+ "NW",
+ "W"
+ ]
+ ],
+ "layout": {
+ "icon-image": "circle.sdf",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "visibility": "visible",
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ -0.25
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 4,
+ 12
+ ],
+ [
+ 10,
+ 22
+ ]
+ ]
+ },
+ "icon-size": 0.4
+ },
+ "paint": {
+ "text-color": "#000000",
+ "icon-halo-blur": 1,
+ "icon-halo-color": "#ffffff",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "#000000",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ },
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "marine-label-sm-ln",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 3,
+ "maxzoom": 10,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ ">=",
+ "labelrank",
+ 4
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.1,
+ "text-max-width": 5,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 4,
+ 100
+ ],
+ [
+ 6,
+ 400
+ ]
+ ]
+ },
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 12
+ ],
+ [
+ 6,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#c8e5f9"
+ }
+ },
+ {
+ "id": "marine-label-sm-pt",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 3,
+ "maxzoom": 10,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ ">=",
+ "labelrank",
+ 4
+ ],
+ [
+ "in",
+ "$type",
+ "Point"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-max-width": 5,
+ "text-letter-spacing": 0.1,
+ "text-line-height": 1.5,
+ "symbol-placement": "point",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 12
+ ],
+ [
+ 6,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#c8e5f9"
+ }
+ },
+ {
+ "id": "marine-label-md-ln",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 2,
+ "maxzoom": 8,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "labelrank",
+ 2,
+ 3
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.15,
+ "text-max-width": 5,
+ "symbol-spacing": 250,
+ "text-size": {
+ "base": 1.1,
+ "stops": [
+ [
+ 2,
+ 12
+ ],
+ [
+ 5,
+ 20
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#c8e5f9"
+ }
+ },
+ {
+ "id": "marine-label-md-pt",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 2,
+ "maxzoom": 8,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "labelrank",
+ 2,
+ 3
+ ],
+ [
+ "in",
+ "$type",
+ "Point"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-max-width": 5,
+ "text-letter-spacing": 0.15,
+ "text-line-height": 1.5,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1.1,
+ "stops": [
+ [
+ 2,
+ 14
+ ],
+ [
+ 5,
+ 20
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#c8e5f9"
+ }
+ },
+ {
+ "id": "marine-label-lg-ln",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 1,
+ "maxzoom": 4,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "labelrank",
+ 1
+ ],
+ [
+ "in",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-max-width": 4,
+ "text-letter-spacing": 0.25,
+ "text-line-height": 1.1,
+ "symbol-placement": "line",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 1,
+ 14
+ ],
+ [
+ 4,
+ 30
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#c8e5f9"
+ }
+ },
+ {
+ "id": "marine-label-lg-pt",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 1,
+ "maxzoom": 4,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "labelrank",
+ 1
+ ],
+ [
+ "in",
+ "$type",
+ "Point"
+ ]
+ ],
+ "layout": {
+ "visibility": "visible",
+ "text-field": "{name_en}",
+ "text-max-width": 4,
+ "text-letter-spacing": 0.25,
+ "text-line-height": 1.5,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 1,
+ 14
+ ],
+ [
+ 4,
+ 30
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#c8e5f9"
+ }
+ },
+ {
+ "id": "state-label-sm",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "state_label",
+ "minzoom": 3,
+ "maxzoom": 9,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "<",
+ "area",
+ 20000
+ ]
+ ],
+ "layout": {
+ "text-allow-overlap": false,
+ "text-ignore-placement": false,
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "visibility": "visible",
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{abbr}"
+ ],
+ [
+ 6,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.15,
+ "text-max-width": 5,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 10
+ ],
+ [
+ 9,
+ 14
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-opacity": 1,
+ "text-color": "#242424",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "state-label-md",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "state_label",
+ "minzoom": 3,
+ "maxzoom": 8,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "<",
+ "area",
+ 80000
+ ],
+ [
+ ">=",
+ "area",
+ 20000
+ ]
+ ],
+ "layout": {
+ "text-allow-overlap": false,
+ "text-ignore-placement": false,
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "visibility": "visible",
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{abbr}"
+ ],
+ [
+ 5,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.15,
+ "text-max-width": 6,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ 10
+ ],
+ [
+ 8,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-opacity": 1,
+ "text-color": "#242424",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "state-label-lg",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "state_label",
+ "minzoom": 3,
+ "maxzoom": 7,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ ">=",
+ "area",
+ 80000
+ ]
+ ],
+ "layout": {
+ "text-allow-overlap": false,
+ "text-ignore-placement": false,
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "text-padding": 1,
+ "visibility": "visible",
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{abbr}"
+ ],
+ [
+ 4,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.15,
+ "text-max-width": 6,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 4,
+ 10
+ ],
+ [
+ 7,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-opacity": 1,
+ "text-color": "#242424",
+ "text-halo-color": "#ffffff",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "country-label-sm",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "country_label",
+ "minzoom": 1,
+ "maxzoom": 10,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ ">=",
+ "scalerank",
+ 5
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "visibility": "visible",
+ "text-max-width": 6,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 5,
+ 14
+ ],
+ [
+ 9,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#000000",
+ "text-halo-color": {
+ "base": 1,
+ "stops": [
+ [
+ 2,
+ "rgba(255,255,255,0.75)"
+ ],
+ [
+ 3,
+ "#ffffff"
+ ]
+ ]
+ },
+ "text-halo-width": 1.25
+ }
+ },
+ {
+ "id": "country-label-md",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "country_label",
+ "minzoom": 1,
+ "maxzoom": 8,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "scalerank",
+ 3,
+ 4
+ ]
+ ],
+ "layout": {
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{code}"
+ ],
+ [
+ 2,
+ "{name_en}"
+ ]
+ ]
+ },
+ "visibility": "visible",
+ "text-max-width": 6,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 10
+ ],
+ [
+ 8,
+ 24
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#000000",
+ "text-halo-color": {
+ "base": 1,
+ "stops": [
+ [
+ 2,
+ "rgba(255,255,255,0.75)"
+ ],
+ [
+ 3,
+ "#ffffff"
+ ]
+ ]
+ },
+ "text-halo-width": 1.25
+ }
+ },
+ {
+ "id": "country-label-lg",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "country_label",
+ "minzoom": 1,
+ "maxzoom": 7,
+ "interactive": true,
+ "filter": [
+ "all",
+ [
+ "in",
+ "scalerank",
+ 1,
+ 2
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "visibility": "visible",
+ "text-max-width": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ 5
+ ],
+ [
+ 3,
+ 6
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 1,
+ 10
+ ],
+ [
+ 6,
+ 24
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "#000000",
+ "text-halo-color": {
+ "base": 1,
+ "stops": [
+ [
+ 2,
+ "rgba(255,255,255,0.75)"
+ ],
+ [
+ 3,
+ "#ffffff"
+ ]
+ ]
+ },
+ "text-halo-width": 1.25
+ }
+ }
+ ],
+ "owner": "nicki",
+ "modified": "2015-05-07T16:43:40.332Z",
+ "created": "2015-05-07T16:00:16.592Z",
+ "id": "nicki.7bfc461f"
+}
diff --git a/platform/ios/benchmark/assets/tiles/download.sh b/platform/ios/benchmark/assets/tiles/download.sh
new file mode 100755
index 0000000000..f44dda18fd
--- /dev/null
+++ b/platform/ios/benchmark/assets/tiles/download.sh
@@ -0,0 +1,96 @@
+#!/usr/bin/env bash
+
+set -u
+
+LIST=(
+ # paris
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1037/704.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1037/705.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1038/704.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1038/705.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1036/704.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1037/703.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1036/705.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1038/703.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/11/1036/703.vector.pbf"
+
+ # paris2
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4150/2819.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4149/2819.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4150/2818.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4148/2819.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4149/2818.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4148/2818.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4150/2820.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4149/2820.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4149/2817.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/13/4148/2817.vector.pbf"
+
+ # alps
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/34/23.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/34/22.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/33/23.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/33/22.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/34/21.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/32/23.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/32/22.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/33/21.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/32/21.vector.pbf"
+
+ # us east
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/9/12.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/8/12.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/9/13.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/8/13.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/9/11.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/7/12.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/8/11.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/7/13.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/5/7/11.vector.pbf"
+
+ # greater la
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/88/204.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/88/205.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/89/204.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/89/205.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/87/204.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/88/203.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/87/205.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/89/203.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/9/87/203.vector.pbf"
+
+ # sf
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2621/6333.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2620/6333.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2621/6334.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2620/6334.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2621/6332.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2619/6333.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2620/6332.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2619/6334.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/14/2619/6332.vector.pbf"
+
+ # oakland
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/657/1582.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/657/1583.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/658/1582.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/658/1583.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/656/1582.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/657/1581.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/656/1583.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/658/1581.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/12/656/1581.vector.pbf"
+
+ # germany
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/34/20.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/33/20.vector.pbf"
+ "mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/6/32/20.vector.pbf"
+)
+
+for OUTPUT in ${LIST[@]} ; do
+ if [ ! -f "${OUTPUT}" ] ; then
+ mkdir -p "`dirname "${OUTPUT}"`"
+ echo "Downloading tile '${OUTPUT}'"
+ curl -# "https://a.tiles.mapbox.com/v4/${OUTPUT}?access_token=${MAPBOX_ACCESS_TOKEN}" | gunzip > "${OUTPUT}"
+ fi
+done
diff --git a/platform/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json b/platform/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json
new file mode 100644
index 0000000000..140aa48fa7
--- /dev/null
+++ b/platform/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6.json
@@ -0,0 +1 @@
+{"attribution":"<a href=\"https://www.mapbox.com/about/maps/\" target=\"_blank\">&copy; Mapbox</a> <a href=\"http://www.openstreetmap.org/about/\" target=\"_blank\">&copy; OpenStreetMap</a> <a class=\"mapbox-improve-map\" href=\"https://www.mapbox.com/map-feedback/\" target=\"_blank\">Improve this map</a>","bounds":[-180,-85.0511,180,85.0511],"center":[0,0,0],"format":"pbf","maxzoom":15,"minzoom":0,"name":"Mapbox Streets V6 + Vector Terrain V2","scheme":"xyz","tilejson":"2.0.0","tiles":["asset://tiles/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v6/{z}/{x}/{y}.vector.pbf"],"vector_layers":[{"description":"Generalized landcover classification","fields":{"class":"One of: wood, scrub, grass, crop, snow"},"id":"landcover","maxzoom":22,"minzoom":0,"source":"mapbox.mapbox-terrain-v2"},{"description":"","fields":{"class":"One of: shadow, highlight","level":"Brightness %. One of: 94, 90, 89, 78, 67, 56"},"id":"hillshade","maxzoom":22,"minzoom":0,"source":"mapbox.mapbox-terrain-v2"},{"description":"Elevation contour polygons","fields":{"ele":"Integer. The elevation of the contour in meters","index":"Indicator for every 2nd, 5th, or 10th contour. Coastlines are given -1. One of: 2, 5, 10, -1, null"},"id":"contour","maxzoom":22,"minzoom":0,"source":"mapbox.mapbox-terrain-v2"},{"description":"","fields":{"class":"One of: park, cemetery, hospital, school, industrial, parking, pitch, piste, agriculture, wood, scrub, grass, sand, rock, glacier","osm_id":"Unique OSM ID number","type":"OSM tag, more specific than class"},"id":"landuse","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: river, canal, stream, stream_intermittent, ditch, drain","osm_id":"Unique OSM ID number","type":"One of: river, canal, stream, ditch, drain"},"id":"waterway","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"osm_id":"Unique OSM ID number"},"id":"water","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"osm_id":"Unique OSM ID number","type":"One of: runway, taxiway, apron"},"id":"aeroway","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: fence, hedge, cliff, gate, land","osm_id":"Unique OSM ID number"},"id":"barrier_line","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"osm_id":"Unique OSM ID number"},"id":"building","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: wetland, wetland_noveg","osm_id":"Unique OSM ID number"},"id":"landuse_overlay","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: motorway, motorway_link, main, street, street_limited, service, driveway, path, major_rail, minor_rail","layer":"Number used for ordering overlapping tunnels. May be any integer, but most common values are -1 to -5","oneway":"Number. Oneway roads are 1, all others are 0","osm_id":"Unique OSM ID number","type":"The value of the tunnel's highway tag"},"id":"tunnel","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: motorway, motorway_link, main, street, street_limited, service, driveway, path, major_rail, minor_rail","oneway":"Number. Oneway roads are 1, all others are 0","osm_id":"Unique OSM ID number","type":"The value of the road's highway tag"},"id":"road","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: motorway, motorway_link, main, street, street_limited, service, driveway, path, major_rail, minor_rail, aerialway","layer":"Number used for ordering overlapping bridges. May be any integer, but most common values are 1 to 5","oneway":"Number. Oneway bridges are 1, all others are 0","osm_id":"Unique OSM ID number","type":"The value of the bridge's highway tag"},"id":"bridge","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"admin_level":"The OSM administrative level of the boundary. One of: 2, 3, 4","disputed":"Number. Disputed boundaries are 1, all others are 0","maritime":"Number. Maritime boundaries are 1, all others are 0"},"id":"admin","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"code":"ISO 3166-1 Alpha-2 code","name":"Local name of the country","name_de":"German name of the country","name_en":"English name of the country","name_es":"Spanish name of the country","name_fr":"French name of the country","name_ru":"Russian name of the country","name_zh":"Chinese name of the country","osm_id":"Unique OSM ID number","parent":"ISO 3166-1 Alpha-2 code of the administering/parent state, if any","scalerank":"Number, 1-6. Useful for styling text sizes","type":"One of: country, territory, disputed territory, sar"},"id":"country_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"labelrank":"Number, 1-6. Useful for styling text sizes","name":"Local or international name of the water body","name_de":"German name of the water body","name_en":"English name of the water body","name_es":"Spanish name of the water body","name_fr":"French name of the water body","name_ru":"Russian name of the water body","name_zh":"Chinese name of the water body","placement":"One of: point, line"},"id":"marine_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"abbr":"Abbreviated state name","area":"The area of the state in kilometers²","name":"Local name of the state","name_de":"German name of the state","name_en":"English name of the state","name_es":"Spanish name of the state","name_fr":"French name of the state","name_ru":"Russian name of the state","name_zh":"Chinese name of the state","osm_id":"Unique OSM ID number"},"id":"state_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"capital":"Admin level the city is a capital of, if any. One of: 2, 3, 4, null","ldir":"A hint for label placement at low zoom levels. One of: N, E, S, W, NE, SE, SW, NW, null","localrank":"Number. Priority relative to nearby places. Useful for limiting label density","name":"Local name of the place","name_de":"German name of the place","name_en":"English name of the place","name_es":"Spanish name of the place","name_fr":"French name of the place","name_ru":"Russian name of the place","name_zh":"Chinese name of the place","osm_id":"Unique OSM ID number","scalerank":"Number, 0-9 or null. Useful for styling text & marker sizes","type":"One of: city, town, village, hamlet, suburb, neighbourhood"},"id":"place_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"area":"The area of the water polygon in Mercator meters²","name":"Local name of the water body","name_de":"German name of the water body","name_en":"English name of the water body","name_es":"Spanish name of the water body","name_fr":"French name of the water body","name_ru":"Russian name of the water body","name_zh":"Chinese name of the water body","osm_id":"Unique OSM ID number"},"id":"water_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"address":"Street address of the POI","localrank":"Number. Priority relative to nearby POIs. Useful for limiting label density","maki":"The name of the Maki icon that should be used for the POI","name":"Local name of the POI","name_de":"German name of the POI","name_en":"English name of the POI","name_es":"Spanish name of the POI","name_fr":"French name of the POI","name_ru":"Russian name of the POI","name_zh":"Chinese name of the POI","network":"For rail stations, the network(s) that the station serves. Useful for icon styling","osm_id":"Unique OSM ID number","ref":"Short reference code, if any","scalerank":"Number. 1-4. Useful for styling icon sizes and minimum zoom levels","type":"The original OSM tag value","website":"URL of the POI"},"id":"poi_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: motorway, motorway_link, main, street, street_limited, service, driveway, path","len":"Number. Length of the road segment in Mercator meters","localrank":"Number. Used for shield points only. Priority relative to nearby shields. Useful for limiting shield density","name":"Local name of the road","name_de":"German name of the road","name_en":"English name of the road","name_es":"Spanish name of the road","name_fr":"French name of the road","name_ru":"Russian name of the road","name_zh":"Chinese name of the road","osm_id":"Unique OSM ID number","ref":"Route number of the road","reflen":"Number. How many characters long the ref tag is. Useful for shield styling","shield":"The shield style to use. One of: default, mx-federal, mx-state, us-highway, us-highway-alternate, us-highway-business, us-highway-duplex, us-interstate, us-interstate-business, us-interstate-duplex, us-interstate-truck, us-state"},"id":"road_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"class":"One of: river, canal, stream, stream_intermittent","name":"Local name of the waterway","name_de":"German name of the waterway","name_en":"English name of the waterway","name_es":"Spanish name of the waterway","name_fr":"French name of the waterway","name_ru":"Russian name of the waterway","name_zh":"Chinese name of the waterway","osm_id":"Unique OSM ID number","type":"One of: river, canal, stream"},"id":"waterway_label","source":"mapbox.mapbox-streets-v6"},{"description":"","fields":{"house_num":"House number","osm_id":"Unique OSM ID number"},"id":"housenum_label","source":"mapbox.mapbox-streets-v6"}]}
diff --git a/platform/ios/benchmark/benchmark-ios.gypi b/platform/ios/benchmark/benchmark-ios.gypi
new file mode 100644
index 0000000000..3b1efa6d73
--- /dev/null
+++ b/platform/ios/benchmark/benchmark-ios.gypi
@@ -0,0 +1,61 @@
+{
+ 'includes': [
+ '../../../gyp/common.gypi',
+ ],
+ 'targets': [
+ { 'target_name': 'ios-bench',
+ 'product_name': 'Bench GL',
+ 'type': 'executable',
+ 'product_extension': 'app',
+ 'mac_bundle': 1,
+ 'mac_bundle_resources': [
+ '<!@(find ../platform/ios/benchmark/img -type f)',
+ 'assets/glyphs',
+ 'assets/sprites',
+ 'assets/tiles',
+ ],
+
+ 'dependencies': [
+ 'mbgl.gyp:core',
+ 'mbgl.gyp:platform-<(platform_lib)',
+ 'mbgl.gyp:http-<(http_lib)',
+ 'mbgl.gyp:asset-<(asset_lib)',
+ ],
+
+ 'sources': [
+ './main.m',
+ './MBXBenchAppDelegate.h',
+ './MBXBenchAppDelegate.m',
+ './MBXBenchViewController.h',
+ './MBXBenchViewController.mm',
+ './locations.hpp',
+ './locations.cpp',
+ ],
+
+ 'xcode_settings': {
+ 'SDKROOT': 'iphoneos',
+ 'SUPPORTED_PLATFORMS': 'iphoneos',
+ 'IPHONEOS_DEPLOYMENT_TARGET': '7.0',
+ 'INFOPLIST_FILE': '../platform/ios/benchmark/app-info.plist',
+ 'TARGETED_DEVICE_FAMILY': '1,2',
+ 'COMBINE_HIDPI_IMAGES': 'NO', # don't merge @2x.png images into .tiff files
+ 'CLANG_ENABLE_OBJC_ARC': 'YES',
+ 'CLANG_ENABLE_MODULES': 'YES',
+ },
+
+ 'configurations': {
+ 'Debug': {
+ 'xcode_settings': {
+ 'CODE_SIGN_IDENTITY': 'iPhone Developer',
+ },
+ },
+ 'Release': {
+ 'xcode_settings': {
+ 'CODE_SIGN_IDENTITY': 'iPhone Distribution',
+ 'ARCHS': [ "arm64" ],
+ },
+ },
+ },
+ }
+ ]
+}
diff --git a/platform/ios/benchmark/img/Icon-40.png b/platform/ios/benchmark/img/Icon-40.png
new file mode 100644
index 0000000000..2425133189
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-40.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-40@2x.png b/platform/ios/benchmark/img/Icon-40@2x.png
new file mode 100644
index 0000000000..b827b1e5a1
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-40@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-40@3x.png b/platform/ios/benchmark/img/Icon-40@3x.png
new file mode 100644
index 0000000000..89c7119ac6
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-40@3x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-60.png b/platform/ios/benchmark/img/Icon-60.png
new file mode 100644
index 0000000000..409fad814a
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-60.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-60@2x.png b/platform/ios/benchmark/img/Icon-60@2x.png
new file mode 100644
index 0000000000..89c7119ac6
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-60@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-60@3x.png b/platform/ios/benchmark/img/Icon-60@3x.png
new file mode 100644
index 0000000000..158bcfe27e
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-60@3x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-72.png b/platform/ios/benchmark/img/Icon-72.png
new file mode 100644
index 0000000000..eecd90b5eb
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-72.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-72@2x.png b/platform/ios/benchmark/img/Icon-72@2x.png
new file mode 100644
index 0000000000..ca28d1fa05
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-72@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-76.png b/platform/ios/benchmark/img/Icon-76.png
new file mode 100644
index 0000000000..0ed2a26730
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-76.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-76@2x.png b/platform/ios/benchmark/img/Icon-76@2x.png
new file mode 100644
index 0000000000..311a1658a8
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-76@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small-50.png b/platform/ios/benchmark/img/Icon-Small-50.png
new file mode 100644
index 0000000000..a071034743
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-Small-50.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small-50@2x.png b/platform/ios/benchmark/img/Icon-Small-50@2x.png
new file mode 100644
index 0000000000..5d7c76d5e2
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-Small-50@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small.png b/platform/ios/benchmark/img/Icon-Small.png
new file mode 100644
index 0000000000..630d7c04c6
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-Small.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small@2x.png b/platform/ios/benchmark/img/Icon-Small@2x.png
new file mode 100644
index 0000000000..c0ee89211a
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-Small@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon-Small@3x.png b/platform/ios/benchmark/img/Icon-Small@3x.png
new file mode 100644
index 0000000000..436a8b404c
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon-Small@3x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon.png b/platform/ios/benchmark/img/Icon.png
new file mode 100644
index 0000000000..7af0c68a38
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon.png
Binary files differ
diff --git a/platform/ios/benchmark/img/Icon.svg b/platform/ios/benchmark/img/Icon.svg
new file mode 100644
index 0000000000..28df6f600d
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 15 15" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-miterlimit:1.41421;">
+ <image x="0" y="0" width="15px" height="15px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAQ0lEQVQokcXP2wkAIAxD0Sidvqu5jhTxVXdIPsz/4ZLi3hLkKgsBwOjsX3zBcztKeSvllQKeSlnCQ8GhfA5cHvfk8QNc8hvDN5gIKwAAAABJRU5ErkJggg=="/>
+ <path id="path7143" d="M9.48355,2.89095C8.18827,3.22425 6.67888,4.56018 5.90484,6.38831L4.93731,6.63727C4.23814,6.81719 3.97174,7.44212 3.83781,8.06502L3.65856,8.89868L5.40366,8.44963L7.68238,9.79563L8.13143,11.5407L8.77503,10.9814C9.25592,10.5634 9.67465,10.0284 9.49474,9.32928L9.24577,8.36174C10.4732,6.80143 10.9147,4.8347 10.5814,3.53941L10.3567,2.66627L9.48355,2.89095ZM8.40657,5.10044C8.73798,5.01516 9.08086,5.2177 9.16614,5.54911C9.25142,5.88052 9.04888,6.2234 8.71747,6.30868C8.38606,6.39396 8.04318,6.19142 7.9579,5.86001C7.87262,5.5286 8.07516,5.18572 8.40657,5.10044L8.40657,5.10044ZM5.41251,9.7356L5.18818,10.1154C4.86414,10.664 4.97269,11.7811 4.97269,11.7811C4.97269,11.7811 5.9677,11.3976 6.32753,10.7884L6.55187,10.4086L5.41251,9.7356Z" style="fill:white;fill-rule:nonzero;stroke-width:0.62px;stroke:white;"/>
+</svg>
diff --git a/platform/ios/benchmark/img/Icon@2x.png b/platform/ios/benchmark/img/Icon@2x.png
new file mode 100644
index 0000000000..ff5ea0c073
--- /dev/null
+++ b/platform/ios/benchmark/img/Icon@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/img/iTunesArtwork.png b/platform/ios/benchmark/img/iTunesArtwork.png
new file mode 100644
index 0000000000..f87c8734b5
--- /dev/null
+++ b/platform/ios/benchmark/img/iTunesArtwork.png
Binary files differ
diff --git a/platform/ios/benchmark/img/iTunesArtwork@2x.png b/platform/ios/benchmark/img/iTunesArtwork@2x.png
new file mode 100644
index 0000000000..8d456a126f
--- /dev/null
+++ b/platform/ios/benchmark/img/iTunesArtwork@2x.png
Binary files differ
diff --git a/platform/ios/benchmark/locations.cpp b/platform/ios/benchmark/locations.cpp
new file mode 100644
index 0000000000..9f53877e40
--- /dev/null
+++ b/platform/ios/benchmark/locations.cpp
@@ -0,0 +1,18 @@
+#include "locations.hpp"
+
+namespace mbgl {
+namespace bench {
+
+const std::vector<Location> locations = {
+ { "paris", 2.3411, 48.8664, 11, 0.0 },
+ { "paris2", 2.3516, 48.8356, 13, 273.8 },
+ { "alps", 10.6107, 46.9599, 6, 0.0 },
+ { "us east", -84.3395, 36.9400, 5, 0.0 },
+ { "greater la", -117.9529, 34.0259, 9, 0.0 },
+ { "sf", -122.4202, 37.7625, 14, 0.0 },
+ { "oakland", -122.2328, 37.8267, 12, 0.0 },
+ { "germany", 9.2280, 50.9262, 6, 0.0 },
+};
+
+}
+}
diff --git a/platform/ios/benchmark/locations.hpp b/platform/ios/benchmark/locations.hpp
new file mode 100644
index 0000000000..96f9c6025b
--- /dev/null
+++ b/platform/ios/benchmark/locations.hpp
@@ -0,0 +1,23 @@
+#ifndef MBGL_BENCH_LOCATIONS
+#define MBGL_BENCH_LOCATIONS
+
+#include <vector>
+#include <string>
+
+namespace mbgl {
+namespace bench {
+
+struct Location {
+ const std::string name;
+ const double longitude;
+ const double latitude;
+ const double zoom;
+ const double bearing;
+};
+
+extern const std::vector<Location> locations;
+
+}
+}
+
+#endif \ No newline at end of file
diff --git a/platform/ios/benchmark/main.m b/platform/ios/benchmark/main.m
new file mode 100644
index 0000000000..52bb445552
--- /dev/null
+++ b/platform/ios/benchmark/main.m
@@ -0,0 +1,10 @@
+#import <UIKit/UIKit.h>
+
+#import "MBXBenchAppDelegate.h"
+
+int main(int argc, char * argv[])
+{
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([MBXBenchAppDelegate class]));
+ }
+}