diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2015-05-05 11:38:27 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-05-05 11:53:20 +0200 |
commit | 24083c582c7308025ed05285ad9e82696c70658a (patch) | |
tree | bd77e509ea403eafe2e604eff4d18f246fd165aa | |
parent | 691c305467c5d503719743e69f73bf28f20894d5 (diff) | |
download | qtlocation-mapboxgl-24083c582c7308025ed05285ad9e82696c70658a.tar.gz |
[iOS] add benchmarking application
44 files changed, 8760 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore index 833025085a..fa3937dd28 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,7 @@ /src/shader/shaders_gles2.cpp /bin/style.bin.js *~ + +/ios/benchmark/assets/tiles/mapbox.mapbox-streets-v6/ +/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2/ +/ios/benchmark/assets/glyphs/DIN Offc Pro*/ @@ -120,7 +120,11 @@ ios-proj: Xcode/ios ios: XCPRETTY := $(shell ./scripts/xcpretty.sh) ios: Xcode/ios - xcodebuild -sdk iphoneos ARCHS="arm64 armv7 armv7s" PROVISIONING_PROFILE="2b532944-bf3d-4bf4-aa6c-a81676984ae8" -project ./build/ios/gyp/ios.xcodeproj -configuration Release -target iosapp -jobs $(JOBS) $(XCPRETTY) + xcodebuild -sdk iphoneos ARCHS="arm64 armv7 armv7s" PROVISIONING_PROFILE="19324a54-7455-4f0b-8e1c-e6957c718ebc" -project ./build/ios/gyp/ios.xcodeproj -configuration Release -target iosapp -jobs $(JOBS) $(XCPRETTY) + +ibench: XCPRETTY := $(shell ./scripts/xcpretty.sh) +ibench: Xcode/ios + xcodebuild -sdk iphoneos ARCHS="arm64" PROVISIONING_PROFILE="19324a54-7455-4f0b-8e1c-e6957c718ebc" -project ./build/ios/gyp/ios.xcodeproj -configuration Release -target ios-bench -jobs $(JOBS) $(XCPRETTY) isim: XCPRETTY := $(shell ./scripts/xcpretty.sh) isim: Xcode/ios diff --git a/gyp/ios.gyp b/gyp/ios.gyp index 989f34cb72..f26ec3772c 100644 --- a/gyp/ios.gyp +++ b/gyp/ios.gyp @@ -1,5 +1,6 @@ { 'includes': [ '../ios/app/mapboxgl-app.gypi', + '../ios/benchmark/benchmark-ios.gypi', ], } diff --git a/ios/benchmark/MBXBenchAppDelegate.h b/ios/benchmark/MBXBenchAppDelegate.h new file mode 100644 index 0000000000..b8f6c2e641 --- /dev/null +++ b/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/ios/benchmark/MBXBenchAppDelegate.m b/ios/benchmark/MBXBenchAppDelegate.m new file mode 100644 index 0000000000..e8fbd88d28 --- /dev/null +++ b/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/ios/benchmark/MBXBenchViewController.h b/ios/benchmark/MBXBenchViewController.h new file mode 100644 index 0000000000..c4439be5ec --- /dev/null +++ b/ios/benchmark/MBXBenchViewController.h @@ -0,0 +1,5 @@ +#import <UIKit/UIKit.h> + +@interface MBXBenchViewController : UIViewController + +@end diff --git a/ios/benchmark/MBXBenchViewController.mm b/ios/benchmark/MBXBenchViewController.mm new file mode 100644 index 0000000000..0ac6675276 --- /dev/null +++ b/ios/benchmark/MBXBenchViewController.mm @@ -0,0 +1,140 @@ +#import "MBXBenchViewController.h" + +#import <mbgl/ios/MGLMapView.h> +#import <mbgl/ios/MGLMapView_Private.h> + +#include "locations.hpp" + +#include <chrono> + +@interface MBXBenchViewController () <MGLMapViewDelegate> + +@property (nonatomic) MGLMapView *mapView; + +@end + +@implementation MBXBenchViewController + +#pragma mark - Setup + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + NSURL* url = [[NSURL alloc] initWithString:@"asset://styles/mapbox-streets-v7.json"]; + self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds accessToken:nil 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.mapView setDebugActive:NO]; + + [self startBenchmarkIteration]; + + [self.view addSubview:self.mapView]; + +} + +using Clock = std::chrono::steady_clock; +using TimePoint = Clock::time_point; +template <typename Duration> +inline int64_t Microseconds(Duration d) { + return std::chrono::duration_cast<std::chrono::microseconds>(d).count(); +} + +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)mapViewDidFinishRenderingMap:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered +{ + (void)mapView; + (void)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 invalidate]; + } + 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 invalidate]; + 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 invalidate]; + } + return; + } +} + +- (NSUInteger)supportedInterfaceOrientations +{ + return UIInterfaceOrientationMaskLandscape; +} + +@end diff --git a/ios/benchmark/app-info.plist b/ios/benchmark/app-info.plist new file mode 100644 index 0000000000..fe29fce2c1 --- /dev/null +++ b/ios/benchmark/app-info.plist @@ -0,0 +1,51 @@ +<?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>(c) 2015 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> +</dict> +</plist> diff --git a/ios/benchmark/assets/glyphs/download.sh b/ios/benchmark/assets/glyphs/download.sh new file mode 100755 index 0000000000..0ac1513827 --- /dev/null +++ b/ios/benchmark/assets/glyphs/download.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -u + +LIST=( + "DIN%20Offc%20Pro%20Regular%2c%20Arial%20Unicode%20MS%20Regular/0-255.pbf" + "DIN%20Offc%20Pro%20Medium%2c%20Arial%20Unicode%20MS%20Bold/0-255.pbf" + "DIN%20Offc%20Pro%20Medium%2c%20Arial%20Unicode%20MS%20Regular/0-255.pbf" + "DIN%20Offc%20Pro%20Medium%2c%20Arial%20Unicode%20MS%20Regular/8192-8447.pbf" + "DIN%20Offc%20Pro%20Bold%2c%20Arial%20Unicode%20MS%20Regular/0-255.pbf" + "DIN%20Offc%20Pro%20Regular%2c%20Arial%20Unicode%20MS%20Regular/256-511.pbf" + "DIN%20Offc%20Pro%20Regular%2c%20Arial%20Unicode%20MS%20Regular/8192-8447.pbf" + "DIN%20Offc%20Pro%20Italic%2c%20Arial%20Unicode%20MS%20Regular/0-255.pbf" + "DIN%20Offc%20Pro%20Medium%2c%20Arial%20Unicode%20MS%20Regular/256-511.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/ios/benchmark/assets/sprites/mapbox-streets.json b/ios/benchmark/assets/sprites/mapbox-streets.json new file mode 100644 index 0000000000..488bf335de --- /dev/null +++ b/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/ios/benchmark/assets/sprites/mapbox-streets.png b/ios/benchmark/assets/sprites/mapbox-streets.png Binary files differnew file mode 100644 index 0000000000..00925f91a2 --- /dev/null +++ b/ios/benchmark/assets/sprites/mapbox-streets.png diff --git a/ios/benchmark/assets/sprites/mapbox-streets@2x.json b/ios/benchmark/assets/sprites/mapbox-streets@2x.json new file mode 100644 index 0000000000..0a193fb4db --- /dev/null +++ b/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/ios/benchmark/assets/sprites/mapbox-streets@2x.png b/ios/benchmark/assets/sprites/mapbox-streets@2x.png Binary files differnew file mode 100644 index 0000000000..0d5bd533f7 --- /dev/null +++ b/ios/benchmark/assets/sprites/mapbox-streets@2x.png diff --git a/ios/benchmark/assets/styles/mapbox-streets-v7.json b/ios/benchmark/assets/styles/mapbox-streets-v7.json new file mode 100644 index 0000000000..62e0f66696 --- /dev/null +++ b/ios/benchmark/assets/styles/mapbox-streets-v7.json @@ -0,0 +1,3917 @@ +{ + "version": 7, + "name": "mapbox-streets", + "constants": { + "@poi-scalerank3": { + "base": 1, + "stops": [[16, 11], [20, 13]] + }, + "@label-neighbourhood": "#805540", + "@hillshade-shadow": "#5a5517", + "@road-width-minor": { + "base": 1.5, + "stops": [[14, 0.5], [18, 12]] + }, + "@poi-scalerank4": { + "base": 1, + "stops": [[16, 11], [20, 13]] + }, + "@wetlands": "#9DD3D8", + "@landuse-cemetery": "#dde6c2", + "@admin-2-boundary": { + "base": 1, + "stops": [[3, 0.5], [10, 2]] + }, + "@snow": "#fff", + "@path-opacity": { + "base": 1, + "stops": [[15, 0], [15.25, 1]] + }, + "@label-park": "#4c661f", + "@landuse-school": "#f3ebb4", + "@label-water-dark": "#004087", + "@road-main": "#a2a2a2", + "@road-case-dark": "#d9d3c9", + "@path-bg-width": { + "base": 1.5, + "stops": [[15, 2], [18, 7]] + }, + "@road-trunk": "#f2cf60", + "@road-motorway": "#ffa159", + "@road-minor": "#fff", + "@rail-track-width": { + "base": 1.5, + "stops": [[14, 4], [20, 8]] + }, + "@label-primary": "#000000", + "@street-high-opacity": { + "base": 1, + "stops": [[13.99, 0], [14, 1]] + }, + "@label-city-lg-size": { + "base": 0.9, + "stops": [[4, 12], [10, 22]] + }, + "@landuse-industrial": "#e0dae0", + "@landcover-opacity": { + "base": 1.5, + "stops": [[2, 0.3], [14, 0]] + }, + "@rail-width": { + "base": 1.5, + "stops": [[14, 0.5], [20, 1]] + }, + "@landuse-hospital": "#f4dcdc", + "@land": "#ede9d9", + "@name": "{name_en}", + "@landcover": "#ddecb1", + "@tunnel-case-dark": "#c4beb7", + "@aeroway": "#dbcedb", + "@label-city-md-size": { + "base": 0.9, + "stops": [[5, 12], [12, 22]] + }, + "@tunnel-trunk": "#f2de9e", + "@landuse-pitch": "#c3e194", + "@admin": "#787680", + "@road-case-width-sm": { + "base": 1.5, + "stops": [[12, 0.75], [20, 2]] + }, + "@label-poi": "#65513d", + "@main-width": { + "base": 1.5, + "stops": [[8.5, 0.5], [10, 0.75], [18, 26]] + }, + "@road-case-width-lg": { + "base": 1.5, + "stops": [[5, 0.75], [16, 2]] + }, + "@road-high-z-fadein": { + "base": 1.2, + "stops": [[5, 0], [5.5, 1]] + }, + "@rail": "#b3ada6", + "@country-halo": "rgba(255,255,255,0.75)", + "@hillshade-highlight": "#fff", + "@motorway-width": { + "base": 1.5, + "stops": [[5, 0.75], [18, 32]] + }, + "@country-label-color": { + "stops": [[8, "#000000"], [10, "#888888"]], + "base": 1 + }, + "@building": "#e8e0cc", + "@landuse-sand": "#ededcf", + "@road-trunk-case": "#fff", + "@ramp-1": { + "base": 1, + "stops": [[0, [1, 2]], [20, [1, 0.25]]] + }, + "@road-motorway-case": "#fff", + "@street_limited-width": { + "base": 1.5, + "stops": [[12.5, 0.5], [14, 2], [18, 12]] + }, + "@water": "#8ccbf7", + "@ramp-2": { + "base": 1, + "stops": [[14, [0.4, 0.4]], [15, [0.3, 0.3]], [16, [0.2, 0.2]], [18, [0.15, 0.15]], [19, [0.1, 0.1]]] + }, + "@label-state": "#242424", + "@landuse-parks": "#cde8a2", + "@street_limited-case-width": { + "base": 1.5, + "stops": [[13, 0], [14, 2], [18, 12]] + }, + "@motorway_link-width": { + "base": 1.5, + "stops": [[12, 0.5], [14, 2], [18, 18]] + }, + "@building-shadow": "#cbc6b7", + "@label-road": "#3a3836", + "@rail-low": "#ccc5bd", + "@label-transit": "#000000", + "@rail-lowhigh": { + "stops": [[13, "#d8d5c8"], [16, "#b3b1a6"]] + }, + "@street-case-gap-width": { + "base": 1.5, + "stops": [[13, 0], [14, 2], [18, 18]] + }, + "@halo": "#ffffff", + "@street-width": { + "base": 1.5, + "stops": [[12.5, 0.5], [14, 2], [18, 18]] + }, + "@main-case-width": { + "base": 1.2, + "stops": [[10, 0.75], [18, 2]] + }, + "@road-street-limited": "#EFEDEB", + "@landuse-glacier": "#dcedf9", + "@label-water": "#c8e5f9", + "@poi-scalerank1": { + "base": 1, + "stops": [[10, 11], [18, 14]] + }, + "@path-width": { + "base": 1.5, + "stops": [[15, 1], [18, 4]] + }, + "@tunnel-motorway": "#ffbe8c", + "@poi-scalerank2": { + "base": 1, + "stops": [[14, 11], [20, 14]] + } + }, + "sources": { + "mapbox://mapbox.mapbox-streets-v6": { + "url": "asset://tiles/mapbox.mapbox-streets-v6.json", + "type": "vector" + }, + "mapbox://mapbox.mapbox-terrain-v2": { + "url": "asset://tiles/mapbox.mapbox-terrain-v2.json", + "type": "vector" + } + }, + "sprite": "asset://sprites/mapbox-streets", + "glyphs": "asset://glyphs/{fontstack}/{range}.pbf", + "layers": [{ + "id": "background", + "type": "background", + "minzoom": 0, + "maxzoom": 22, + "layout": { + "visibility": "visible" + }, + "paint": { + "background-color": "@land" + } + }, { + "id": "landcover_crop", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "landcover", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "crop"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landcover", + "fill-opacity": "@landcover-opacity", + "fill-antialias": false + } + }, { + "id": "landcover_grass", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "landcover", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "grass"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landcover", + "fill-opacity": "@landcover-opacity", + "fill-antialias": false + } + }, { + "id": "landcover_scrub", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "landcover", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "scrub"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landcover", + "fill-opacity": "@landcover-opacity", + "fill-antialias": false + } + }, { + "id": "landcover_wood", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "landcover", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "wood"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landcover", + "fill-opacity": "@landcover-opacity", + "fill-antialias": false + } + }, { + "id": "landcover_snow", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "landcover", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "snow"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@snow", + "fill-opacity": 0.2, + "fill-antialias": false + } + }, { + "id": "parks", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "park"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landuse-parks", + "fill-opacity": { + "base": 1, + "stops": [[5, 0], [6, 1]] + } + } + }, { + "id": "scrub", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 9, + "maxzoom": 22, + "filter": ["all", ["in", "class", "scrub"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landcover", + "fill-opacity": { + "base": 1, + "stops": [[9, 0], [16, 0.2]] + } + } + }, { + "id": "grass", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 9, + "maxzoom": 22, + "filter": ["all", ["in", "class", "grass"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landcover", + "fill-opacity": { + "base": 1, + "stops": [[9, 0], [16, 0.4]] + } + } + }, { + "id": "wood", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 6, + "maxzoom": 22, + "filter": ["all", ["in", "class", "wood"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landcover", + "fill-opacity": { + "base": 1, + "stops": [[6, 0], [16, 0.5]] + } + } + }, { + "id": "hospital", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "hospital"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landuse-hospital" + } + }, { + "id": "glaciers", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 9, + "maxzoom": 22, + "filter": ["all", ["in", "class", "glacier"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landuse-glacier", + "fill-opacity": { + "base": 1, + "stops": [[9, 0], [10, 0.25]] + } + } + }, { + "id": "pitch", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "pitch"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landuse-pitch" + } + }, { + "id": "pitch-line", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["==", "class", "pitch"]], + "layout": {}, + "paint": { + "line-color": "#e1f2c6" + } + }, { + "id": "school", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "school"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landuse-school" + } + }, { + "id": "cemetery", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "cemetery"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landuse-cemetery" + } + }, { + "id": "industrial", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "industrial"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landuse-industrial" + } + }, { + "id": "sand", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "sand"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@landuse-sand" + } + }, { + "id": "hillshade_highlight_bright", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "hillshade", + "filter": ["all", ["==", "level", 94]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@hillshade-highlight", + "fill-opacity": { + "stops": [[15, 0.12], [18, 0]] + }, + "fill-antialias": false + } + }, { + "id": "hillshade_highlight_med", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "hillshade", + "filter": ["all", ["==", "level", 90]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@hillshade-highlight", + "fill-opacity": { + "stops": [[15, 0.12], [18, 0]] + }, + "fill-antialias": false + } + }, { + "id": "hillshade_shadow_faint", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "hillshade", + "filter": ["all", ["==", "level", 89]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@hillshade-shadow", + "fill-opacity": { + "stops": [[15, 0.05], [17, 0]] + }, + "fill-antialias": false + } + }, { + "id": "hillshade_shadow_med", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "hillshade", + "filter": ["all", ["==", "level", 78]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@hillshade-shadow", + "fill-opacity": { + "stops": [[15, 0.05], [17, 0]] + }, + "fill-antialias": false + } + }, { + "id": "hillshade_shadow_dark", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "hillshade", + "filter": ["all", ["==", "level", 67]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@hillshade-shadow", + "fill-opacity": { + "stops": [[15, 0.06], [17, 0]] + }, + "fill-antialias": false + } + }, { + "id": "hillshade_shadow_extreme", + "type": "fill", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "hillshade", + "filter": ["all", ["==", "level", 56]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@hillshade-shadow", + "fill-opacity": { + "stops": [[15, 0.06], [17, 0]] + }, + "fill-antialias": false + } + }, { + "id": "waterway-river", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "waterway", + "minzoom": 8, + "maxzoom": 22, + "filter": ["any", ["==", "class", "river"], ["==", "class", "canal"]], + "layout": { + "visibility": "visible", + "line-cap": { + "base": 1, + "stops": [[0, "butt"], [11, "round"]] + }, + "line-join": "round" + }, + "paint": { + "line-color": "@water", + "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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "waterway", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["!=", "class", "river"], ["!=", "class", "canal"]], + "layout": { + "visibility": "visible", + "line-join": "round", + "line-cap": "round" + }, + "paint": { + "line-color": "@water", + "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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "water", + "minzoom": 0, + "maxzoom": 22, + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@water" + } + }, { + "id": "landuse-overlay", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse_overlay", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all"], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@wetlands", + "fill-opacity": { + "base": 1, + "stops": [[10, 0.25], [10.5, 0.15]] + } + } + }, { + "id": "landuse-overlay-pattern", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "landuse_overlay", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all"], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@wetlands", + "fill-opacity": { + "base": 1, + "stops": [[10, 0], [10.5, 1]] + }, + "fill-image": { + "base": 1, + "stops": [[13, "marsh-16"], [14, "marsh-32"]] + } + } + }, { + "id": "barrier_line-land-polygon", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "barrier_line", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "land"], ["==", "$type", "Polygon"]], + "layout": {}, + "paint": { + "fill-color": "@land" + } + }, { + "id": "barrier_line-land-line", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "barrier_line", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "land"], ["==", "$type", "LineString"]], + "layout": { + "line-cap": "round" + }, + "paint": { + "line-width": { + "base": 1.99, + "stops": [[14, 0.75], [20, 40]] + }, + "line-color": "@land" + } + }, { + "id": "building-bottom", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "building", + "minzoom": 15, + "maxzoom": 22, + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "@building-shadow", + "fill-opacity": { + "base": 1, + "stops": [[15.5, 0], [16, 1]] + } + } + }, { + "id": "building-top", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "building", + "minzoom": 15, + "maxzoom": 22, + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": { + "base": 1, + "stops": [[15, "@land"], [16, "@building"]] + }, + "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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "aeroway", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "$type", "Polygon"], ["!=", "type", "apron"]], + "layout": {}, + "paint": { + "fill-color": "@aeroway", + "fill-opacity": { + "base": 1, + "stops": [[11, 0], [11.5, 1]] + } + } + }, { + "id": "aeroway-runway", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "aeroway", + "minzoom": 9, + "maxzoom": 22, + "filter": ["all", ["==", "type", "runway"], ["==", "$type", "LineString"]], + "layout": { + "visibility": "visible", + "line-cap": "butt" + }, + "paint": { + "line-color": "@aeroway", + "line-width": { + "base": 1.5, + "stops": [[9, 1], [18, 80]] + } + } + }, { + "id": "aeroway-taxiway", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "aeroway", + "minzoom": 9, + "maxzoom": 22, + "filter": ["all", ["==", "type", "taxiway"], ["==", "$type", "LineString"]], + "layout": { + "visibility": "visible", + "line-cap": "butt" + }, + "paint": { + "line-color": "@aeroway", + "line-width": { + "base": 1.5, + "stops": [[10, 0.5], [18, 20]] + } + } + }, { + "id": "admin-3-4-boundaries-bg", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "admin", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", [">=", "admin_level", 3], ["==", "maritime", 0]], + "layout": { + "visibility": "visible", + "line-join": "bevel" + }, + "paint": { + "line-color": { + "base": 1, + "stops": [[8, "@land"], [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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "Polygon"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "#EEE8E3", + "fill-opacity": 0.75 + } + }, { + "id": "tunnel-path-bg", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "class", "path"]], + "layout": { + "visibility": "none", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@path-bg-width", + "line-dasharray": [1, 0], + "line-color": "@road-case-dark", + "line-blur": 0, + "line-opacity": { + "base": 1, + "stops": [[15, 0], [15.25, 0.5]] + } + } + }, { + "id": "tunnel-path", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "class", "path"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@path-width", + "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": "@path-opacity" + } + }, { + "id": "tunnel-street-low", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["in", "class", "street"], ["==", "$type", "LineString"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street-width", + "line-color": "@road-minor", + "line-opacity": { + "stops": [[11.5, 0], [12, 1], [14, 1], [14.01, 0]] + } + } + }, { + "id": "tunnel-street_limited-low", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["in", "class", "street_limited"], ["==", "$type", "LineString"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street-width", + "line-color": "@road-minor", + "line-opacity": { + "stops": [[11.5, 0], [12, 1], [14, 1], [14.01, 0]] + } + } + }, { + "id": "tunnel-motorway_link-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "motorway_link"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@road-motorway-case", + "line-gap-width": "@motorway_link-width", + "line-dasharray": [3, 3] + } + }, { + "id": "tunnel-service-driveway-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "class", "service", "driveway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@tunnel-case-dark", + "line-gap-width": "@road-width-minor", + "line-dasharray": [3, 3] + } + }, { + "id": "tunnel-street_limited-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "LineString"], ["!=", "type", "construction"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@tunnel-case-dark", + "line-gap-width": "@street_limited-case-width", + "line-dasharray": [3, 3], + "line-opacity": "@street-high-opacity" + } + }, { + "id": "tunnel-street-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@tunnel-case-dark", + "line-gap-width": "@street-case-gap-width", + "line-dasharray": [3, 3], + "line-opacity": "@street-high-opacity" + } + }, { + "id": "tunnel-main-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["!=", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@main-case-width", + "line-dasharray": [3, 3], + "line-gap-width": "@main-width", + "line-color": "@tunnel-case-dark" + } + }, { + "id": "tunnel-trunk-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["==", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-lg", + "line-color": "@road-motorway-case", + "line-gap-width": "@motorway-width", + "line-opacity": 1, + "line-dasharray": [3, 3] + } + }, { + "id": "tunnel-motorway-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "class", "motorway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-lg", + "line-color": "@road-motorway-case", + "line-gap-width": "@motorway-width", + "line-opacity": 1, + "line-dasharray": [3, 3] + } + }, { + "id": "tunnel-motorway_link", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "motorway_link"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@motorway_link-width", + "line-color": "@tunnel-motorway", + "line-opacity": 1, + "line-dasharray": [1, 0] + } + }, { + "id": "tunnel-service-driveway", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "class", "service", "driveway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-width-minor", + "line-color": "@road-minor", + "line-dasharray": [1, 0] + } + }, { + "id": "tunnel-construction", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 14, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "LineString"], ["==", "type", "construction"]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "miter" + }, + "paint": { + "line-width": "@street_limited-width", + "line-color": "@road-case-dark", + "line-opacity": "@street-high-opacity", + "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", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "LineString"], ["!=", "type", "construction"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street_limited-width", + "line-color": "@road-street-limited", + "line-opacity": "@street-high-opacity" + } + }, { + "id": "tunnel-street", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street-width", + "line-color": "@road-minor", + "line-opacity": "@street-high-opacity" + } + }, { + "id": "tunnel-main", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["!=", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@main-width", + "line-color": "@road-minor", + "line-opacity": 1, + "line-dasharray": [1, 0], + "line-blur": 0 + } + }, { + "id": "tunnel-trunk", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["==", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@motorway-width", + "line-color": "@tunnel-trunk" + } + }, { + "id": "tunnel-motorway", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "motorway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@motorway-width", + "line-dasharray": [1, 0], + "line-opacity": 1, + "line-color": "@tunnel-motorway", + "line-blur": 0 + } + }, { + "id": "tunnel-oneway-arrows-white", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "oneway", 1], ["any", ["in", "class", "motorway", "motorway_link"], ["in", "type", "trunk"]]], + "layout": { + "symbol-min-distance": 250, + "symbol-placement": "line", + "icon-image": { + "base": 1, + "stops": [[16, "oneway-spaced-white-small"], [17, "oneway-spaced-white-large"]] + }, + "icon-ignore-placement": true + }, + "paint": {} + }, { + "id": "tunnel-oneway-arrows-color", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "oneway", 1], ["in", "class", "main", "street", "street_limited"], ["!=", "type", "trunk"]], + "layout": { + "symbol-min-distance": 250, + "symbol-placement": "line", + "icon-image": { + "base": 1, + "stops": [[16, "oneway-spaced-small"], [17, "oneway-spaced-large"]] + }, + "icon-ignore-placement": true + }, + "paint": {} + }, { + "id": "tunnel-rail", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["in", "class", "major_rail", "minor_rail"]], + "layout": { + "visibility": "visible", + "line-cap": "butt" + }, + "paint": { + "line-color": { + "stops": [[13, "#d8d5c8"], [16, "#c0beb2"]] + }, + "line-width": "@rail-width" + } + }, { + "id": "tunnel-rail-tracks", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "tunnel", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["in", "class", "major_rail", "minor_rail"]], + "layout": { + "visibility": "visible", + "line-cap": "butt" + }, + "paint": { + "line-color": { + "stops": [[13, "#d8d5c8"], [16, "#c0beb2"]] + }, + "line-width": "@rail-track-width", + "line-dasharray": [0.1, 15], + "line-opacity": { + "base": 1, + "stops": [[13.75, 0], [20, 1]] + } + } + }, { + "id": "road-path-bg", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "class", "path"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@path-bg-width", + "line-dasharray": [1, 0], + "line-color": "@road-case-dark", + "line-blur": 0, + "line-opacity": { + "base": 1, + "stops": [[15, 0], [15.25, 0.5]] + } + } + }, { + "id": "road-path", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "class", "path"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@path-width", + "line-color": "@road-minor", + "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": "@path-opacity" + } + }, { + "id": "road-street_limited-polygon-outline", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 12, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "Polygon"]], + "layout": { + "visibility": "none" + }, + "paint": { + "line-color": "@road-case-dark", + "line-width": { + "base": 1.5, + "stops": [[12, 1.5], [20, 4]] + }, + "line-opacity": 1 + } + }, { + "id": "road-street-low", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["in", "class", "street"], ["==", "$type", "LineString"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street-width", + "line-color": "@road-minor", + "line-opacity": { + "stops": [[11, 0], [11.25, 1], [14, 1], [14.01, 0]] + } + } + }, { + "id": "road-street_limited-low", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["in", "class", "street_limited"], ["==", "$type", "LineString"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street-width", + "line-color": "@road-minor", + "line-opacity": { + "stops": [[11, 0], [11.25, 1], [14, 1], [14.01, 0]] + } + } + }, { + "id": "road-motorway_link-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 10, + "maxzoom": 22, + "filter": ["all", ["==", "class", "motorway_link"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@road-motorway-case", + "line-gap-width": "@motorway_link-width", + "line-opacity": { + "base": 1, + "stops": [[10.99, 0], [11, 1]] + } + } + }, { + "id": "road-service-driveway-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "class", "service", "driveway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@road-case-dark", + "line-gap-width": "@road-width-minor" + } + }, { + "id": "road-street_limited-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "LineString"], ["!=", "type", "construction"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@road-case-dark", + "line-gap-width": "@street_limited-case-width", + "line-opacity": "@street-high-opacity" + } + }, { + "id": "road-street-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@road-case-dark", + "line-gap-width": "@street-case-gap-width", + "line-opacity": "@street-high-opacity" + } + }, { + "id": "road-main-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["!=", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@main-case-width", + "line-color": "@road-case-dark", + "line-gap-width": "@main-width", + "line-opacity": { + "base": 1, + "stops": [[9.99, 0], [10, 1]] + } + } + }, { + "id": "road-trunk-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 5, + "maxzoom": 22, + "filter": ["all", ["in", "class", "main"], ["in", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-lg", + "line-color": "@road-trunk-case", + "line-gap-width": "@motorway-width", + "line-opacity": { + "base": 1, + "stops": [[5.9, 0], [6, 1]] + } + } + }, { + "id": "road-motorway-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "class", "motorway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-lg", + "line-color": "@road-motorway-case", + "line-gap-width": "@motorway-width", + "line-opacity": { + "base": 1.2, + "stops": [[5.9, 0], [6, 1]] + } + } + }, { + "id": "road-street_limited-polygon", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 12, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "Polygon"]], + "layout": { + "visibility": "none" + }, + "paint": { + "fill-color": "@road-street-limited", + "fill-opacity": 1 + } + }, { + "id": "road-service-driveway", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "class", "service", "driveway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-width-minor", + "line-color": "@road-minor" + } + }, { + "id": "road-motorway_link", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 10, + "maxzoom": 22, + "filter": ["all", ["==", "class", "motorway_link"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@motorway_link-width", + "line-color": "@road-motorway", + "line-opacity": 1 + } + }, { + "id": "road-construction", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 14, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "LineString"], ["==", "type", "construction"]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "miter" + }, + "paint": { + "line-width": "@street_limited-width", + "line-color": "@road-case-dark", + "line-opacity": "@street-high-opacity", + "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", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "LineString"], ["!=", "type", "construction"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street_limited-width", + "line-color": "@road-street-limited", + "line-opacity": "@street-high-opacity" + } + }, { + "id": "road-street", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street-width", + "line-color": "@road-minor", + "line-opacity": "@street-high-opacity" + } + }, { + "id": "road-main", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["!=", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@main-width", + "line-color": { + "base": 1, + "stops": [[5, "@land"], [8, "@road-minor"]] + }, + "line-opacity": "@road-high-z-fadein" + } + }, { + "id": "road-trunk", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 5, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["==", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@motorway-width", + "line-color": "@road-trunk" + } + }, { + "id": "road-motorway", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "motorway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@motorway-width", + "line-color": { + "base": 1, + "stops": [[5.9, "#fff"], [6, "#ffa159"]] + }, + "line-opacity": "@road-high-z-fadein" + } + }, { + "id": "road-oneway-arrows-white", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "oneway", 1], ["any", ["in", "class", "motorway", "motorway_link"], ["in", "type", "trunk"]]], + "layout": { + "symbol-min-distance": 250, + "symbol-placement": "line", + "icon-image": { + "base": 1, + "stops": [[16, "oneway-spaced-white-small"], [17, "oneway-spaced-white-large"]] + }, + "icon-ignore-placement": true + }, + "paint": {} + }, { + "id": "road-oneway-arrows-color", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "oneway", 1], ["in", "class", "main", "street", "street_limited"], ["!=", "type", "trunk"]], + "layout": { + "symbol-min-distance": 250, + "symbol-placement": "line", + "icon-image": { + "base": 1, + "stops": [[16, "oneway-spaced-small"], [17, "oneway-spaced-large"]] + }, + "icon-ignore-placement": true, + "icon-rotation-alignment": "map" + }, + "paint": {} + }, { + "id": "road-rail", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["in", "class", "major_rail", "minor_rail"]], + "layout": { + "visibility": "visible", + "line-cap": "butt" + }, + "paint": { + "line-color": "@rail-lowhigh", + "line-width": "@rail-width" + } + }, { + "id": "road-rail-tracks", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["in", "class", "major_rail", "minor_rail"]], + "layout": { + "visibility": "visible", + "line-cap": "butt" + }, + "paint": { + "line-color": "@rail-lowhigh", + "line-width": "@rail-track-width", + "line-dasharray": [0.1, 15], + "line-opacity": { + "base": 1, + "stops": [[13.75, 0], [14, 1]] + } + } + }, { + "id": "bridge-street_limited-polygon", + "type": "fill", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "Polygon"]], + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "#EEE8E3", + "fill-opacity": 0.75 + } + }, { + "id": "bridge-path-bg", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "class", "path"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@path-bg-width", + "line-dasharray": [1, 0], + "line-color": "@road-case-dark", + "line-blur": 0, + "line-opacity": { + "base": 1, + "stops": [[15, 0], [15.25, 0.75]] + } + } + }, { + "id": "bridge-path", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "class", "path"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@path-width", + "line-color": "@road-minor", + "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": "@path-opacity" + } + }, { + "id": "bridge-street-low", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["in", "class", "street"], ["==", "$type", "LineString"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street-width", + "line-color": "@road-minor", + "line-opacity": { + "stops": [[11.5, 0], [12, 1], [14, 1], [14.01, 0]] + } + } + }, { + "id": "bridge-street_limited-low", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["in", "class", "street_limited"], ["==", "$type", "LineString"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street-width", + "line-color": "@road-minor", + "line-opacity": { + "stops": [[11.5, 0], [12, 1], [14, 1], [14.01, 0]] + } + } + }, { + "id": "bridge-motorway_link-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 12, + "maxzoom": 22, + "filter": ["all", ["==", "class", "motorway_link"]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@road-motorway-case", + "line-gap-width": "@motorway_link-width", + "line-opacity": 1 + } + }, { + "id": "bridge-service-driveway-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "class", "service", "driveway"]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@road-case-dark", + "line-gap-width": "@road-width-minor" + } + }, { + "id": "bridge-street_limited-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 14, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "LineString"], ["!=", "type", "construction"]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@road-case-dark", + "line-gap-width": "@street_limited-case-width" + } + }, { + "id": "bridge-street-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 14, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street"]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-sm", + "line-color": "@road-case-dark", + "line-gap-width": "@street-case-gap-width" + } + }, { + "id": "bridge-main-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 8, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["!=", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "round" + }, + "paint": { + "line-width": "@main-case-width", + "line-color": "@road-case-dark", + "line-gap-width": "@main-width", + "line-translate": [0, 0] + } + }, { + "id": "bridge-motorway-trunk-case", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 0, + "maxzoom": 22, + "filter": ["any", ["in", "class", "motorway"], ["==", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "round" + }, + "paint": { + "line-width": "@road-case-width-lg", + "line-color": "@road-motorway-case", + "line-gap-width": "@motorway-width" + } + }, { + "id": "bridge-motorway_link", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 10, + "maxzoom": 22, + "filter": ["all", ["==", "class", "motorway_link"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@motorway_link-width", + "line-color": "@road-motorway" + } + }, { + "id": "bridge-service-driveway", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "class", "service", "driveway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@road-width-minor", + "line-color": "@road-minor" + } + }, { + "id": "bridge-construction", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 14, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "LineString"], ["==", "type", "construction"]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "miter" + }, + "paint": { + "line-width": "@street_limited-width", + "line-color": "@road-case-dark", + "line-opacity": "@street-high-opacity", + "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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street_limited"], ["==", "$type", "LineString"], ["!=", "type", "construction"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street_limited-width", + "line-color": "@road-street-limited", + "line-opacity": "@street-high-opacity" + } + }, { + "id": "bridge-street", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["==", "class", "street"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@street-width", + "line-color": "@road-minor", + "line-opacity": "@street-high-opacity" + } + }, { + "id": "bridge-main", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["!=", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@main-width", + "line-color": "@road-minor", + "line-opacity": "@road-high-z-fadein" + } + }, { + "id": "bridge-trunk", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "main"], ["==", "type", "trunk"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@motorway-width", + "line-color": "@road-trunk" + } + }, { + "id": "bridge-motorway", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["==", "class", "motorway"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-width": "@motorway-width", + "line-color": "@road-motorway" + } + }, { + "id": "bridge-oneway-arrows-white", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "oneway", 1], ["any", ["in", "class", "motorway", "motorway_link"], ["in", "type", "trunk"]]], + "layout": { + "symbol-min-distance": 250, + "symbol-placement": "line", + "icon-image": { + "base": 1, + "stops": [[16, "oneway-spaced-white-small"], [17, "oneway-spaced-white-large"]] + }, + "icon-ignore-placement": true + }, + "paint": {} + }, { + "id": "bridge-oneway-arrows-color", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "oneway", 1], ["in", "class", "main", "street", "street_limited"], ["!=", "type", "trunk"]], + "layout": { + "symbol-min-distance": 250, + "symbol-placement": "line", + "icon-image": { + "base": 1, + "stops": [[16, "oneway-spaced-small"], [17, "oneway-spaced-large"]] + }, + "icon-ignore-placement": true + }, + "paint": {} + }, { + "id": "bridge-rail", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["in", "class", "major_rail", "minor_rail"]], + "layout": { + "visibility": "visible", + "line-cap": "butt" + }, + "paint": { + "line-color": "@rail-lowhigh", + "line-width": "@rail-width" + } + }, { + "id": "bridge-rail-tracks", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["in", "class", "major_rail", "minor_rail"]], + "layout": { + "visibility": "visible", + "line-cap": "butt" + }, + "paint": { + "line-color": "@rail-lowhigh", + "line-width": "@rail-track-width", + "line-dasharray": [0.1, 15], + "line-opacity": { + "base": 1, + "stops": [[13.75, 0], [20, 1]] + } + } + }, { + "id": "bridge-aerialway", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "bridge", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["in", "class", "aerialway"]], + "layout": { + "visibility": "visible", + "line-cap": "butt" + }, + "paint": { + "line-color": "@rail", + "line-width": "@rail-width" + } + }, { + "id": "hedges", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "barrier_line", + "minzoom": 16, + "maxzoom": 22, + "filter": ["all", ["==", "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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "barrier_line", + "minzoom": 16, + "maxzoom": 22, + "filter": ["all", ["==", "class", "fence"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "@building-shadow", + "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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "barrier_line", + "minzoom": 17, + "maxzoom": 22, + "filter": ["all", ["==", "class", "gate"]], + "layout": { + "visibility": "visible", + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "@building-shadow", + "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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "admin", + "minzoom": 1, + "maxzoom": 22, + "filter": ["all", ["==", "admin_level", 2], ["==", "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, "@land"], [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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "admin", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", [">=", "admin_level", 3], ["==", "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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "admin", + "minzoom": 1, + "maxzoom": 22, + "filter": ["all", ["==", "admin_level", 2], ["==", "maritime", 0], ["==", "disputed", 0]], + "layout": { + "visibility": "visible", + "line-join": "round", + "line-cap": "round" + }, + "paint": { + "line-color": "@admin", + "line-width": "@admin-2-boundary" + } + }, { + "id": "admin-2-boundaries-dispute", + "type": "line", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "admin", + "minzoom": 1, + "maxzoom": 22, + "filter": ["all", ["==", "admin_level", 2], ["==", "maritime", 0], ["==", "disputed", 1]], + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "round" + }, + "paint": { + "line-dasharray": [1.5, 1.5], + "line-color": "@admin", + "line-width": "@admin-2-boundary" + } + }, { + "id": "contour", + "type": "line", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "contour", + "minzoom": 14, + "maxzoom": 22, + "filter": ["all", ["!=", "index", 5]], + "layout": { + "visibility": "visible" + }, + "paint": { + "line-opacity": 0.07, + "line-color": "#66601a" + } + }, { + "id": "contour-index", + "type": "line", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "contour", + "minzoom": 14, + "maxzoom": 22, + "filter": ["all", ["==", "index", 5]], + "layout": { + "visibility": "visible" + }, + "paint": { + "line-opacity": 0.12, + "line-color": "#66601a" + } + }, { + "id": "country-label-lg", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "country_label", + "minzoom": 1, + "maxzoom": 7, + "filter": ["all", ["in", "scalerank", 1, 2]], + "layout": { + "text-field": "{name_en}", + "visibility": "visible", + "text-max-size": 24, + "text-max-width": { + "base": 1, + "stops": [[0, 5], [3, 6]] + }, + "text-font": "DIN Offc Pro Medium, Arial Unicode MS Bold" + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[1, 10], [6, 24]] + }, + "text-color": "@label-primary", + "text-halo-color": { + "base": 1, + "stops": [[2, "@country-halo"], [3, "@halo"]] + }, + "text-halo-width": 1.25 + } + }, { + "id": "country-label-md", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "country_label", + "minzoom": 1, + "maxzoom": 8, + "filter": ["all", ["in", "scalerank", 3, 4]], + "layout": { + "text-field": { + "base": 1, + "stops": [[0, "{code}"], [2, "{name_en}"]] + }, + "visibility": "visible", + "text-max-size": 24, + "text-max-width": 6, + "text-font": "DIN Offc Pro Medium, Arial Unicode MS Regular" + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[3, 10], [8, 24]] + }, + "text-color": "@label-primary", + "text-halo-color": { + "base": 1, + "stops": [[2, "@country-halo"], [3, "@halo"]] + }, + "text-halo-width": 1.25 + } + }, { + "id": "country-label-sm", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "country_label", + "minzoom": 1, + "maxzoom": 10, + "filter": ["all", [">=", "scalerank", 5]], + "layout": { + "text-field": "{name_en}", + "visibility": "visible", + "text-max-size": 22, + "text-max-width": 6, + "text-font": "DIN Offc Pro Medium, Arial Unicode MS Regular" + }, + "paint": { + "text-size": { + "base": 0.9, + "stops": [[5, 14], [9, 22]] + }, + "text-color": "@label-primary", + "text-halo-color": { + "base": 1, + "stops": [[2, "@country-halo"], [3, "@halo"]] + }, + "text-halo-width": 1.25 + } + }, { + "id": "state-label-lg", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "state_label", + "minzoom": 3, + "maxzoom": 7, + "filter": ["all", [">=", "area", 80000]], + "layout": { + "text-allow-overlap": false, + "text-ignore-placement": false, + "text-max-size": { + "base": 1, + "stops": [[4, 10], [7, 18]] + }, + "text-transform": "uppercase", + "text-font": "DIN Offc Pro Bold, Arial Unicode MS Regular", + "text-padding": 1, + "visibility": "visible", + "text-field": { + "base": 1, + "stops": [[0, "{abbr}"], [4, "{name_en}"]] + }, + "text-letter-spacing": 0.15, + "text-max-width": 6 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[4, 10], [7, 18]] + }, + "text-opacity": 1, + "text-color": "@label-state", + "text-halo-color": "@halo", + "text-halo-width": 1 + } + }, { + "id": "state-label-md", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "state_label", + "minzoom": 3, + "maxzoom": 8, + "filter": ["all", ["<", "area", 80000], [">=", "area", 20000]], + "layout": { + "text-allow-overlap": false, + "text-ignore-placement": false, + "text-max-size": { + "base": 1, + "stops": [[5, 10], [8, 16]] + }, + "text-transform": "uppercase", + "text-font": "DIN Offc Pro Bold, Arial Unicode MS Regular", + "visibility": "visible", + "text-field": { + "base": 1, + "stops": [[0, "{abbr}"], [5, "{name_en}"]] + }, + "text-letter-spacing": 0.15, + "text-max-width": 6 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[5, 10], [8, 16]] + }, + "text-opacity": 1, + "text-color": "@label-state", + "text-halo-color": "@halo", + "text-halo-width": 1 + } + }, { + "id": "state-label-sm", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "state_label", + "minzoom": 3, + "maxzoom": 9, + "filter": ["all", ["<", "area", 20000]], + "layout": { + "text-allow-overlap": false, + "text-ignore-placement": false, + "text-max-size": { + "base": 1, + "stops": [[6, 10], [9, 14]] + }, + "text-transform": "uppercase", + "text-font": "DIN Offc Pro Bold, Arial Unicode MS Regular", + "visibility": "visible", + "text-field": { + "base": 1, + "stops": [[0, "{abbr}"], [6, "{name_en}"]] + }, + "text-letter-spacing": 0.15, + "text-max-width": 5 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[6, 10], [9, 14]] + }, + "text-opacity": 1, + "text-color": "@label-state", + "text-halo-color": "@halo", + "text-halo-width": 1 + } + }, { + "id": "marine-label-lg-pt", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "marine_label", + "minzoom": 1, + "maxzoom": 4, + "filter": ["all", ["in", "labelrank", 1], ["==", "$type", "Point"]], + "layout": { + "visibility": "visible", + "text-field": "{name_en}", + "text-max-width": 4, + "text-letter-spacing": 0.25, + "text-line-height": 1.5, + "text-max-size": { + "base": 1, + "stops": [[1, 14], [4, 30]] + }, + "text-font": "DIN Offc Pro Italic, Arial Unicode MS Regular" + }, + "paint": { + "text-color": "@label-water", + "text-size": { + "base": 1, + "stops": [[1, 14], [4, 30]] + } + } + }, { + "id": "marine-label-lg-ln", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "marine_label", + "minzoom": 1, + "maxzoom": 4, + "filter": ["all", ["in", "labelrank", 1], ["==", "$type", "LineString"]], + "layout": { + "visibility": "visible", + "text-field": "{name_en}", + "text-max-width": 4, + "text-letter-spacing": 0.25, + "text-line-height": 1.1, + "text-max-size": { + "base": 1, + "stops": [[1, 14], [4, 30]] + }, + "symbol-placement": "line", + "text-font": "DIN Offc Pro Italic, Arial Unicode MS Regular" + }, + "paint": { + "text-color": "@label-water", + "text-size": { + "base": 1, + "stops": [[1, 14], [4, 30]] + } + } + }, { + "id": "marine-label-md-pt", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "marine_label", + "minzoom": 2, + "maxzoom": 8, + "filter": ["all", ["in", "labelrank", 2, 3], ["==", "$type", "Point"]], + "layout": { + "visibility": "visible", + "text-field": "{name_en}", + "text-max-width": 5, + "text-letter-spacing": 0.15, + "text-line-height": 1.5, + "text-max-size": { + "base": 1.1, + "stops": [[2, 14], [5, 20]] + }, + "text-font": "DIN Offc Pro Italic, Arial Unicode MS Regular" + }, + "paint": { + "text-color": "@label-water", + "text-size": { + "base": 1.1, + "stops": [[2, 14], [5, 20]] + } + } + }, { + "id": "marine-label-md-ln", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "marine_label", + "minzoom": 2, + "maxzoom": 8, + "filter": ["all", ["in", "labelrank", 2, 3], ["==", "$type", "LineString"]], + "layout": { + "text-line-height": 1.1, + "symbol-min-distance": 250, + "text-max-size": 20, + "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 + }, + "paint": { + "text-color": "@label-water", + "text-size": { + "base": 1.1, + "stops": [[2, 12], [5, 20]] + } + } + }, { + "id": "marine-label-sm-pt", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "marine_label", + "minzoom": 3, + "maxzoom": 10, + "filter": ["all", [">=", "labelrank", 4], ["==", "$type", "Point"]], + "layout": { + "visibility": "visible", + "text-field": "{name_en}", + "text-max-width": 5, + "text-letter-spacing": 0.1, + "text-line-height": 1.5, + "text-max-size": 20, + "symbol-placement": "point", + "text-font": "DIN Offc Pro Italic, Arial Unicode MS Regular" + }, + "paint": { + "text-color": "@label-water", + "text-size": { + "base": 1, + "stops": [[3, 12], [6, 16]] + } + } + }, { + "id": "marine-label-sm-ln", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "marine_label", + "minzoom": 3, + "maxzoom": 10, + "filter": ["all", [">=", "labelrank", 4], ["==", "$type", "LineString"]], + "layout": { + "text-line-height": 1.1, + "symbol-min-distance": { + "base": 1, + "stops": [[4, 100], [6, 400]] + }, + "text-max-size": 16, + "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 + }, + "paint": { + "text-color": "@label-water", + "text-size": { + "base": 1, + "stops": [[3, 12], [6, 16]] + } + } + }, { + "id": "place-city-lg-n", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 1, + "maxzoom": 14, + "filter": ["all", ["<=", "scalerank", 2], ["==", "type", "city"], ["in", "ldir", "N", "NE", "NW", "W"]], + "layout": { + "icon-image": "circle.sdf", + "text-max-size": "@label-city-lg-size", + "text-font": { + "base": 1, + "stops": [[7, "DIN Offc Pro Regular, Arial Unicode MS Regular"], [8, "DIN Offc Pro Medium, Arial Unicode MS Bold"]] + }, + "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, + "icon-max-size": 0.4 + }, + "paint": { + "text-size": "@label-city-lg-size", + "text-color": "@label-primary", + "icon-halo-blur": 1, + "icon-halo-color": "@halo", + "icon-halo-width": 1, + "text-opacity": 1, + "icon-color": "@label-primary", + "text-halo-color": "@halo", + "icon-size": 0.4, + "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": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 1, + "maxzoom": 14, + "filter": ["all", ["<=", "scalerank", 2], ["==", "type", "city"], ["in", "ldir", "S", "SE", "SW", "E"]], + "layout": { + "icon-image": "circle.sdf", + "text-max-size": "@label-city-lg-size", + "text-font": { + "base": 1, + "stops": [[7, "DIN Offc Pro Regular, Arial Unicode MS Regular"], [8, "DIN Offc Pro Medium, Arial Unicode MS Bold"]] + }, + "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, + "icon-max-size": 0.4 + }, + "paint": { + "text-size": "@label-city-lg-size", + "text-color": "@label-primary", + "icon-halo-blur": 1, + "icon-halo-color": "@halo", + "icon-halo-width": 1, + "icon-color": "@label-primary", + "text-halo-color": "@halo", + "icon-size": 0.4, + "text-halo-width": 1, + "icon-opacity": { + "base": 1, + "stops": [[7.99, 1], [8, 0]] + }, + "text-halo-blur": 1 + } + }, { + "id": "place-city-md-n", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 0, + "maxzoom": 14, + "filter": ["all", ["in", "scalerank", 3, 4, 5], ["==", "type", "city"], ["in", "ldir", "N", "NE", "NW", "W"]], + "layout": { + "icon-image": "circle.sdf", + "text-max-size": "@label-city-md-size", + "text-font": { + "base": 1, + "stops": [[7, "DIN Offc Pro Regular, Arial Unicode MS Regular"], [8, "DIN Offc Pro Medium, Arial Unicode MS Bold"]] + }, + "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, + "icon-max-size": 0.35 + }, + "paint": { + "text-size": "@label-city-md-size", + "text-color": "@label-primary", + "icon-halo-blur": 1, + "icon-halo-color": "@halo", + "icon-halo-width": 1, + "icon-color": "@label-primary", + "text-halo-color": "@halo", + "icon-size": 0.35, + "text-halo-width": 1, + "icon-opacity": { + "base": 1, + "stops": [[7.99, 1], [8, 0]] + }, + "text-halo-blur": 1 + } + }, { + "id": "place-city-md-s", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 0, + "maxzoom": 14, + "filter": ["all", ["in", "scalerank", 3, 4, 5], ["==", "type", "city"], ["in", "ldir", "S", "SE", "WW", "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]]] + }, + "icon-max-size": 0.35, + "text-max-size": "@label-city-md-size", + "text-font": { + "base": 1, + "stops": [[7, "DIN Offc Pro Regular, Arial Unicode MS Regular"], [8, "DIN Offc Pro Medium, Arial Unicode MS Bold"]] + } + }, + "paint": { + "icon-size": 0.35, + "text-size": "@label-city-md-size", + "text-halo-width": 1, + "text-halo-color": "@halo", + "text-color": "@label-primary", + "text-halo-blur": 1, + "icon-color": "@label-primary", + "icon-opacity": { + "base": 1, + "stops": [[7.99, 1], [8, 0]] + } + } + }, { + "id": "place-city-sm", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 0, + "maxzoom": 14, + "filter": ["all", ["!in", "scalerank", 0, 1, 2, 3, 4, 5], ["==", "type", "city"]], + "layout": { + "icon-image": "circle.sdf", + "text-max-size": { + "base": 1, + "stops": [[6, 12], [14, 22]] + }, + "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 Bold"]] + }, + "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, + "icon-max-size": 0.3 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[6, 12], [14, 22]] + }, + "text-color": "@label-primary", + "icon-halo-blur": 1, + "icon-halo-color": "@halo", + "icon-halo-width": 1, + "icon-color": "@label-primary", + "text-halo-color": "@halo", + "icon-size": 0.3, + "text-halo-width": 1.25, + "icon-opacity": { + "base": 1, + "stops": [[7.99, 1], [8, 0]] + } + } + }, { + "id": "poi-islands", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "type", "Island"]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": 14, + "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 + }, + "paint": { + "text-color": "@label-poi", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-size": { + "base": 1, + "stops": [[10, 11], [18, 16]] + } + } + }, { + "id": "place-town", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 6, + "maxzoom": 14, + "filter": ["all", ["in", "type", "town"]], + "layout": { + "icon-image": "circle.sdf", + "text-max-size": { + "base": 1, + "stops": [[7, 11.5], [15, 20]] + }, + "text-font": { + "base": 1, + "stops": [[11, "DIN Offc Pro Regular, Arial Unicode MS Regular"], [12, "DIN Offc Pro Medium, Arial Unicode MS Bold"]] + }, + "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, + "icon-max-size": 0.3 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[7, 11.5], [15, 20]] + }, + "text-color": "@label-primary", + "icon-halo-blur": 1, + "icon-halo-color": "@halo", + "icon-halo-width": 1, + "icon-color": "@label-primary", + "text-halo-color": "@halo", + "icon-size": 0.3, + "text-halo-width": 1.25, + "icon-opacity": { + "base": 1, + "stops": [[7.99, 1], [8, 0]] + } + } + }, { + "id": "place-village", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 8, + "maxzoom": 15, + "filter": ["all", ["in", "type", "village"]], + "layout": { + "visibility": "visible", + "text-field": "{name_en}", + "text-max-size": { + "base": 1, + "stops": [[10, 11.5], [16, 18]] + }, + "text-font": "DIN Offc Pro Regular, Arial Unicode MS Regular", + "text-max-width": 7 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[10, 11.5], [16, 18]] + }, + "text-halo-color": "@halo", + "text-halo-width": 1.25, + "text-color": "@label-primary" + } + }, { + "id": "place-hamlet", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 10, + "maxzoom": 16, + "filter": ["all", ["in", "type", "hamlet"]], + "layout": { + "visibility": "visible", + "text-field": "{name_en}", + "text-max-size": { + "base": 1, + "stops": [[12, 11.5], [15, 16]] + }, + "text-font": "DIN Offc Pro Regular, Arial Unicode MS Regular" + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[12, 11.5], [15, 16]] + }, + "text-halo-color": "@halo", + "text-halo-width": 1.25, + "text-color": "@label-primary" + } + }, { + "id": "place-suburb", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 10, + "maxzoom": 16, + "filter": ["all", ["==", "type", "suburb"]], + "layout": { + "visibility": "visible", + "text-field": "{name_en}", + "text-transform": "uppercase", + "text-max-size": { + "base": 1, + "stops": [[11, 11], [15, 18]] + }, + "text-font": "DIN Offc Pro Regular, Arial Unicode MS Regular", + "text-letter-spacing": 0.15, + "text-max-width": 7, + "text-padding": 3 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[11, 11], [15, 18]] + }, + "text-halo-color": "rgba(255,255,255, 0.5)", + "text-halo-width": 1.75, + "text-color": "@label-neighbourhood" + } + }, { + "id": "place-neighbourhood", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "place_label", + "minzoom": 10, + "maxzoom": 16, + "filter": ["all", ["in", "type", "neighbourhood"]], + "layout": { + "visibility": "visible", + "text-field": "{name_en}", + "text-max-size": { + "base": 1, + "stops": [[12, 11], [16, 16]] + }, + "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 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[12, 11], [16, 16]] + }, + "text-halo-color": "rgba(255,255,255, 0.5)", + "text-halo-width": 1.75, + "text-color": "@label-neighbourhood", + "text-halo-blur": 0 + } + }, { + "id": "poi-islets", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "type", "Islet"]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": { + "base": 1, + "stops": [[10, 11], [14, 16]] + }, + "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 + }, + "paint": { + "text-color": "@label-poi", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-size": { + "base": 1, + "stops": [[10, 11], [14, 16]] + } + } + }, { + "id": "water-label", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "water_label", + "minzoom": 5, + "maxzoom": 22, + "filter": ["all"], + "layout": { + "text-field": "{name_en}", + "visibility": "visible", + "text-font": "DIN Offc Pro Italic, Arial Unicode MS Regular", + "text-max-width": 7, + "text-max-size": { + "base": 1, + "stops": [[13, 13], [18, 18]] + } + }, + "paint": { + "text-halo-width": 0, + "text-size": { + "base": 1, + "stops": [[13, 13], [18, 18]] + }, + "text-halo-color": "@halo", + "text-color": "@label-water-dark", + "text-halo-blur": 1.5 + } + }, { + "id": "airport-label", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 9, + "maxzoom": 22, + "filter": ["all", ["in", "maki", "airport", "heliport", "rocket"], ["<=", "scalerank", 2]], + "layout": { + "text-allow-overlap": false, + "symbol-min-distance": 250, + "icon-image": { + "stops": [[12, "{maki}-11"], [13, "{maki}-15"]] + }, + "text-ignore-placement": false, + "text-max-size": { + "base": 1, + "stops": [[10, 12], [18, 18]] + }, + "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 + }, + "paint": { + "text-color": "@label-transit", + "text-halo-color": "@halo", + "text-halo-width": 1.25, + "text-size": { + "base": 1, + "stops": [[10, 12], [18, 18]] + } + } + }, { + "id": "poi-scalerank1", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 0, + "maxzoom": 22, + "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, + "symbol-min-distance": 250, + "icon-image": { + "stops": [[13, "{maki}-11"], [14, "{maki}-15"]] + }, + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": "@poi-scalerank1", + "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 + }, + "paint": { + "text-color": "@label-poi", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-size": "@poi-scalerank1" + } + }, { + "id": "poi-parks-scalerank1", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "maki", "park", "golf", "cemetery", "zoo", "campsite", "swimming", "dog-park"], ["<=", "scalerank", 1]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "icon-image": { + "stops": [[13, "{maki}-11"], [14, "{maki}-15"]] + }, + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": "@poi-scalerank1", + "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 + }, + "paint": { + "text-color": "@label-park", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-halo-blur": 0, + "text-size": "@poi-scalerank1" + } + }, { + "id": "rail-label", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 12, + "maxzoom": 22, + "filter": ["all", ["in", "type", "Rail Station"]], + "layout": { + "symbol-min-distance": 250, + "icon-image": "{network}-11", + "symbol-avoid-edges": true, + "text-max-size": { + "base": 1, + "stops": [[13, 6], [14, 11], [16, 11], [20, 13]] + }, + "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 + }, + "paint": { + "text-color": "@label-poi", + "text-halo-color": "@halo", + "text-halo-width": 1.5, + "text-size": "@poi-scalerank3", + "icon-halo-width": 4, + "icon-halo-color": "#fff", + "text-opacity": { + "base": 1, + "stops": [[13.99, 0], [14, 1]] + } + } + }, { + "id": "poi-parks-scalerank2", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["in", "maki", "park", "golf", "cemetery", "zoo", "campsite", "swimming", "dog-park"], ["==", "scalerank", 2]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "icon-image": { + "stops": [[14, "{maki}-11"], [15, "{maki}-15"]] + }, + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": "@poi-scalerank2", + "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 + }, + "paint": { + "text-color": "@label-park", + "text-halo-color": "@halo", + "text-halo-width": 1.25, + "text-size": "@poi-scalerank2" + } + }, { + "id": "poi-scalerank2", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 13, + "maxzoom": 22, + "filter": ["all", ["!in", "maki", "rail-light", "rail-metro", "rail", "airport", "airfield", "heliport", "rocket", "park", "golf", "cemetery", "zoo", "campsite", "swimming", "dog-park"], ["==", "scalerank", 2]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "icon-image": { + "stops": [[14, "{maki}-11"], [15, "{maki}-15"]] + }, + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": "@poi-scalerank2", + "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 + }, + "paint": { + "text-color": "@label-poi", + "text-halo-color": "@halo", + "text-halo-width": 1.25, + "text-size": "@poi-scalerank2" + } + }, { + "id": "interstate_motorway_shields", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road_label", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "shield", "us-interstate", "us-interstate-business", "us-interstate-duplex"], ["<=", "reflen", 6]], + "layout": { + "text-allow-overlap": false, + "symbol-min-distance": 1000, + "icon-image": { + "base": 1, + "stops": [[15, "{shield}-{reflen}-small"], [16, "{shield}-{reflen}-large"]] + }, + "icon-rotation-alignment": "viewport", + "symbol-avoid-edges": false, + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": 11, + "text-font": "DIN Offc Pro Medium, Arial Unicode MS Regular", + "symbol-placement": { + "base": 1, + "stops": [[10, "point"], [11, "line"]] + }, + "text-padding": 20, + "visibility": "visible", + "text-rotation-alignment": "viewport", + "text-field": "{ref}", + "text-letter-spacing": 0.05, + "icon-padding": 20 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[16, 9], [16.01, 11]] + }, + "text-color": "#fff", + "icon-halo-color": "rgba(0, 0, 0, 1)", + "icon-halo-width": 1, + "text-opacity": 1, + "icon-color": "white", + "text-halo-color": "@halo", + "text-halo-width": 0 + } + }, { + "id": "other-motorway-shields", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road_label", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["!in", "shield", "us-interstate", "us-interstate-business", "us-interstate-duplex"], ["<=", "reflen", 6]], + "layout": { + "text-allow-overlap": false, + "symbol-min-distance": 1000, + "icon-image": { + "base": 1, + "stops": [[15, "{shield}-{reflen}-small"], [16, "{shield}-{reflen}-large"]] + }, + "icon-rotation-alignment": "viewport", + "symbol-avoid-edges": false, + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": 11, + "text-font": "DIN Offc Pro Bold, Arial Unicode MS Regular", + "symbol-placement": { + "base": 1, + "stops": [[10, "point"], [11, "line"]] + }, + "text-padding": 20, + "visibility": "visible", + "text-rotation-alignment": "viewport", + "text-field": "{ref}", + "text-letter-spacing": 0.05, + "icon-padding": 20 + }, + "paint": { + "text-size": { + "base": 1, + "stops": [[16, 9], [16.01, 11]] + }, + "text-color": "@label-road", + "icon-halo-color": "rgba(0, 0, 0, 1)", + "icon-halo-width": 1, + "text-opacity": 1, + "icon-color": "white", + "text-halo-color": "@halo", + "text-halo-width": 0 + } + }, { + "id": "road-label-large", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road_label", + "minzoom": 0, + "maxzoom": 22, + "filter": ["all", ["in", "class", "main", "motorway"]], + "layout": { + "text-allow-overlap": false, + "symbol-min-distance": 500, + "text-ignore-placement": false, + "text-max-angle": 30, + "text-max-size": { + "base": 1, + "stops": [[9, 10], [20, 16]] + }, + "text-font": "DIN Offc Pro Regular, Arial Unicode MS Regular", + "symbol-placement": "line", + "text-padding": 2, + "visibility": "visible", + "text-rotation-alignment": "map", + "text-field": "{name_en}", + "text-letter-spacing": 0.01 + }, + "paint": { + "text-color": "@label-road", + "text-halo-color": "rgba(255,255,255, 0.75)", + "text-halo-width": 1, + "text-size": { + "base": 1, + "stops": [[9, 10], [20, 16]] + }, + "text-halo-blur": 1 + } + }, { + "id": "road-label-medium", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road_label", + "minzoom": 11, + "maxzoom": 22, + "filter": ["all", ["in", "class", "street", "street_limited"], ["==", "$type", "LineString"]], + "layout": { + "symbol-min-distance": 500, + "text-max-angle": 30, + "text-font": "DIN Offc Pro Regular, Arial Unicode MS Regular", + "symbol-placement": "line", + "text-padding": 2, + "visibility": "visible", + "text-rotation-alignment": "map", + "text-field": "{name_en}", + "text-letter-spacing": 0.01 + }, + "paint": { + "text-color": "@label-road", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-size": { + "base": 1, + "stops": [[11, 10], [20, 14]] + } + } + }, { + "id": "road-label-small", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "road_label", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["!in", "class", "motorway", "main", "street_limited", "street"], ["==", "$type", "LineString"]], + "layout": { + "symbol-min-distance": 500, + "text-ignore-placement": false, + "text-max-angle": 30, + "text-max-size": 12, + "text-font": "DIN Offc Pro Regular, Arial Unicode MS Regular", + "symbol-placement": "line", + "text-padding": 2, + "visibility": "visible", + "text-rotation-alignment": "map", + "text-field": "{name_en}", + "text-letter-spacing": 0.01 + }, + "paint": { + "text-color": "@label-road", + "text-halo-color": "@halo", + "text-halo-width": 1.25, + "text-size": { + "base": 1, + "stops": [[15, 10], [20, 13]] + }, + "text-halo-blur": 1 + } + }, { + "id": "poi-parks-scalerank3", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["in", "maki", "park", "cemetery", "golf", "zoo"], ["==", "scalerank", 3]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "icon-image": "{maki}-11", + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": "@poi-scalerank3", + "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 + }, + "paint": { + "text-color": "@label-park", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-size": "@poi-scalerank3" + } + }, { + "id": "poi-scalerank3", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 15, + "maxzoom": 22, + "filter": ["all", ["!in", "maki", "rail-light", "rail-metro", "rail", "airport", "airfield", "heliport", "rocket", "park", "golf", "cemetery", "zoo", "campsite", "swimming", "dog-park"], ["==", "scalerank", 3]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "icon-image": "{maki}-11", + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": "@poi-scalerank3", + "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 + }, + "paint": { + "text-color": "@label-poi", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-size": "@poi-scalerank3" + } + }, { + "id": "poi-parks_scalerank4", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 16, + "maxzoom": 22, + "filter": ["all", ["in", "maki", "park", "cemetery", "golf", "zoo", "playground", ""], ["==", "scalerank", 4]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "icon-image": "{maki}-11", + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": "@poi-scalerank4", + "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 + }, + "paint": { + "text-color": "@label-park", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-size": "@poi-scalerank4" + } + }, { + "id": "poi-scalerank4-l1", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 16, + "maxzoom": 22, + "filter": ["all", ["!in", "maki", "rail-light", "rail-metro", "rail", "airport", "airfield", "heliport", "rocket", "park", "golf", "cemetery", "zoo", "campsite", "swimming", "dog-park"], ["==", "scalerank", 4], ["<=", "localrank", 14]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "icon-image": "{maki}-11", + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": "@poi-scalerank4", + "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 + }, + "paint": { + "text-color": "@label-poi", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-size": "@poi-scalerank4" + } + }, { + "id": "poi-scalerank4-l15", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "poi_label", + "minzoom": 17, + "maxzoom": 22, + "filter": ["all", ["!in", "maki", "rail-light", "rail-metro", "rail", "airport", "airfield", "heliport", "rocket", "park", "golf", "cemetery", "zoo", "campsite", "swimming", "dog-park"], ["==", "scalerank", 4], [">=", "localrank", 15]], + "layout": { + "text-line-height": 1.2, + "text-allow-overlap": false, + "symbol-min-distance": 250, + "icon-image": "{maki}-11", + "text-ignore-placement": false, + "text-max-angle": 38, + "text-max-size": "@poi-scalerank4", + "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 + }, + "paint": { + "text-color": "@label-poi", + "text-halo-color": "@halo", + "text-halo-width": 1, + "text-size": "@poi-scalerank4" + } + }, { + "id": "waterway-label", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "waterway_label", + "minzoom": 12, + "maxzoom": 22, + "filter": ["all", ["==", "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 + }, + "paint": { + "text-halo-width": 0.5, + "text-size": { + "base": 1, + "stops": [[13, 12], [18, 16]] + }, + "text-halo-color": "@halo", + "text-color": "@label-water-dark", + "text-halo-blur": 0.5 + } + }, { + "id": "contour-index-label", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-terrain-v2", + "source-layer": "contour", + "minzoom": 14, + "maxzoom": 22, + "filter": ["all", ["==", "index", 5]], + "layout": { + "text-field": "{ele} m", + "symbol-placement": "line", + "text-max-size": 9.5, + "text-max-angle": 25, + "visibility": "visible", + "text-padding": 5, + "text-font": "DIN Offc Pro Regular, Arial Unicode MS Regular" + }, + "paint": { + "text-size": 9.5, + "text-color": "#a7a696", + "text-halo-width": 1, + "text-halo-blur": 1, + "text-halo-color": "rgba(237,233,217, 0.25)" + } + }, { + "id": "housenum-label", + "type": "symbol", + "source": "mapbox://mapbox.mapbox-streets-v6", + "source-layer": "housenum_label", + "minzoom": 17, + "maxzoom": 22, + "layout": { + "visibility": "visible", + "text-field": "{house_num}", + "text-font": "DIN Offc Pro Italic, Arial Unicode MS Regular", + "symbol-placement": "point", + "text-max-size": 9.5, + "text-padding": 4, + "text-max-width": 7 + }, + "paint": { + "text-size": 9.5, + "text-color": "#b2aca5", + "text-halo-color": "@building", + "text-halo-width": 1.5, + "text-halo-blur": 0 + } + }], + "owner": "nicki", + "modified": "2015-04-22T21:56:16.821Z", + "created": "2015-04-20T17:11:47.261Z", + "id": "nicki.be444c8f" +}
\ No newline at end of file diff --git a/ios/benchmark/assets/tiles/download.sh b/ios/benchmark/assets/tiles/download.sh new file mode 100755 index 0000000000..23b00f9241 --- /dev/null +++ b/ios/benchmark/assets/tiles/download.sh @@ -0,0 +1,175 @@ +#!/usr/bin/env bash + +set -u + +LIST=( + # paris + "mapbox.mapbox-streets-v6/11/1037/704.vector.pbf" + "mapbox.mapbox-streets-v6/11/1037/705.vector.pbf" + "mapbox.mapbox-streets-v6/11/1038/704.vector.pbf" + "mapbox.mapbox-streets-v6/11/1038/705.vector.pbf" + "mapbox.mapbox-streets-v6/11/1036/704.vector.pbf" + "mapbox.mapbox-streets-v6/11/1037/703.vector.pbf" + "mapbox.mapbox-streets-v6/11/1036/705.vector.pbf" + "mapbox.mapbox-streets-v6/11/1038/703.vector.pbf" + "mapbox.mapbox-streets-v6/11/1036/703.vector.pbf" + "mapbox.mapbox-terrain-v2/11/1037/704.vector.pbf" + "mapbox.mapbox-terrain-v2/11/1037/705.vector.pbf" + "mapbox.mapbox-terrain-v2/11/1038/704.vector.pbf" + "mapbox.mapbox-terrain-v2/11/1038/705.vector.pbf" + "mapbox.mapbox-terrain-v2/11/1036/704.vector.pbf" + "mapbox.mapbox-terrain-v2/11/1037/703.vector.pbf" + "mapbox.mapbox-terrain-v2/11/1036/705.vector.pbf" + "mapbox.mapbox-terrain-v2/11/1038/703.vector.pbf" + "mapbox.mapbox-terrain-v2/11/1036/703.vector.pbf" + + # paris2 + "mapbox.mapbox-streets-v6/13/4150/2819.vector.pbf" + "mapbox.mapbox-streets-v6/13/4149/2819.vector.pbf" + "mapbox.mapbox-streets-v6/13/4150/2818.vector.pbf" + "mapbox.mapbox-streets-v6/13/4149/2820.vector.pbf" + "mapbox.mapbox-streets-v6/13/4148/2819.vector.pbf" + "mapbox.mapbox-streets-v6/13/4149/2818.vector.pbf" + "mapbox.mapbox-streets-v6/13/4150/2817.vector.pbf" + "mapbox.mapbox-streets-v6/13/4148/2820.vector.pbf" + "mapbox.mapbox-streets-v6/13/4148/2818.vector.pbf" + "mapbox.mapbox-streets-v6/13/4149/2817.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4150/2819.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4149/2819.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4150/2818.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4149/2820.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4148/2819.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4149/2818.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4150/2817.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4148/2820.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4148/2818.vector.pbf" + "mapbox.mapbox-terrain-v2/13/4149/2817.vector.pbf" + + # alps + "mapbox.mapbox-streets-v6/6/34/23.vector.pbf" + "mapbox.mapbox-streets-v6/6/34/22.vector.pbf" + "mapbox.mapbox-streets-v6/6/33/23.vector.pbf" + "mapbox.mapbox-streets-v6/6/33/22.vector.pbf" + "mapbox.mapbox-streets-v6/6/34/21.vector.pbf" + "mapbox.mapbox-streets-v6/6/32/23.vector.pbf" + "mapbox.mapbox-streets-v6/6/32/22.vector.pbf" + "mapbox.mapbox-streets-v6/6/33/21.vector.pbf" + "mapbox.mapbox-streets-v6/6/32/21.vector.pbf" + "mapbox.mapbox-terrain-v2/6/34/23.vector.pbf" + "mapbox.mapbox-terrain-v2/6/34/22.vector.pbf" + "mapbox.mapbox-terrain-v2/6/33/23.vector.pbf" + "mapbox.mapbox-terrain-v2/6/33/22.vector.pbf" + "mapbox.mapbox-terrain-v2/6/34/21.vector.pbf" + "mapbox.mapbox-terrain-v2/6/32/23.vector.pbf" + "mapbox.mapbox-terrain-v2/6/32/22.vector.pbf" + "mapbox.mapbox-terrain-v2/6/33/21.vector.pbf" + "mapbox.mapbox-terrain-v2/6/32/21.vector.pbf" + + # us east + "mapbox.mapbox-streets-v6/5/9/12.vector.pbf" + "mapbox.mapbox-streets-v6/5/8/12.vector.pbf" + "mapbox.mapbox-streets-v6/5/9/13.vector.pbf" + "mapbox.mapbox-streets-v6/5/8/13.vector.pbf" + "mapbox.mapbox-streets-v6/5/9/11.vector.pbf" + "mapbox.mapbox-streets-v6/5/7/12.vector.pbf" + "mapbox.mapbox-streets-v6/5/8/11.vector.pbf" + "mapbox.mapbox-streets-v6/5/7/13.vector.pbf" + "mapbox.mapbox-streets-v6/5/7/11.vector.pbf" + "mapbox.mapbox-terrain-v2/5/9/12.vector.pbf" + "mapbox.mapbox-terrain-v2/5/8/12.vector.pbf" + "mapbox.mapbox-terrain-v2/5/9/13.vector.pbf" + "mapbox.mapbox-terrain-v2/5/8/13.vector.pbf" + "mapbox.mapbox-terrain-v2/5/9/11.vector.pbf" + "mapbox.mapbox-terrain-v2/5/7/12.vector.pbf" + "mapbox.mapbox-terrain-v2/5/8/11.vector.pbf" + "mapbox.mapbox-terrain-v2/5/7/13.vector.pbf" + "mapbox.mapbox-terrain-v2/5/7/11.vector.pbf" + + # greater la + "mapbox.mapbox-streets-v6/9/88/204.vector.pbf" + "mapbox.mapbox-streets-v6/9/88/205.vector.pbf" + "mapbox.mapbox-streets-v6/9/89/204.vector.pbf" + "mapbox.mapbox-streets-v6/9/89/205.vector.pbf" + "mapbox.mapbox-streets-v6/9/87/204.vector.pbf" + "mapbox.mapbox-streets-v6/9/88/203.vector.pbf" + "mapbox.mapbox-streets-v6/9/87/205.vector.pbf" + "mapbox.mapbox-streets-v6/9/89/203.vector.pbf" + "mapbox.mapbox-streets-v6/9/87/203.vector.pbf" + "mapbox.mapbox-terrain-v2/9/88/204.vector.pbf" + "mapbox.mapbox-terrain-v2/9/88/205.vector.pbf" + "mapbox.mapbox-terrain-v2/9/89/204.vector.pbf" + "mapbox.mapbox-terrain-v2/9/89/205.vector.pbf" + "mapbox.mapbox-terrain-v2/9/87/204.vector.pbf" + "mapbox.mapbox-terrain-v2/9/88/203.vector.pbf" + "mapbox.mapbox-terrain-v2/9/87/205.vector.pbf" + "mapbox.mapbox-terrain-v2/9/89/203.vector.pbf" + "mapbox.mapbox-terrain-v2/9/87/203.vector.pbf" + + # sf + "mapbox.mapbox-streets-v6/14/2621/6333.vector.pbf" + "mapbox.mapbox-streets-v6/14/2620/6333.vector.pbf" + "mapbox.mapbox-streets-v6/14/2621/6334.vector.pbf" + "mapbox.mapbox-streets-v6/14/2620/6334.vector.pbf" + "mapbox.mapbox-streets-v6/14/2621/6332.vector.pbf" + "mapbox.mapbox-streets-v6/14/2619/6333.vector.pbf" + "mapbox.mapbox-streets-v6/14/2620/6332.vector.pbf" + "mapbox.mapbox-streets-v6/14/2619/6334.vector.pbf" + "mapbox.mapbox-streets-v6/14/2619/6332.vector.pbf" + "mapbox.mapbox-terrain-v2/14/2621/6333.vector.pbf" + "mapbox.mapbox-terrain-v2/14/2620/6333.vector.pbf" + "mapbox.mapbox-terrain-v2/14/2621/6334.vector.pbf" + "mapbox.mapbox-terrain-v2/14/2620/6334.vector.pbf" + "mapbox.mapbox-terrain-v2/14/2621/6332.vector.pbf" + "mapbox.mapbox-terrain-v2/14/2619/6333.vector.pbf" + "mapbox.mapbox-terrain-v2/14/2620/6332.vector.pbf" + "mapbox.mapbox-terrain-v2/14/2619/6334.vector.pbf" + "mapbox.mapbox-terrain-v2/14/2619/6332.vector.pbf" + + # oakland + "mapbox.mapbox-streets-v6/12/657/1582.vector.pbf" + "mapbox.mapbox-streets-v6/12/657/1583.vector.pbf" + "mapbox.mapbox-streets-v6/12/658/1582.vector.pbf" + "mapbox.mapbox-streets-v6/12/658/1583.vector.pbf" + "mapbox.mapbox-streets-v6/12/656/1582.vector.pbf" + "mapbox.mapbox-streets-v6/12/657/1581.vector.pbf" + "mapbox.mapbox-streets-v6/12/656/1583.vector.pbf" + "mapbox.mapbox-streets-v6/12/658/1581.vector.pbf" + "mapbox.mapbox-streets-v6/12/656/1581.vector.pbf" + "mapbox.mapbox-terrain-v2/12/657/1582.vector.pbf" + "mapbox.mapbox-terrain-v2/12/657/1583.vector.pbf" + "mapbox.mapbox-terrain-v2/12/658/1582.vector.pbf" + "mapbox.mapbox-terrain-v2/12/658/1583.vector.pbf" + "mapbox.mapbox-terrain-v2/12/656/1582.vector.pbf" + "mapbox.mapbox-terrain-v2/12/657/1581.vector.pbf" + "mapbox.mapbox-terrain-v2/12/656/1583.vector.pbf" + "mapbox.mapbox-terrain-v2/12/658/1581.vector.pbf" + "mapbox.mapbox-terrain-v2/12/656/1581.vector.pbf" + + # germany + "mapbox.mapbox-streets-v6/6/34/21.vector.pbf" + "mapbox.mapbox-streets-v6/6/34/22.vector.pbf" + "mapbox.mapbox-streets-v6/6/33/21.vector.pbf" + "mapbox.mapbox-streets-v6/6/33/22.vector.pbf" + "mapbox.mapbox-streets-v6/6/34/20.vector.pbf" + "mapbox.mapbox-streets-v6/6/32/21.vector.pbf" + "mapbox.mapbox-streets-v6/6/33/20.vector.pbf" + "mapbox.mapbox-streets-v6/6/32/22.vector.pbf" + "mapbox.mapbox-streets-v6/6/32/20.vector.pbf" + "mapbox.mapbox-terrain-v2/6/34/21.vector.pbf" + "mapbox.mapbox-terrain-v2/6/34/22.vector.pbf" + "mapbox.mapbox-terrain-v2/6/33/21.vector.pbf" + "mapbox.mapbox-terrain-v2/6/33/22.vector.pbf" + "mapbox.mapbox-terrain-v2/6/34/20.vector.pbf" + "mapbox.mapbox-terrain-v2/6/32/21.vector.pbf" + "mapbox.mapbox-terrain-v2/6/33/20.vector.pbf" + "mapbox.mapbox-terrain-v2/6/32/22.vector.pbf" + "mapbox.mapbox-terrain-v2/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/ios/benchmark/assets/tiles/mapbox.mapbox-streets-v6.json b/ios/benchmark/assets/tiles/mapbox.mapbox-streets-v6.json new file mode 100644 index 0000000000..1d556bf6a9 --- /dev/null +++ b/ios/benchmark/assets/tiles/mapbox.mapbox-streets-v6.json @@ -0,0 +1 @@ +{"attribution":"<a href=\"https://www.mapbox.com/about/maps/\" target=\"_blank\">© Mapbox © 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],"description":"","filesize":0,"format":"pbf","id":"mapbox.mapbox-streets-v6","maskLevel":8,"maxzoom":15,"minzoom":0,"name":"Mapbox Streets V6","private":true,"scheme":"xyz","tilejson":"2.0.0","tiles":["asset://tiles/mapbox.mapbox-streets-v6/{z}/{x}/{y}.vector.pbf"],"vector_layers":[{"description":"","fields":{"class":"One of: cemetery, hospital, industrial, park, parking, pitch, sand, school, wood","osm_id":"Unique OSM ID number","type":"OSM tag, more specific than class"},"id":"landuse"},{"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"},{"description":"","fields":{"osm_id":"Unique OSM ID number"},"id":"water"},{"description":"","fields":{"osm_id":"Unique OSM ID number","type":"One of: runway, taxiway, apron"},"id":"aeroway"},{"description":"","fields":{"class":"One of: fence, hedge, cliff, gate","osm_id":"Unique OSM ID number"},"id":"barrier_line"},{"description":"","fields":{"osm_id":"Unique OSM ID number"},"id":"building"},{"description":"","fields":{"class":"One of: wetland, wetland_noveg","osm_id":"Unique OSM ID number"},"id":"landuse_overlay"},{"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 tunnels","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"},{"description":"","fields":{"class":"One of: motorway, motorway_link, main, street, street_limited, service, driveway, path, major_rail, minor_rail, aerialway","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"},{"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","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"},{"description":"","fields":{"admin_level":"The OSM administrative level of the boundary","disputed":"Number. Disputed boundaries are 1, all others are 0.","maritime":"Number. Maritime boundaries are 1, all others are 0."},"id":"admin"},{"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"},{"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"},{"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"},{"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"},{"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"},{"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"},{"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"},{"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"},{"description":"","fields":{"house_num":"House number","osm_id":"Unique OSM ID number"},"id":"housenum_label"}]}
\ No newline at end of file diff --git a/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2.json b/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2.json new file mode 100644 index 0000000000..4ee001abd1 --- /dev/null +++ b/ios/benchmark/assets/tiles/mapbox.mapbox-terrain-v2.json @@ -0,0 +1 @@ +{"attribution":"<a href=\"https://www.mapbox.com/about/maps/\" target=\"_blank\">© Mapbox © 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,3],"description":"","filesize":0,"format":"pbf","id":"mapbox.mapbox-terrain-v2","maskLevel":9,"maxzoom":14,"minzoom":0,"name":"Mapbox Terrain V2","private":true,"scheme":"xyz","tilejson":"2.0.0","tiles":["asset://tiles/mapbox.mapbox-terrain-v2/{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},{"description":"","fields":{"class":"One of: shadow, highlight","level":"Brightness %. One of: 94, 90, 89, 78, 67, 56"},"id":"hillshade","maxzoom":22,"minzoom":0},{"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}]}
\ No newline at end of file diff --git a/ios/benchmark/benchmark-ios.gypi b/ios/benchmark/benchmark-ios.gypi new file mode 100644 index 0000000000..0a3440d5cd --- /dev/null +++ b/ios/benchmark/benchmark-ios.gypi @@ -0,0 +1,63 @@ +{ + '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 ../ios/benchmark/img -type f)', + 'assets/glyphs', + 'assets/sprites', + 'assets/styles', + 'assets/tiles', + ], + + 'dependencies': [ + '../mbgl.gyp:core', + '../mbgl.gyp:platform-<(platform_lib)', + '../mbgl.gyp:http-<(http_lib)', + '../mbgl.gyp:asset-<(asset_lib)', + '../mbgl.gyp:cache-<(cache_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': '../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/ios/benchmark/fo/MBXBenchViewController.mm b/ios/benchmark/fo/MBXBenchViewController.mm new file mode 100644 index 0000000000..f1079d9e08 --- /dev/null +++ b/ios/benchmark/fo/MBXBenchViewController.mm @@ -0,0 +1,140 @@ +#import "MBXBenchViewController.h" + +#import <mbgl/ios/MGLMapView.h> +#import <mbgl/ios/MGLMapView_private.h> + +#include "locations.hpp" + +#include <chrono> + +@interface MBXBenchViewController () <MGLMapViewDelegate> + +@property (nonatomic) MGLMapView *mapView; + +@end + +@implementation MBXBenchViewController + +#pragma mark - Setup + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + NSURL* url = [[NSURL alloc] initWithString:@"asset://styles/mapbox-streets-v7.json"]; + self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds accessToken:nil 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.mapView setDebugActive:NO]; + + [self startBenchmarkIteration]; + + [self.view addSubview:self.mapView]; + +} + +using Clock = std::chrono::steady_clock; +using TimePoint = Clock::time_point; +template <typename Duration> +inline int64_t Microseconds(Duration d) { + return std::chrono::duration_cast<std::chrono::microseconds>(d).count(); +} + +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)mapViewDidFinishRenderingMap:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered +{ + (void)mapView; + (void)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 invalidate]; + } + 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 invalidate]; + 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 invalidate]; + } + return; + } +} + +- (NSUInteger)supportedInterfaceOrientations +{ + return UIInterfaceOrientationMaskLandscape; +} + +@end diff --git a/ios/benchmark/fo/benchmark-ios.gypi b/ios/benchmark/fo/benchmark-ios.gypi new file mode 100644 index 0000000000..ff004add53 --- /dev/null +++ b/ios/benchmark/fo/benchmark-ios.gypi @@ -0,0 +1,64 @@ +{ + '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 ../ios/benchmark/img -type f)', + 'assets/glyphs', + 'assets/sprites', + 'assets/styles', + 'assets/tiles', + ], + + 'dependencies': [ + '../mbgl.gyp:core', + '../mbgl.gyp:platform-<(platform_lib)', + '../mbgl.gyp:http-<(http_lib)', + '../mbgl.gyp:asset-<(asset_lib)', + '../mbgl.gyp:cache-<(cache_lib)', + ], + + 'sources': [ + './main.m', + '../../include/mbgl/ios/MGLMapView_private.h', + './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': '../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/ios/benchmark/img/Icon-40.png b/ios/benchmark/img/Icon-40.png Binary files differnew file mode 100644 index 0000000000..2425133189 --- /dev/null +++ b/ios/benchmark/img/Icon-40.png diff --git a/ios/benchmark/img/Icon-40@2x.png b/ios/benchmark/img/Icon-40@2x.png Binary files differnew file mode 100644 index 0000000000..b827b1e5a1 --- /dev/null +++ b/ios/benchmark/img/Icon-40@2x.png diff --git a/ios/benchmark/img/Icon-40@3x.png b/ios/benchmark/img/Icon-40@3x.png Binary files differnew file mode 100644 index 0000000000..89c7119ac6 --- /dev/null +++ b/ios/benchmark/img/Icon-40@3x.png diff --git a/ios/benchmark/img/Icon-60.png b/ios/benchmark/img/Icon-60.png Binary files differnew file mode 100644 index 0000000000..409fad814a --- /dev/null +++ b/ios/benchmark/img/Icon-60.png diff --git a/ios/benchmark/img/Icon-60@2x.png b/ios/benchmark/img/Icon-60@2x.png Binary files differnew file mode 100644 index 0000000000..89c7119ac6 --- /dev/null +++ b/ios/benchmark/img/Icon-60@2x.png diff --git a/ios/benchmark/img/Icon-60@3x.png b/ios/benchmark/img/Icon-60@3x.png Binary files differnew file mode 100644 index 0000000000..158bcfe27e --- /dev/null +++ b/ios/benchmark/img/Icon-60@3x.png diff --git a/ios/benchmark/img/Icon-72.png b/ios/benchmark/img/Icon-72.png Binary files differnew file mode 100644 index 0000000000..eecd90b5eb --- /dev/null +++ b/ios/benchmark/img/Icon-72.png diff --git a/ios/benchmark/img/Icon-72@2x.png b/ios/benchmark/img/Icon-72@2x.png Binary files differnew file mode 100644 index 0000000000..ca28d1fa05 --- /dev/null +++ b/ios/benchmark/img/Icon-72@2x.png diff --git a/ios/benchmark/img/Icon-76.png b/ios/benchmark/img/Icon-76.png Binary files differnew file mode 100644 index 0000000000..0ed2a26730 --- /dev/null +++ b/ios/benchmark/img/Icon-76.png diff --git a/ios/benchmark/img/Icon-76@2x.png b/ios/benchmark/img/Icon-76@2x.png Binary files differnew file mode 100644 index 0000000000..311a1658a8 --- /dev/null +++ b/ios/benchmark/img/Icon-76@2x.png diff --git a/ios/benchmark/img/Icon-Small-50.png b/ios/benchmark/img/Icon-Small-50.png Binary files differnew file mode 100644 index 0000000000..a071034743 --- /dev/null +++ b/ios/benchmark/img/Icon-Small-50.png diff --git a/ios/benchmark/img/Icon-Small-50@2x.png b/ios/benchmark/img/Icon-Small-50@2x.png Binary files differnew file mode 100644 index 0000000000..5d7c76d5e2 --- /dev/null +++ b/ios/benchmark/img/Icon-Small-50@2x.png diff --git a/ios/benchmark/img/Icon-Small.png b/ios/benchmark/img/Icon-Small.png Binary files differnew file mode 100644 index 0000000000..630d7c04c6 --- /dev/null +++ b/ios/benchmark/img/Icon-Small.png diff --git a/ios/benchmark/img/Icon-Small@2x.png b/ios/benchmark/img/Icon-Small@2x.png Binary files differnew file mode 100644 index 0000000000..c0ee89211a --- /dev/null +++ b/ios/benchmark/img/Icon-Small@2x.png diff --git a/ios/benchmark/img/Icon-Small@3x.png b/ios/benchmark/img/Icon-Small@3x.png Binary files differnew file mode 100644 index 0000000000..436a8b404c --- /dev/null +++ b/ios/benchmark/img/Icon-Small@3x.png diff --git a/ios/benchmark/img/Icon.png b/ios/benchmark/img/Icon.png Binary files differnew file mode 100644 index 0000000000..7af0c68a38 --- /dev/null +++ b/ios/benchmark/img/Icon.png diff --git a/ios/benchmark/img/Icon.svg b/ios/benchmark/img/Icon.svg new file mode 100644 index 0000000000..28df6f600d --- /dev/null +++ b/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/ios/benchmark/img/Icon@2x.png b/ios/benchmark/img/Icon@2x.png Binary files differnew file mode 100644 index 0000000000..ff5ea0c073 --- /dev/null +++ b/ios/benchmark/img/Icon@2x.png diff --git a/ios/benchmark/img/iTunesArtwork.png b/ios/benchmark/img/iTunesArtwork.png Binary files differnew file mode 100644 index 0000000000..f87c8734b5 --- /dev/null +++ b/ios/benchmark/img/iTunesArtwork.png diff --git a/ios/benchmark/img/iTunesArtwork@2x.png b/ios/benchmark/img/iTunesArtwork@2x.png Binary files differnew file mode 100644 index 0000000000..8d456a126f --- /dev/null +++ b/ios/benchmark/img/iTunesArtwork@2x.png diff --git a/ios/benchmark/locations.cpp b/ios/benchmark/locations.cpp new file mode 100644 index 0000000000..9f53877e40 --- /dev/null +++ b/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/ios/benchmark/locations.hpp b/ios/benchmark/locations.hpp new file mode 100644 index 0000000000..96f9c6025b --- /dev/null +++ b/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/ios/benchmark/main.m b/ios/benchmark/main.m new file mode 100644 index 0000000000..52bb445552 --- /dev/null +++ b/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])); + } +} diff --git a/scripts/ios/benchmark.sh b/scripts/ios/benchmark.sh new file mode 100755 index 0000000000..1c342e6533 --- /dev/null +++ b/scripts/ios/benchmark.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -e +set -o pipefail +set -u + +if [ -z "$(which ios-deploy)" ] ; then + npm install -g ios-deploy +fi + +(cd ios/benchmark/assets/tiles && ./download.sh) +(cd ios/benchmark/assets/glyphs && ./download.sh) + +make ibench + +ios-deploy --debug --noninteractive --bundle "gyp/build/Release-iphoneos/Bench GL.app" |