() {
+ @Override
+ public LocationLayerOptions createFromParcel(Parcel in) {
+ return new LocationLayerOptions(
+ in.readFloat(),
+ in.readInt(),
+ in.readInt(),
+ in.readInt() == 0 ? in.readString() : null,
+ in.readInt(),
+ in.readInt() == 0 ? in.readString() : null,
+ in.readInt(),
+ in.readInt() == 0 ? in.readString() : null,
+ in.readInt(),
+ in.readInt() == 0 ? in.readString() : null,
+ in.readInt(),
+ in.readInt() == 0 ? in.readString() : null,
+ in.readInt(),
+ in.readInt() == 0 ? in.readString() : null,
+ in.readInt() == 0 ? in.readInt() : null,
+ in.readInt() == 0 ? in.readInt() : null,
+ in.readInt() == 0 ? in.readInt() : null,
+ in.readInt() == 0 ? in.readInt() : null,
+ in.readInt() == 0 ? in.readInt() : null,
+ in.readFloat(),
+ in.readInt() == 1,
+ in.readLong(),
+ in.createIntArray(),
+ in.readDouble(),
+ in.readDouble(),
+ in.readFloat(),
+ in.readFloat(),
+ in.readFloat(),
+ in.readFloat(),
+ in.readString()
+ );
+ }
+
+ @Override
+ public LocationLayerOptions[] newArray(int size) {
+ return new LocationLayerOptions[size];
+ }
+ };
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeFloat(accuracyAlpha());
+ dest.writeInt(accuracyColor());
+ dest.writeInt(backgroundDrawableStale());
+ if (backgroundStaleName() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeString(backgroundStaleName());
+ }
+ dest.writeInt(foregroundDrawableStale());
+ if (foregroundStaleName() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeString(foregroundStaleName());
+ }
+ dest.writeInt(gpsDrawable());
+ if (gpsName() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeString(gpsName());
+ }
+ dest.writeInt(foregroundDrawable());
+ if (foregroundName() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeString(foregroundName());
+ }
+ dest.writeInt(backgroundDrawable());
+ if (backgroundName() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeString(backgroundName());
+ }
+ dest.writeInt(bearingDrawable());
+ if (bearingName() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeString(bearingName());
+ }
+ if (bearingTintColor() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeInt(bearingTintColor());
+ }
+ if (foregroundTintColor() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeInt(foregroundTintColor());
+ }
+ if (backgroundTintColor() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeInt(backgroundTintColor());
+ }
+ if (foregroundStaleTintColor() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeInt(foregroundStaleTintColor());
+ }
+ if (backgroundStaleTintColor() == null) {
+ dest.writeInt(1);
+ } else {
+ dest.writeInt(0);
+ dest.writeInt(backgroundStaleTintColor());
+ }
+ dest.writeFloat(elevation());
+ dest.writeInt(enableStaleState() ? 1 : 0);
+ dest.writeLong(staleStateTimeout());
+ dest.writeIntArray(padding());
+ dest.writeDouble(maxZoom());
+ dest.writeDouble(minZoom());
+ dest.writeFloat(maxZoomIconScale());
+ dest.writeFloat(minZoomIconScale());
+ dest.writeFloat(trackingInitialMoveThreshold());
+ dest.writeFloat(trackingMultiFingerMoveThreshold());
+ dest.writeString(layerBelow());
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /**
+ * Builder class for constructing a new instance of {@link LocationLayerOptions}.
+ */
+ public static class Builder {
+
+ /**
+ * Build a new instance of this {@link LocationLayerOptions} class.
+ *
+ * @return a new instance of {@link LocationLayerOptions}
+ */
+ public LocationLayerOptions build() {
+ LocationLayerOptions locationLayerOptions = autoBuild();
+ if (locationLayerOptions.accuracyAlpha() < 0 || locationLayerOptions.accuracyAlpha() > 1) {
+ throw new IllegalArgumentException(
+ "Location layer accuracy alpha value must be between 0.0 and 1.0.");
+ }
+
+ if (locationLayerOptions.elevation() < 0f) {
+ throw new IllegalArgumentException("Invalid shadow size "
+ + locationLayerOptions.elevation() + ". Must be >= 0");
+ }
+
+ return locationLayerOptions;
+ }
+
+ private Float accuracyAlpha;
+ private Integer accuracyColor;
+ private Integer backgroundDrawableStale;
+ private String backgroundStaleName;
+ private Integer foregroundDrawableStale;
+ private String foregroundStaleName;
+ private Integer gpsDrawable;
+ private String gpsName;
+ private Integer foregroundDrawable;
+ private String foregroundName;
+ private Integer backgroundDrawable;
+ private String backgroundName;
+ private Integer bearingDrawable;
+ private String bearingName;
+ private Integer bearingTintColor;
+ private Integer foregroundTintColor;
+ private Integer backgroundTintColor;
+ private Integer foregroundStaleTintColor;
+ private Integer backgroundStaleTintColor;
+ private Float elevation;
+ private Boolean enableStaleState;
+ private Long staleStateTimeout;
+ private int[] padding;
+ private Double maxZoom;
+ private Double minZoom;
+ private Float maxZoomIconScale;
+ private Float minZoomIconScale;
+ private Float trackingInitialMoveThreshold;
+ private Float trackingMultiFingerMoveThreshold;
+ private String layerBelow;
+
+ Builder() {
+ }
+
+ private Builder(LocationLayerOptions source) {
+ this.accuracyAlpha = source.accuracyAlpha();
+ this.accuracyColor = source.accuracyColor();
+ this.backgroundDrawableStale = source.backgroundDrawableStale();
+ this.backgroundStaleName = source.backgroundStaleName();
+ this.foregroundDrawableStale = source.foregroundDrawableStale();
+ this.foregroundStaleName = source.foregroundStaleName();
+ this.gpsDrawable = source.gpsDrawable();
+ this.gpsName = source.gpsName();
+ this.foregroundDrawable = source.foregroundDrawable();
+ this.foregroundName = source.foregroundName();
+ this.backgroundDrawable = source.backgroundDrawable();
+ this.backgroundName = source.backgroundName();
+ this.bearingDrawable = source.bearingDrawable();
+ this.bearingName = source.bearingName();
+ this.bearingTintColor = source.bearingTintColor();
+ this.foregroundTintColor = source.foregroundTintColor();
+ this.backgroundTintColor = source.backgroundTintColor();
+ this.foregroundStaleTintColor = source.foregroundStaleTintColor();
+ this.backgroundStaleTintColor = source.backgroundStaleTintColor();
+ this.elevation = source.elevation();
+ this.enableStaleState = source.enableStaleState();
+ this.staleStateTimeout = source.staleStateTimeout();
+ this.padding = source.padding();
+ this.maxZoom = source.maxZoom();
+ this.minZoom = source.minZoom();
+ this.maxZoomIconScale = source.maxZoomIconScale();
+ this.minZoomIconScale = source.minZoomIconScale();
+ this.trackingInitialMoveThreshold = source.trackingInitialMoveThreshold();
+ this.trackingMultiFingerMoveThreshold = source.trackingMultiFingerMoveThreshold();
+ this.layerBelow = source.layerBelow();
+ }
+
+ /**
+ * Set the opacity of the accuracy view to a value from 0 to 1, where 0 means the accuracy view
+ * is completely transparent and 1 means the view is completely opaque.
+ *
+ * @param accuracyAlpha the opacity of the accuracy view
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_accuracyAlpha
+ */
+ public LocationLayerOptions.Builder accuracyAlpha(float accuracyAlpha) {
+ this.accuracyAlpha = accuracyAlpha;
+ return this;
+ }
+
+ /**
+ * Solid color to use as the accuracy view color property.
+ *
+ * @param accuracyColor the color of the accuracy view
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_accuracyColor
+ */
+ public LocationLayerOptions.Builder accuracyColor(int accuracyColor) {
+ this.accuracyColor = accuracyColor;
+ return this;
+ }
+
+ /**
+ * Defines the drawable used for the stale background icon.
+ *
+ * @param backgroundDrawableStale the drawable resource ID
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_backgroundDrawableStale
+ */
+ public LocationLayerOptions.Builder backgroundDrawableStale(int backgroundDrawableStale) {
+ this.backgroundDrawableStale = backgroundDrawableStale;
+ return this;
+ }
+
+ /**
+ * Given a String image name, identical to one used in
+ * the first parameter of {@link com.mapbox.mapboxsdk.maps.MapboxMap#addImage(String, Bitmap)}, the
+ * plugin, will used this image in place of the provided or default mapbox_backgroundDrawableStale.
+ *
+ * A maki-icon name (example: "circle-15") may also be provided. These are images that can be loaded
+ * with certain styles. Note, this will fail if the provided icon name is not provided by the loaded map style.
+ *
+ *
+ * @param backgroundStaleName String icon or maki-icon name
+ * @return this builder for chaining options together
+ */
+ public LocationLayerOptions.Builder backgroundStaleName(@Nullable String backgroundStaleName) {
+ this.backgroundStaleName = backgroundStaleName;
+ return this;
+ }
+
+ /**
+ * Defines the drawable used for the stale foreground icon.
+ *
+ * @param foregroundDrawableStale the drawable resource ID
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_foregroundDrawableStale
+ */
+ public LocationLayerOptions.Builder foregroundDrawableStale(int foregroundDrawableStale) {
+ this.foregroundDrawableStale = foregroundDrawableStale;
+ return this;
+ }
+
+ /**
+ * Given a String image name, identical to one used in
+ * the first parameter of {@link com.mapbox.mapboxsdk.maps.MapboxMap#addImage(String, Bitmap)}, the
+ * plugin, will used this image in place of the provided or default mapbox_foregroundDrawableStale.
+ *
+ * A maki-icon name (example: "circle-15") may also be provided. These are images that can be loaded
+ * with certain styles. Note, this will fail if the provided icon name is not provided by the loaded map style.
+ *
+ *
+ * @param foregroundStaleName String icon or maki-icon name
+ * @return this builder for chaining options together
+ */
+ public LocationLayerOptions.Builder foregroundStaleName(@Nullable String foregroundStaleName) {
+ this.foregroundStaleName = foregroundStaleName;
+ return this;
+ }
+
+ /**
+ * Defines the drawable used for the navigation state icon.
+ *
+ * @param gpsDrawable the drawable resource ID
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_gpsDrawable
+ */
+ public LocationLayerOptions.Builder gpsDrawable(int gpsDrawable) {
+ this.gpsDrawable = gpsDrawable;
+ return this;
+ }
+
+ /**
+ * Given a String image name, identical to one used in
+ * the first parameter of {@link com.mapbox.mapboxsdk.maps.MapboxMap#addImage(String, Bitmap)}, the
+ * plugin, will used this image in place of the provided or default mapbox_gpsDrawable.
+ *
+ * A maki-icon name (example: "circle-15") may also be provided. These are images that can be loaded
+ * with certain styles. Note, this will fail if the provided icon name is not provided by the loaded map style.
+ *
+ *
+ * @param gpsName String icon or maki-icon name
+ * @return this builder for chaining options together
+ */
+ public LocationLayerOptions.Builder gpsName(@Nullable String gpsName) {
+ this.gpsName = gpsName;
+ return this;
+ }
+
+ /**
+ * Supply a Drawable that is to be rendered on top of all of the content in the Location Layer
+ * Plugin layer stack.
+ *
+ * @param foregroundDrawable the drawable resource used for the foreground layer
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_foregroundDrawable
+ */
+ public LocationLayerOptions.Builder foregroundDrawable(int foregroundDrawable) {
+ this.foregroundDrawable = foregroundDrawable;
+ return this;
+ }
+
+ /**
+ * Given a String image name, identical to one used in
+ * the first parameter of {@link com.mapbox.mapboxsdk.maps.MapboxMap#addImage(String, Bitmap)}, the
+ * plugin, will used this image in place of the provided or default mapbox_foregroundDrawable.
+ *
+ * A maki-icon name (example: "circle-15") may also be provided. These are images that can be loaded
+ * with certain styles. Note, this will fail if the provided icon name is not provided by the loaded map style.
+ *
+ *
+ * @param foregroundName String icon or maki-icon name
+ * @return this builder for chaining options together
+ */
+ public LocationLayerOptions.Builder foregroundName(@Nullable String foregroundName) {
+ this.foregroundName = foregroundName;
+ return this;
+ }
+
+ /**
+ * Defines the drawable used for the background state icon.
+ *
+ * @param backgroundDrawable the drawable resource ID
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_backgroundDrawable
+ */
+ public LocationLayerOptions.Builder backgroundDrawable(int backgroundDrawable) {
+ this.backgroundDrawable = backgroundDrawable;
+ return this;
+ }
+
+ /**
+ * Given a String image name, identical to one used in
+ * the first parameter of {@link com.mapbox.mapboxsdk.maps.MapboxMap#addImage(String, Bitmap)}, the
+ * plugin, will used this image in place of the provided or default mapbox_backgroundDrawable.
+ *
+ * A maki-icon name (example: "circle-15") may also be provided. These are images that can be loaded
+ * with certain styles. Note, this will fail if the provided icon name is not provided by the loaded map style.
+ *
+ *
+ * @param backgroundName String icon or maki-icon name
+ * @return this builder for chaining options together
+ */
+ public LocationLayerOptions.Builder backgroundName(@Nullable String backgroundName) {
+ this.backgroundName = backgroundName;
+ return this;
+ }
+
+ /**
+ * Defines the drawable used for the bearing icon.
+ *
+ * @param bearingDrawable the drawable resource ID
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_bearingDrawable
+ */
+ public LocationLayerOptions.Builder bearingDrawable(int bearingDrawable) {
+ this.bearingDrawable = bearingDrawable;
+ return this;
+ }
+
+ /**
+ * Given a String image name, identical to one used in
+ * the first parameter of {@link com.mapbox.mapboxsdk.maps.MapboxMap#addImage(String, Bitmap)}, the
+ * plugin, will used this image in place of the provided or default mapbox_bearingDrawable.
+ *
+ * A maki-icon name (example: "circle-15") may also be provided. These are images that can be loaded
+ * with certain styles. Note, this will fail if the provided icon name is not provided by the loaded map style.
+ *
+ *
+ * @param bearingName String icon or maki-icon name
+ * @return this builder for chaining options together
+ */
+ public LocationLayerOptions.Builder bearingName(@Nullable String bearingName) {
+ this.bearingName = bearingName;
+ return this;
+ }
+
+ /**
+ * Defines the bearing icon color as an integer.
+ *
+ * @param bearingTintColor the color integer resource
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_bearingTintColor
+ */
+ public LocationLayerOptions.Builder bearingTintColor(@Nullable Integer bearingTintColor) {
+ this.bearingTintColor = bearingTintColor;
+ return this;
+ }
+
+ /**
+ * Defines the foreground color as an integer.
+ *
+ * @param foregroundTintColor the color integer resource
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_foregroundTintColor
+ */
+ public LocationLayerOptions.Builder foregroundTintColor(@Nullable Integer foregroundTintColor) {
+ this.foregroundTintColor = foregroundTintColor;
+ return this;
+ }
+
+ /**
+ * Defines the background color as an integer.
+ *
+ * @param backgroundTintColor the color integer resource
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_backgroundTintColor
+ */
+ public LocationLayerOptions.Builder backgroundTintColor(@Nullable Integer backgroundTintColor) {
+ this.backgroundTintColor = backgroundTintColor;
+ return this;
+ }
+
+ /**
+ * Defines the foreground stale color as an integer.
+ *
+ * @param foregroundStaleTintColor the color integer resource
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_foregroundStaleTintColor
+ */
+ public LocationLayerOptions.Builder foregroundStaleTintColor(@Nullable Integer foregroundStaleTintColor) {
+ this.foregroundStaleTintColor = foregroundStaleTintColor;
+ return this;
+ }
+
+ /**
+ * Defines the background stale color as an integer.
+ *
+ * @param backgroundStaleTintColor the color integer resource
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_backgroundStaleTintColor
+ */
+ public LocationLayerOptions.Builder backgroundStaleTintColor(@Nullable Integer backgroundStaleTintColor) {
+ this.backgroundStaleTintColor = backgroundStaleTintColor;
+ return this;
+ }
+
+ /**
+ * Sets the base elevation of this view, in pixels.
+ *
+ * @param elevation the elevation currently set for the location layer icon
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_elevation
+ */
+ public LocationLayerOptions.Builder elevation(float elevation) {
+ this.elevation = elevation;
+ return this;
+ }
+
+ /**
+ * Enable or disable to stale state mode. This mode indicates to the user that the location
+ * being displayed on the map hasn't been updated in a specific amount of time.
+ *
+ * @param enabled whether the stale state mode is enabled or not
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_enableStaleState
+ */
+ public LocationLayerOptions.Builder enableStaleState(boolean enabled) {
+ this.enableStaleState = enabled;
+ return this;
+ }
+
+ /**
+ * Set the timeout before the location icon becomes stale. The timer begins approximately when a
+ * new location update comes in and using this defined time, if an update hasn't occurred by the
+ * end, the location is considered stale.
+ *
+ * @param timeout the duration in milliseconds which it should take before the location layer is
+ * considered stale
+ * @return this builder for chaining options together
+ * @attr ref R.styleable#LocationLayer_staleStateTimeout
+ */
+ public LocationLayerOptions.Builder staleStateTimeout(long timeout) {
+ this.staleStateTimeout = timeout;
+ return this;
+ }
+
+ /**
+ * Sets the distance from the edges of the map view’s frame to the edges of the map
+ * view’s logical viewport.
+ *
+ *
+ * When the value of this property is equal to {0,0,0,0}, viewport
+ * properties such as `centerCoordinate` assume a viewport that matches the map
+ * view’s frame. Otherwise, those properties are inset, excluding part of the
+ * frame from the viewport. For instance, if the only the top edge is inset, the
+ * map center is effectively shifted downward.
+ *
+ *
+ * @param padding The margins for the map in pixels (left, top, right, bottom).
+ */
+ public LocationLayerOptions.Builder padding(int[] padding) {
+ if (padding == null) {
+ throw new NullPointerException("Null padding");
+ }
+ this.padding = padding;
+ return this;
+ }
+
+ /**
+ * Sets the maximum zoom level the map can be displayed at.
+ *
+ * The default maximum zoomn level is 22. The upper bound for this value is 25.5.
+ *
+ * @param maxZoom The new maximum zoom level.
+ */
+ public LocationLayerOptions.Builder maxZoom(double maxZoom) {
+ this.maxZoom = maxZoom;
+ return this;
+ }
+
+ /**
+ * Sets the minimum zoom level the map can be displayed at.
+ *
+ * @param minZoom The new minimum zoom level.
+ */
+ public LocationLayerOptions.Builder minZoom(double minZoom) {
+ this.minZoom = minZoom;
+ return this;
+ }
+
+ /**
+ * Sets the scale factor of the location icon when the map is zoomed in. Based on {@link #maxZoom()}.
+ * Scaling is linear and the new pixel size of the image will be the original pixel size multiplied by the argument.
+ *
+ * Set both this and {@link #minZoomIconScale(float)} to 1f to disable location icon scaling.
+ *
+ *
+ * @param maxZoomIconScale icon scale factor
+ */
+ public LocationLayerOptions.Builder maxZoomIconScale(float maxZoomIconScale) {
+ this.maxZoomIconScale = maxZoomIconScale;
+ return this;
+ }
+
+ /**
+ * Sets the scale factor of the location icon when the map is zoomed out. Based on {@link #maxZoom()}.
+ * Scaling is linear and the new pixel size of the image will be the original pixel size multiplied by the argument.
+ *
+ * Set both this and {@link #maxZoomIconScale(float)} to 1f to disable location icon scaling.
+ *
+ *
+ * @param minZoomIconScale icon scale factor
+ */
+ public LocationLayerOptions.Builder minZoomIconScale(float minZoomIconScale) {
+ this.minZoomIconScale = minZoomIconScale;
+ return this;
+ }
+
+ /**
+ * Sets minimum single pointer movement (map pan) in pixels required to break camera tracking.
+ *
+ * @param moveThreshold the minimum movement
+ */
+ public LocationLayerOptions.Builder trackingInitialMoveThreshold(float moveThreshold) {
+ this.trackingInitialMoveThreshold = moveThreshold;
+ return this;
+ }
+
+ /**
+ * Sets minimum multi pointer movement (map pan) in pixels required to break camera tracking
+ * (for example during scale gesture).
+ *
+ * @param moveThreshold the minimum movement
+ */
+ public LocationLayerOptions.Builder trackingMultiFingerMoveThreshold(float moveThreshold) {
+ this.trackingMultiFingerMoveThreshold = moveThreshold;
+ return this;
+ }
+
+ /**
+ * Sets the layer id to set the location layer plugin below to.
+ *
+ * @param layerBelow the id to set the location layer plugin below to.
+ */
+ public LocationLayerOptions.Builder layerBelow(String layerBelow) {
+ this.layerBelow = layerBelow;
+ return this;
+ }
+
+ LocationLayerOptions autoBuild() {
+ String missing = "";
+ if (this.accuracyAlpha == null) {
+ missing += " accuracyAlpha";
+ }
+ if (this.accuracyColor == null) {
+ missing += " accuracyColor";
+ }
+ if (this.backgroundDrawableStale == null) {
+ missing += " backgroundDrawableStale";
+ }
+ if (this.foregroundDrawableStale == null) {
+ missing += " foregroundDrawableStale";
+ }
+ if (this.gpsDrawable == null) {
+ missing += " gpsDrawable";
+ }
+ if (this.foregroundDrawable == null) {
+ missing += " foregroundDrawable";
+ }
+ if (this.backgroundDrawable == null) {
+ missing += " backgroundDrawable";
+ }
+ if (this.bearingDrawable == null) {
+ missing += " bearingDrawable";
+ }
+ if (this.elevation == null) {
+ missing += " elevation";
+ }
+ if (this.enableStaleState == null) {
+ missing += " enableStaleState";
+ }
+ if (this.staleStateTimeout == null) {
+ missing += " staleStateTimeout";
+ }
+ if (this.padding == null) {
+ missing += " padding";
+ }
+ if (this.maxZoom == null) {
+ missing += " maxZoom";
+ }
+ if (this.minZoom == null) {
+ missing += " minZoom";
+ }
+ if (this.maxZoomIconScale == null) {
+ missing += " maxZoomIconScale";
+ }
+ if (this.minZoomIconScale == null) {
+ missing += " minZoomIconScale";
+ }
+ if (this.trackingInitialMoveThreshold == null) {
+ missing += " trackingInitialMoveThreshold";
+ }
+ if (this.trackingMultiFingerMoveThreshold == null) {
+ missing += " trackingMultiFingerMoveThreshold";
+ }
+ if (!missing.isEmpty()) {
+ throw new IllegalStateException("Missing required properties:" + missing);
+ }
+ return new LocationLayerOptions(
+ this.accuracyAlpha,
+ this.accuracyColor,
+ this.backgroundDrawableStale,
+ this.backgroundStaleName,
+ this.foregroundDrawableStale,
+ this.foregroundStaleName,
+ this.gpsDrawable,
+ this.gpsName,
+ this.foregroundDrawable,
+ this.foregroundName,
+ this.backgroundDrawable,
+ this.backgroundName,
+ this.bearingDrawable,
+ this.bearingName,
+ this.bearingTintColor,
+ this.foregroundTintColor,
+ this.backgroundTintColor,
+ this.foregroundStaleTintColor,
+ this.backgroundStaleTintColor,
+ this.elevation,
+ this.enableStaleState,
+ this.staleStateTimeout,
+ this.padding,
+ this.maxZoom,
+ this.minZoom,
+ this.maxZoomIconScale,
+ this.minZoomIconScale,
+ this.trackingInitialMoveThreshold,
+ this.trackingMultiFingerMoveThreshold,
+ this.layerBelow);
+ }
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java
new file mode 100644
index 0000000000..70fc2ae298
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPlugin.java
@@ -0,0 +1,966 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.annotation.SuppressLint;
+import android.arch.lifecycle.Lifecycle;
+import android.arch.lifecycle.LifecycleObserver;
+import android.arch.lifecycle.OnLifecycleEvent;
+import android.content.Context;
+import android.hardware.SensorManager;
+import android.location.Location;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.annotation.RequiresPermission;
+import android.support.annotation.StyleRes;
+import android.support.v7.app.AppCompatDelegate;
+import android.view.WindowManager;
+
+import com.mapbox.android.core.location.LocationEngine;
+import com.mapbox.android.core.location.LocationEngineListener;
+import com.mapbox.android.core.location.LocationEnginePriority;
+import com.mapbox.android.core.location.LocationEngineProvider;
+import com.mapbox.mapboxsdk.R;
+import com.mapbox.mapboxsdk.camera.CameraPosition;
+import com.mapbox.mapboxsdk.camera.CameraUpdate;
+import com.mapbox.mapboxsdk.geometry.LatLng;
+import com.mapbox.mapboxsdk.maps.MapView;
+import com.mapbox.mapboxsdk.maps.MapView.OnMapChangedListener;
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+import com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraIdleListener;
+import com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveListener;
+import com.mapbox.mapboxsdk.maps.MapboxMap.OnMapClickListener;
+import com.mapbox.mapboxsdk.plugins.locationlayer.modes.CameraMode;
+import com.mapbox.mapboxsdk.plugins.locationlayer.modes.RenderMode;
+
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import timber.log.Timber;
+
+import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
+import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.DEFAULT_TRACKING_TILT_ANIMATION_DURATION;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION;
+
+/**
+ * The Location layer plugin provides location awareness to your mobile application. Enabling this
+ * plugin provides a contextual experience to your users by showing an icon representing the users
+ * current location. A few different modes are offered to provide the right context to your users at
+ * the correct time. {@link RenderMode#NORMAL} simply shows the users location on the map
+ * represented as a dot. {@link RenderMode#COMPASS} mode allows you to display an arrow icon
+ * (by default) that points in the direction the device is pointing in.
+ * {@link RenderMode#GPS} can be used in conjunction with our Navigation SDK to
+ * display a larger icon (customized with {@link LocationLayerOptions#gpsDrawable()}) we call the user puck.
+ *
+ * This plugin also offers the ability to set a map camera behavior for tracking the user
+ * location. These different {@link CameraMode}s will track, stop tracking the location based on the
+ * mode set with {@link LocationLayerPlugin#setCameraMode(int)}.
+ *
+ * Lastly, {@link LocationLayerPlugin#setLocationLayerEnabled(boolean)} can be used
+ * to disable the Location Layer but keep the instance around till the activity is destroyed.
+ *
+ * Using this plugin requires you to request permission beforehand manually or using
+ * {@link com.mapbox.android.core.permissions.PermissionsManager}. Either
+ * {@code ACCESS_COARSE_LOCATION} or {@code ACCESS_FINE_LOCATION} permissions can be requested and
+ * this plugin work as expected.
+ *
+ * When instantiating the plugin for the first time, the map's max/min zoom levels will be set to
+ * {@link LocationLayerOptions#MAX_ZOOM_DEFAULT} and {@link LocationLayerOptions#MIN_ZOOM_DEFAULT} respectively.
+ * You can adjust the zoom range with {@link LocationLayerOptions#maxZoom()} and {@link LocationLayerOptions#minZoom()}.
+ */
+public final class LocationLayerPlugin implements LifecycleObserver {
+
+ private final MapboxMap mapboxMap;
+ private final MapView mapView;
+ private LocationLayerOptions options;
+ private LocationEngine locationEngine;
+ private CompassEngine compassEngine;
+ private boolean usingInternalLocationEngine;
+
+ private LocationLayer locationLayer;
+ private LocationLayerCamera locationLayerCamera;
+
+ private PluginAnimatorCoordinator pluginAnimatorCoordinator;
+
+ /**
+ * Holds last location which is being returned in the {@link #getLastKnownLocation()}
+ * when there is no {@link #locationEngine} set or when the last location returned by the engine is null.
+ */
+ private Location lastLocation;
+ private CameraPosition lastCameraPosition;
+
+ /**
+ * Indicates that the plugin is enabled and should be displaying location if Mapbox components are available and
+ * the lifecycle is in a resumed state.
+ */
+ private boolean isEnabled;
+
+ /**
+ * Indicated that plugin's lifecycle {@link #onStart()} method has been called or the plugin is initialized..
+ * This allows Mapbox components enter started state and display data, and adds state safety for methods like
+ * {@link #setLocationLayerEnabled(boolean)}
+ *
+ * Initialized in a started state because the plugin can be instantiated after lifecycle's onStart() and
+ * the developer might not register the lifecycle observer but call lifecycle methods manually instead.
+ */
+ private boolean isPluginStarted = true;
+
+ /**
+ * Indicates if Mapbox components are ready to be interacted with. This can differ from {@link #isPluginStarted}
+ * if the Mapbox style is being reloaded.
+ */
+ private boolean isLocationLayerStarted;
+
+ private StaleStateManager staleStateManager;
+ private final CopyOnWriteArrayList onLocationStaleListeners
+ = new CopyOnWriteArrayList<>();
+ private final CopyOnWriteArrayList onLocationLayerClickListeners
+ = new CopyOnWriteArrayList<>();
+ private final CopyOnWriteArrayList onLocationLayerLongClickListeners
+ = new CopyOnWriteArrayList<>();
+ private final CopyOnWriteArrayList onCameraTrackingChangedListeners
+ = new CopyOnWriteArrayList<>();
+
+ /**
+ * Construct a LocationLayerPlugin
+ *
+ * Note: This constructor will initialize and use an internal {@link LocationEngine}.
+ *
+ *
+ * @param mapView the MapView to apply the LocationLayerPlugin to
+ * @param mapboxMap the MapboxMap to apply the LocationLayerPlugin with
+ */
+ public LocationLayerPlugin(@NonNull MapView mapView, @NonNull MapboxMap mapboxMap) {
+ this.mapboxMap = mapboxMap;
+ this.mapView = mapView;
+ options = LocationLayerOptions.createFromAttributes(mapView.getContext(), R.style.mapbox_LocationLayer);
+ initializeLocationEngine();
+ initialize();
+ }
+
+ /**
+ * Construct a LocationLayerPlugin
+ *
+ * Note: This constructor will initialize and use an internal {@link LocationEngine}.
+ *
+ *
+ * @param mapView the MapView to apply the LocationLayerPlugin to
+ * @param mapboxMap the MapboxMap to apply the LocationLayerPlugin with
+ * @param options to customize the user location icons inside your apps
+ */
+ public LocationLayerPlugin(@NonNull MapView mapView, @NonNull MapboxMap mapboxMap,
+ @NonNull LocationLayerOptions options) {
+ this.mapboxMap = mapboxMap;
+ this.mapView = mapView;
+ this.options = options;
+ initializeLocationEngine();
+ initialize();
+ }
+
+ /**
+ * Construct a LocationLayerPlugin
+ *
+ * Note: This constructor will initialize and use an internal {@link LocationEngine}.
+ *
+ *
+ * @param mapView the MapView to apply the LocationLayerPlugin to
+ * @param mapboxMap the MapboxMap to apply the LocationLayerPlugin with
+ */
+ public LocationLayerPlugin(@NonNull MapView mapView, @NonNull MapboxMap mapboxMap,
+ @StyleRes int styleRes) {
+ this.mapboxMap = mapboxMap;
+ this.mapView = mapView;
+ this.options = LocationLayerOptions.createFromAttributes(mapView.getContext(), styleRes);
+ initializeLocationEngine();
+ initialize();
+ }
+
+ /**
+ * Construct a LocationLayerPlugin
+ *
+ * @param mapView the MapView to apply the LocationLayerPlugin to
+ * @param mapboxMap the MapboxMap to apply the LocationLayerPlugin with
+ * @param locationEngine the {@link LocationEngine} this plugin should use to update
+ */
+ public LocationLayerPlugin(@NonNull MapView mapView, @NonNull MapboxMap mapboxMap,
+ @Nullable LocationEngine locationEngine) {
+ this(mapView, mapboxMap, locationEngine,
+ LocationLayerOptions.createFromAttributes(mapView.getContext(),
+ R.style.mapbox_LocationLayer));
+ }
+
+ /**
+ * Construct a LocationLayerPlugin
+ *
+ * @param mapView the MapView to apply the LocationLayerPlugin to
+ * @param mapboxMap the MapboxMap to apply the LocationLayerPlugin with
+ * @param locationEngine the {@link LocationEngine} this plugin should use to update
+ * @param styleRes customize the user location icons inside your apps {@code style.xml}
+ */
+ public LocationLayerPlugin(@NonNull MapView mapView, @NonNull MapboxMap mapboxMap,
+ @Nullable LocationEngine locationEngine, @StyleRes int styleRes) {
+ this(mapView, mapboxMap, locationEngine,
+ LocationLayerOptions.createFromAttributes(mapView.getContext(), styleRes));
+ }
+
+ /**
+ * Construct a LocationLayerPlugin
+ *
+ * @param mapView the MapView to apply the LocationLayerPlugin to
+ * @param mapboxMap the MapboxMap to apply the LocationLayerPlugin with
+ * @param locationEngine the {@link LocationEngine} this plugin should use to update
+ * @param options to customize the user location icons inside your apps
+ */
+ public LocationLayerPlugin(@NonNull MapView mapView, @NonNull MapboxMap mapboxMap,
+ @Nullable LocationEngine locationEngine,
+ @NonNull LocationLayerOptions options) {
+ this.locationEngine = locationEngine;
+ this.mapboxMap = mapboxMap;
+ this.mapView = mapView;
+ this.options = options;
+ initialize();
+ }
+
+ /**
+ * This method will show or hide the location icon and enable or disable the camera
+ * tracking the location.
+ *
+ * @param isEnabled true to show layers and enable camera, false otherwise
+ */
+ public void setLocationLayerEnabled(boolean isEnabled) {
+ if (isEnabled) {
+ enableLocationLayerPlugin();
+ } else {
+ disableLocationLayerPlugin();
+ }
+ }
+
+ /**
+ * Returns whether the plugin is enabled, meaning that location can be displayed and camera modes can be used.
+ *
+ * @return true if the plugin is enabled, false otherwise
+ */
+ public boolean isLocationLayerEnabled() {
+ return isEnabled;
+ }
+
+ /**
+ * Sets the camera mode, which determines how the map camera will track the rendered location.
+ *
+ *
+ * - {@link CameraMode#NONE}: No camera tracking
+ * - {@link CameraMode#NONE_COMPASS}: Camera does not track location, but does track compass bearing
+ * - {@link CameraMode#NONE_GPS}: Camera does not track location, but does track GPS bearing
+ * - {@link CameraMode#TRACKING}: Camera tracks the user location
+ * - {@link CameraMode#TRACKING_COMPASS}: Camera tracks the user location, with bearing provided by a compass
+ * - {@link CameraMode#TRACKING_GPS}: Camera tracks the user location, with normalized bearing
+ * - {@link CameraMode#TRACKING_GPS_NORTH}: Camera tracks the user location, with bearing always set to north
+ *
+ *
+ * @param cameraMode one of the modes found in {@link CameraMode}
+ */
+ public void setCameraMode(@CameraMode.Mode int cameraMode) {
+ boolean isGpsNorth = cameraMode == CameraMode.TRACKING_GPS_NORTH;
+ pluginAnimatorCoordinator.resetAllCameraAnimations(mapboxMap.getCameraPosition(), isGpsNorth);
+ locationLayerCamera.setCameraMode(cameraMode);
+ }
+
+ /**
+ * Provides the current camera mode being used to track
+ * the location or compass updates.
+ *
+ * @return the current camera mode
+ */
+ @CameraMode.Mode
+ public int getCameraMode() {
+ return locationLayerCamera.getCameraMode();
+ }
+
+ /**
+ * Sets the render mode, which determines how the location updates will be rendered on the map.
+ *
+ *
+ * - {@link RenderMode#NORMAL}: Shows user location, bearing ignored
+ * - {@link RenderMode#COMPASS}: Shows user location with bearing considered from compass
+ * - {@link RenderMode#GPS}: Shows user location with bearing considered from location
+ *
+ *
+ * @param renderMode one of the modes found in {@link RenderMode}
+ */
+ public void setRenderMode(@RenderMode.Mode int renderMode) {
+ locationLayer.setRenderMode(renderMode);
+ updateLayerOffsets(true);
+ }
+
+ /**
+ * Provides the current render mode being used to show
+ * the location and/or compass updates on the map.
+ *
+ * @return the current render mode
+ */
+ @RenderMode.Mode
+ public int getRenderMode() {
+ return locationLayer.getRenderMode();
+ }
+
+ /**
+ * Returns the current location options being used.
+ *
+ * @return the current {@link LocationLayerOptions}
+ */
+ public LocationLayerOptions getLocationLayerOptions() {
+ return options;
+ }
+
+ /**
+ * Apply a new LocationLayer style with a style resource.
+ *
+ * @param styleRes a XML style overriding some or all the options
+ */
+ public void applyStyle(@StyleRes int styleRes) {
+ applyStyle(LocationLayerOptions.createFromAttributes(mapView.getContext(), styleRes));
+ }
+
+ /**
+ * Apply a new LocationLayer style with location layer options.
+ *
+ * @param options to update the current style
+ */
+ public void applyStyle(LocationLayerOptions options) {
+ this.options = options;
+ locationLayer.applyStyle(options);
+ if (!options.enableStaleState()) {
+ staleStateManager.onStop();
+ }
+ staleStateManager.setDelayTime(options.staleStateTimeout());
+ updateMapWithOptions(options);
+ }
+
+ /**
+ * Zooms to the desired zoom level.
+ * This API can only be used in pair with camera modes other than {@link CameraMode#NONE}.
+ * If you are not using any of {@link CameraMode} modes,
+ * use one of {@link MapboxMap#moveCamera(CameraUpdate)},
+ * {@link MapboxMap#easeCamera(CameraUpdate)} or {@link MapboxMap#animateCamera(CameraUpdate)} instead.
+ *
+ * @param zoomLevel The desired zoom level.
+ * @param animationDuration The zoom animation duration.
+ * @param callback The callback with finish/cancel information
+ */
+ public void zoomWhileTracking(double zoomLevel, long animationDuration,
+ @Nullable MapboxMap.CancelableCallback callback) {
+ if (!isLocationLayerStarted) {
+ return;
+ } else if (getCameraMode() == CameraMode.NONE) {
+ Timber.e("%s%s",
+ "LocationLayerPlugin#zoomWhileTracking method can only be used",
+ " when a camera mode other than CameraMode#NONE is engaged.");
+ return;
+ }
+ pluginAnimatorCoordinator.feedNewZoomLevel(zoomLevel, mapboxMap.getCameraPosition(), animationDuration, callback);
+ }
+
+ /**
+ * Zooms to the desired zoom level.
+ * This API can only be used in pair with camera modes other than {@link CameraMode#NONE}.
+ * If you are not using any of {@link CameraMode} modes,
+ * use one of {@link MapboxMap#moveCamera(CameraUpdate)},
+ * {@link MapboxMap#easeCamera(CameraUpdate)} or {@link MapboxMap#animateCamera(CameraUpdate)} instead.
+ *
+ * @param zoomLevel The desired zoom level.
+ * @param animationDuration The zoom animation duration.
+ */
+ public void zoomWhileTracking(double zoomLevel, long animationDuration) {
+ zoomWhileTracking(zoomLevel, animationDuration, null);
+ }
+
+ /**
+ * Zooms to the desired zoom level.
+ * This API can only be used in pair with camera modes other than {@link CameraMode#NONE}.
+ * If you are not using any of {@link CameraMode} modes,
+ * use one of {@link MapboxMap#moveCamera(CameraUpdate)},
+ * {@link MapboxMap#easeCamera(CameraUpdate)} or {@link MapboxMap#animateCamera(CameraUpdate)} instead.
+ *
+ * @param zoomLevel The desired zoom level.
+ */
+ public void zoomWhileTracking(double zoomLevel) {
+ zoomWhileTracking(zoomLevel, DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION, null);
+ }
+
+ /**
+ * Cancels animation started by {@link #zoomWhileTracking(double, long, MapboxMap.CancelableCallback)}.
+ */
+ public void cancelZoomWhileTrackingAnimation() {
+ pluginAnimatorCoordinator.cancelZoomAnimation();
+ }
+
+ /**
+ * Tilts the camera.
+ * This API can only be used in pair with camera modes other than {@link CameraMode#NONE}.
+ * If you are not using any of {@link CameraMode} modes,
+ * use one of {@link MapboxMap#moveCamera(CameraUpdate)},
+ * {@link MapboxMap#easeCamera(CameraUpdate)} or {@link MapboxMap#animateCamera(CameraUpdate)} instead.
+ *
+ * @param tilt The desired camera tilt.
+ * @param animationDuration The tilt animation duration.
+ * @param callback The callback with finish/cancel information
+ */
+ public void tiltWhileTracking(double tilt, long animationDuration,
+ @Nullable MapboxMap.CancelableCallback callback) {
+ if (!isLocationLayerStarted) {
+ return;
+ } else if (getCameraMode() == CameraMode.NONE) {
+ Timber.e("%s%s",
+ "LocationLayerPlugin#tiltWhileTracking method can only be used",
+ " when a camera mode other than CameraMode#NONE is engaged.");
+ return;
+ }
+ pluginAnimatorCoordinator.feedNewTilt(tilt, mapboxMap.getCameraPosition(), animationDuration, callback);
+ }
+
+ /**
+ * Tilts the camera.
+ * This API can only be used in pair with camera modes other than {@link CameraMode#NONE}.
+ * If you are not using any of {@link CameraMode} modes,
+ * use one of {@link MapboxMap#moveCamera(CameraUpdate)},
+ * {@link MapboxMap#easeCamera(CameraUpdate)} or {@link MapboxMap#animateCamera(CameraUpdate)} instead.
+ *
+ * @param tilt The desired camera tilt.
+ * @param animationDuration The tilt animation duration.
+ */
+ public void tiltWhileTracking(double tilt, long animationDuration) {
+ tiltWhileTracking(tilt, animationDuration, null);
+ }
+
+ /**
+ * Tilts the camera.
+ * This API can only be used in pair with camera modes other than {@link CameraMode#NONE}.
+ * If you are not using any of {@link CameraMode} modes,
+ * use one of {@link MapboxMap#moveCamera(CameraUpdate)},
+ * {@link MapboxMap#easeCamera(CameraUpdate)} or {@link MapboxMap#animateCamera(CameraUpdate)} instead.
+ *
+ * @param tilt The desired camera tilt.
+ */
+ public void tiltWhileTracking(double tilt) {
+ tiltWhileTracking(tilt, DEFAULT_TRACKING_TILT_ANIMATION_DURATION, null);
+ }
+
+ /**
+ * Cancels animation started by {@link #tiltWhileTracking(double, long, MapboxMap.CancelableCallback)}.
+ */
+ public void cancelTiltWhileTrackingAnimation() {
+ pluginAnimatorCoordinator.cancelTiltAnimation();
+ }
+
+ /**
+ * Use to either force a location update or to manually control when the user location gets
+ * updated.
+ *
+ * @param location where the location icon is placed on the map
+ */
+ public void forceLocationUpdate(@Nullable Location location) {
+ updateLocation(location, false);
+ }
+
+ /**
+ * Set the location engine to update the current user location.
+ *
+ * If {@code null} is passed in, all updates will occur through the
+ * {@link LocationLayerPlugin#forceLocationUpdate(Location)} method.
+ *
+ * @param locationEngine a {@link LocationEngine} this plugin should use to handle updates
+ */
+ public void setLocationEngine(@Nullable LocationEngine locationEngine) {
+ if (this.locationEngine != null) {
+ // If internal location engines being used, extra steps need to be taken to deconstruct the
+ // instance.
+ if (usingInternalLocationEngine) {
+ this.locationEngine.removeLocationUpdates();
+ this.locationEngine.deactivate();
+ usingInternalLocationEngine = false;
+ }
+ this.locationEngine.removeLocationEngineListener(locationEngineListener);
+ this.locationEngine = null;
+ }
+
+ if (locationEngine != null) {
+ this.locationEngine = locationEngine;
+ if (isEnabled) {
+ this.locationEngine.addLocationEngineListener(locationEngineListener);
+ }
+ }
+ }
+
+ /**
+ * Returns the current {@link LocationEngine} being used for updating the user location layer.
+ *
+ * @return the {@link LocationEngine} being used to update the user location layer
+ */
+ @Nullable
+ public LocationEngine getLocationEngine() {
+ return locationEngine;
+ }
+
+ /**
+ * Sets the compass engine used to provide compass heading values.
+ *
+ * @param compassEngine to be used
+ */
+ public void setCompassEngine(@NonNull CompassEngine compassEngine) {
+ this.compassEngine.removeCompassListener(compassListener);
+ this.compassEngine = compassEngine;
+ compassEngine.addCompassListener(compassListener);
+ }
+
+ /**
+ * Returns the compass engine used to provide compass heading values.
+ *
+ * @return compass engine currently being used
+ */
+ @NonNull
+ public CompassEngine getCompassEngine() {
+ return compassEngine;
+ }
+
+ /**
+ * Get the last know location of the location layer plugin.
+ *
+ * @return the last known location
+ */
+ @Nullable
+ @RequiresPermission(anyOf = {ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION})
+ public Location getLastKnownLocation() {
+ Location location = locationEngine != null ? locationEngine.getLastLocation() : null;
+ if (location == null) {
+ location = lastLocation;
+ }
+ return location;
+ }
+
+ /**
+ * Return the last known {@link CompassEngine} accuracy status of the location layer plugin.
+ *
+ * The last known accuracy of the compass sensor, one of SensorManager.SENSOR_STATUS_*
+ *
+ * @return the last know compass accuracy bearing
+ */
+ public float getLastKnownCompassAccuracyStatus() {
+ return compassEngine.getLastAccuracySensorStatus();
+ }
+
+ /**
+ * Add a compass listener to get heading updates every second. Once the first listener gets added,
+ * the sensor gets initiated and starts returning values.
+ *
+ * @param compassListener a {@link CompassListener} for listening into compass heading and
+ * accuracy changes
+ */
+ public void addCompassListener(@NonNull CompassListener compassListener) {
+ compassEngine.addCompassListener(compassListener);
+ }
+
+ /**
+ * Remove a compass listener.
+ *
+ * @param compassListener the {@link CompassListener} which you'd like to remove from the listener
+ * list.
+ */
+ public void removeCompassListener(@NonNull CompassListener compassListener) {
+ compassEngine.removeCompassListener(compassListener);
+ }
+
+ /**
+ * Adds a listener that gets invoked when the user clicks the location layer.
+ *
+ * @param listener The location layer click listener that is invoked when the
+ * location layer is clicked
+ */
+ public void addOnLocationClickListener(@NonNull OnLocationLayerClickListener listener) {
+ onLocationLayerClickListeners.add(listener);
+ }
+
+ /**
+ * Removes the passed listener from the current list of location click listeners.
+ *
+ * @param listener to be removed
+ */
+ public void removeOnLocationClickListener(@NonNull OnLocationLayerClickListener listener) {
+ onLocationLayerClickListeners.remove(listener);
+ }
+
+ /**
+ * Adds a listener that gets invoked when the user long clicks the location layer.
+ *
+ * @param listener The location layer click listener that is invoked when the
+ * location layer is clicked
+ */
+ public void addOnLocationLongClickListener(@NonNull OnLocationLayerLongClickListener listener) {
+ onLocationLayerLongClickListeners.add(listener);
+ }
+
+ /**
+ * Removes the passed listener from the current list of location long click listeners.
+ *
+ * @param listener to be removed
+ */
+ public void removeOnLocationLongClickListener(@NonNull OnLocationLayerLongClickListener listener) {
+ onLocationLayerLongClickListeners.remove(listener);
+ }
+
+ /**
+ * Adds a listener that gets invoked when camera tracking state changes.
+ *
+ * @param listener Listener that gets invoked when camera tracking state changes.
+ */
+ public void addOnCameraTrackingChangedListener(@NonNull OnCameraTrackingChangedListener listener) {
+ onCameraTrackingChangedListeners.add(listener);
+ }
+
+ /**
+ * Removes a listener that gets invoked when camera tracking state changes.
+ *
+ * @param listener Listener that gets invoked when camera tracking state changes.
+ */
+ public void removeOnCameraTrackingChangedListener(@NonNull OnCameraTrackingChangedListener listener) {
+ onCameraTrackingChangedListeners.remove(listener);
+ }
+
+ /**
+ * Adds the passed listener that gets invoked when user updates have stopped long enough for the last update
+ * to be considered stale.
+ *
+ * This timeout is set by {@link LocationLayerOptions#staleStateTimeout()}.
+ *
+ * @param listener invoked when last update is considered stale
+ */
+ public void addOnLocationStaleListener(@NonNull OnLocationStaleListener listener) {
+ onLocationStaleListeners.add(listener);
+ }
+
+ /**
+ * Removes the passed listener from the current list of stale listeners.
+ *
+ * @param listener to be removed from the list
+ */
+ public void removeOnLocationStaleListener(@NonNull OnLocationStaleListener listener) {
+ onLocationStaleListeners.remove(listener);
+ }
+
+ /**
+ * You must call this method from the parent's Activity#onStart() or Fragment#onStart()
+ */
+ @OnLifecycleEvent(Lifecycle.Event.ON_START)
+ public void onStart() {
+ if (mapView.isDestroyed()) {
+ Timber.e("You are calling plugins #onStart after the map was destroyed. Re-create the plugin before using it.");
+ return;
+ }
+
+ isPluginStarted = true;
+ onLocationLayerStart();
+ }
+
+ /**
+ * You must call this method from the parent's Activity#onStop() or Fragment#onStop().
+ */
+ @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+ public void onStop() {
+ onLocationLayerStop();
+ isPluginStarted = false;
+ }
+
+ @SuppressLint("MissingPermission")
+ private void onLocationLayerStart() {
+ if (!isPluginStarted) {
+ return;
+ }
+
+ if (!isLocationLayerStarted) {
+ isLocationLayerStarted = true;
+ if (mapboxMap != null) {
+ mapboxMap.addOnCameraMoveListener(onCameraMoveListener);
+ mapboxMap.addOnCameraIdleListener(onCameraIdleListener);
+ }
+ if (options.enableStaleState()) {
+ staleStateManager.onStart();
+ }
+ compassEngine.onStart();
+ }
+
+ if (isEnabled) {
+ if (locationEngine != null) {
+ locationEngine.addLocationEngineListener(locationEngineListener);
+ if (locationEngine.isConnected() && usingInternalLocationEngine) {
+ locationEngine.requestLocationUpdates();
+ }
+ }
+ setCameraMode(locationLayerCamera.getCameraMode());
+ setLastLocation();
+ setLastCompassHeading();
+ }
+ }
+
+ private void onLocationLayerStop() {
+ if (!isLocationLayerStarted || !isPluginStarted) {
+ return;
+ }
+
+ isLocationLayerStarted = false;
+ locationLayer.hide();
+ staleStateManager.onStop();
+ compassEngine.onStop();
+ pluginAnimatorCoordinator.cancelAllAnimations();
+ if (locationEngine != null) {
+ if (usingInternalLocationEngine) {
+ locationEngine.removeLocationUpdates();
+ }
+ locationEngine.removeLocationEngineListener(locationEngineListener);
+ }
+ if (mapboxMap != null) {
+ mapboxMap.removeOnCameraMoveListener(onCameraMoveListener);
+ mapboxMap.removeOnCameraIdleListener(onCameraIdleListener);
+ }
+ }
+
+ private void initialize() {
+ AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
+
+ mapView.addOnMapChangedListener(onMapChangedListener);
+
+ mapboxMap.addOnMapClickListener(onMapClickListener);
+ mapboxMap.addOnMapLongClickListener(onMapLongClickListener);
+
+ LayerSourceProvider sourceProvider = new LayerSourceProvider();
+ LayerFeatureProvider featureProvider = new LayerFeatureProvider();
+ LayerBitmapProvider bitmapProvider = new LayerBitmapProvider(mapView.getContext());
+ locationLayer = new LocationLayer(mapboxMap, sourceProvider, featureProvider, bitmapProvider, options);
+ locationLayerCamera = new LocationLayerCamera(
+ mapView.getContext(), mapboxMap, cameraTrackingChangedListener, options, onCameraMoveInvalidateListener);
+ pluginAnimatorCoordinator = new PluginAnimatorCoordinator();
+ pluginAnimatorCoordinator.addLayerListener(locationLayer);
+ pluginAnimatorCoordinator.addCameraListener(locationLayerCamera);
+
+ Context context = mapView.getContext();
+ WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+ SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
+ compassEngine = new LocationLayerCompassEngine(windowManager, sensorManager);
+ compassEngine.addCompassListener(compassListener);
+ staleStateManager = new StaleStateManager(onLocationStaleListener, options.staleStateTimeout());
+
+ updateMapWithOptions(options);
+
+ enableLocationLayerPlugin();
+ setRenderMode(RenderMode.NORMAL);
+ setCameraMode(CameraMode.NONE);
+ }
+
+ private void initializeLocationEngine() {
+ usingInternalLocationEngine = true;
+ locationEngine = new LocationEngineProvider(mapView.getContext()).obtainBestLocationEngineAvailable();
+ locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY);
+ locationEngine.setFastestInterval(1000);
+ locationEngine.addLocationEngineListener(locationEngineListener);
+ locationEngine.activate();
+ }
+
+ private void enableLocationLayerPlugin() {
+ isEnabled = true;
+ onLocationLayerStart();
+ }
+
+ private void disableLocationLayerPlugin() {
+ isEnabled = false;
+ onLocationLayerStop();
+ }
+
+ private void updateMapWithOptions(final LocationLayerOptions options) {
+ mapboxMap.setPadding(
+ options.padding()[0], options.padding()[1], options.padding()[2], options.padding()[3]
+ );
+
+ mapboxMap.setMaxZoomPreference(options.maxZoom());
+ mapboxMap.setMinZoomPreference(options.minZoom());
+ }
+
+ /**
+ * Updates the user location icon.
+ *
+ * @param location the latest user location
+ */
+ private void updateLocation(final Location location, boolean fromLastLocation) {
+ if (location == null) {
+ return;
+ } else if (!isLocationLayerStarted) {
+ lastLocation = location;
+ return;
+ }
+
+ if (isEnabled && isPluginStarted) {
+ locationLayer.show();
+ }
+
+ if (!fromLastLocation) {
+ staleStateManager.updateLatestLocationTime();
+ }
+ CameraPosition currentCameraPosition = mapboxMap.getCameraPosition();
+ boolean isGpsNorth = getCameraMode() == CameraMode.TRACKING_GPS_NORTH;
+ pluginAnimatorCoordinator.feedNewLocation(location, currentCameraPosition, isGpsNorth);
+ updateAccuracyRadius(location, false);
+ lastLocation = location;
+ }
+
+ private void updateCompassHeading(float heading) {
+ pluginAnimatorCoordinator.feedNewCompassBearing(heading, mapboxMap.getCameraPosition());
+ }
+
+ /**
+ * If the locationEngine contains a last location value, we use it for the initial location layer
+ * position.
+ */
+ @SuppressLint("MissingPermission")
+ private void setLastLocation() {
+ updateLocation(getLastKnownLocation(), true);
+ }
+
+ private void setLastCompassHeading() {
+ updateCompassHeading(compassEngine.getLastHeading());
+ }
+
+ @SuppressLint("MissingPermission")
+ private void updateLayerOffsets(boolean forceUpdate) {
+ CameraPosition position = mapboxMap.getCameraPosition();
+ if (lastCameraPosition == null || forceUpdate) {
+ lastCameraPosition = position;
+ locationLayer.updateForegroundBearing((float) position.bearing);
+ locationLayer.updateForegroundOffset(position.tilt);
+ updateAccuracyRadius(getLastKnownLocation(), true);
+ return;
+ }
+
+ if (position.bearing != lastCameraPosition.bearing) {
+ locationLayer.updateForegroundBearing((float) position.bearing);
+ }
+ if (position.tilt != lastCameraPosition.tilt) {
+ locationLayer.updateForegroundOffset(position.tilt);
+ }
+ if (position.zoom != lastCameraPosition.zoom) {
+ updateAccuracyRadius(getLastKnownLocation(), true);
+ }
+ lastCameraPosition = position;
+ }
+
+ private void updateAccuracyRadius(Location location, boolean noAnimation) {
+ pluginAnimatorCoordinator.feedNewAccuracyRadius(Utils.calculateZoomLevelRadius(mapboxMap, location), noAnimation);
+ }
+
+ private OnCameraMoveListener onCameraMoveListener = new OnCameraMoveListener() {
+ @Override
+ public void onCameraMove() {
+ updateLayerOffsets(false);
+ }
+ };
+
+ private OnCameraIdleListener onCameraIdleListener = new OnCameraIdleListener() {
+ @Override
+ public void onCameraIdle() {
+ updateLayerOffsets(false);
+ }
+ };
+
+ private OnMapClickListener onMapClickListener = new OnMapClickListener() {
+ @Override
+ public void onMapClick(@NonNull LatLng point) {
+ if (!onLocationLayerClickListeners.isEmpty() && locationLayer.onMapClick(point)) {
+ for (OnLocationLayerClickListener listener : onLocationLayerClickListeners) {
+ listener.onLocationLayerClick();
+ }
+ }
+ }
+ };
+
+ private MapboxMap.OnMapLongClickListener onMapLongClickListener = new MapboxMap.OnMapLongClickListener() {
+ @Override
+ public void onMapLongClick(@NonNull LatLng point) {
+ if (!onLocationLayerLongClickListeners.isEmpty() && locationLayer.onMapClick(point)) {
+ for (OnLocationLayerLongClickListener listener : onLocationLayerLongClickListeners) {
+ listener.onLocationLayerLongClick();
+ }
+ }
+ }
+ };
+
+ private OnLocationStaleListener onLocationStaleListener = new OnLocationStaleListener() {
+ @Override
+ public void onStaleStateChange(boolean isStale) {
+ locationLayer.setLocationsStale(isStale);
+
+ for (OnLocationStaleListener listener : onLocationStaleListeners) {
+ listener.onStaleStateChange(isStale);
+ }
+ }
+ };
+
+ private OnMapChangedListener onMapChangedListener = new OnMapChangedListener() {
+ @SuppressLint("MissingPermission")
+ @Override
+ public void onMapChanged(int change) {
+ if (change == MapView.WILL_START_LOADING_MAP) {
+ onLocationLayerStop();
+ } else if (change == MapView.DID_FINISH_LOADING_STYLE) {
+ locationLayer.initializeComponents(options);
+ locationLayerCamera.initializeOptions(options);
+ onLocationLayerStart();
+ }
+ }
+ };
+
+ private OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = new OnCameraMoveInvalidateListener() {
+ @Override
+ public void onInvalidateCameraMove() {
+ onCameraMoveListener.onCameraMove();
+ }
+ };
+
+ private CompassListener compassListener = new CompassListener() {
+ @Override
+ public void onCompassChanged(float userHeading) {
+ updateCompassHeading(userHeading);
+ }
+
+ @Override
+ public void onCompassAccuracyChange(int compassStatus) {
+ // Currently don't handle this inside SDK
+ }
+ };
+
+ private LocationEngineListener locationEngineListener = new LocationEngineListener() {
+ @Override
+ @SuppressWarnings( {"MissingPermission"})
+ public void onConnected() {
+ if (usingInternalLocationEngine && isLocationLayerStarted && isEnabled) {
+ locationEngine.requestLocationUpdates();
+ }
+ }
+
+ @Override
+ public void onLocationChanged(Location location) {
+ updateLocation(location, false);
+ }
+ };
+
+ private OnCameraTrackingChangedListener cameraTrackingChangedListener = new OnCameraTrackingChangedListener() {
+ @Override
+ public void onCameraTrackingDismissed() {
+ for (OnCameraTrackingChangedListener listener : onCameraTrackingChangedListeners) {
+ listener.onCameraTrackingDismissed();
+ }
+ }
+
+ @Override
+ public void onCameraTrackingChanged(int currentMode) {
+ pluginAnimatorCoordinator.cancelZoomAnimation();
+ pluginAnimatorCoordinator.cancelTiltAnimation();
+ for (OnCameraTrackingChangedListener listener : onCameraTrackingChangedListeners) {
+ listener.onCameraTrackingChanged(currentMode);
+ }
+ }
+ };
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/MapboxCameraAnimatorAdapter.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/MapboxCameraAnimatorAdapter.java
new file mode 100644
index 0000000000..d2381cc1e3
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/MapboxCameraAnimatorAdapter.java
@@ -0,0 +1,38 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.support.annotation.Nullable;
+
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+
+import java.util.List;
+
+abstract class MapboxCameraAnimatorAdapter extends
+ PluginFloatAnimator {
+ private final MapboxMap.CancelableCallback cancelableCallback;
+
+ MapboxCameraAnimatorAdapter(Float previous, Float target,
+ List updateListeners,
+ @Nullable MapboxMap.CancelableCallback cancelableCallback) {
+ super(previous, target, updateListeners);
+ this.cancelableCallback = cancelableCallback;
+ addListener(new MapboxAnimatorListener());
+ }
+
+ private final class MapboxAnimatorListener extends AnimatorListenerAdapter {
+ @Override
+ public void onAnimationCancel(Animator animation) {
+ if (cancelableCallback != null) {
+ cancelableCallback.onCancel();
+ }
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ if (cancelableCallback != null) {
+ cancelableCallback.onFinish();
+ }
+ }
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnCameraMoveInvalidateListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnCameraMoveInvalidateListener.java
new file mode 100644
index 0000000000..3636df9f87
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnCameraMoveInvalidateListener.java
@@ -0,0 +1,7 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+interface OnCameraMoveInvalidateListener {
+
+ void onInvalidateCameraMove();
+
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnCameraTrackingChangedListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnCameraTrackingChangedListener.java
new file mode 100644
index 0000000000..272b3c73f9
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnCameraTrackingChangedListener.java
@@ -0,0 +1,21 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import com.mapbox.mapboxsdk.plugins.locationlayer.modes.CameraMode;
+
+/**
+ * Listener that gets invoked when camera tracking state changes.
+ */
+public interface OnCameraTrackingChangedListener {
+ /**
+ * Invoked whenever camera tracking is broken.
+ * This callback gets invoked just after {@link #onCameraTrackingChanged(int)}, if needed.
+ */
+ void onCameraTrackingDismissed();
+
+ /**
+ * Invoked on every {@link CameraMode} change.
+ *
+ * @param currentMode current active {@link CameraMode}.
+ */
+ void onCameraTrackingChanged(@CameraMode.Mode int currentMode);
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnLocationLayerClickListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnLocationLayerClickListener.java
new file mode 100644
index 0000000000..83d4ce72cc
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnLocationLayerClickListener.java
@@ -0,0 +1,11 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+/**
+ * The Location Layer Plugin exposes an API for listening to when the user clicks on the location
+ * layer icon visible on the map. when this event occurs, the {@link #onLocationLayerClick()} method
+ * gets invoked.
+ */
+public interface OnLocationLayerClickListener {
+
+ void onLocationLayerClick();
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnLocationLayerLongClickListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnLocationLayerLongClickListener.java
new file mode 100644
index 0000000000..5724c9f1dc
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnLocationLayerLongClickListener.java
@@ -0,0 +1,11 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+/**
+ * The Location Layer Plugin exposes an API for listening to when the user long clicks on the location
+ * layer icon visible on the map. when this event occurs, the {@link #onLocationLayerLongClick()} method
+ * gets invoked.
+ */
+public interface OnLocationLayerLongClickListener {
+
+ void onLocationLayerLongClick();
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnLocationStaleListener.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnLocationStaleListener.java
new file mode 100644
index 0000000000..979bed3e2a
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/OnLocationStaleListener.java
@@ -0,0 +1,13 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+/**
+ * Listener that can be added as a callback when the last location update
+ * is considered stale.
+ *
+ * The time from the last location update that determines if a location update
+ * is stale or not is provided by {@link LocationLayerOptions#staleStateTimeout()}.
+ */
+public interface OnLocationStaleListener {
+
+ void onStaleStateChange(boolean isStale);
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginAnimator.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginAnimator.java
new file mode 100644
index 0000000000..faa2a1ae44
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginAnimator.java
@@ -0,0 +1,92 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.animation.TypeEvaluator;
+import android.animation.ValueAnimator;
+import android.support.annotation.IntDef;
+
+import com.mapbox.mapboxsdk.geometry.LatLng;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+
+/**
+ * Abstract class for all of the plugin animators.
+ *
+ * @param Data type that will be animated.
+ * @param Listener of animation updates.
+ */
+abstract class PluginAnimator extends ValueAnimator implements ValueAnimator.AnimatorUpdateListener {
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef( {
+ ANIMATOR_LAYER_LATLNG,
+ ANIMATOR_CAMERA_LATLNG,
+ ANIMATOR_LAYER_GPS_BEARING,
+ ANIMATOR_LAYER_COMPASS_BEARING,
+ ANIMATOR_CAMERA_GPS_BEARING,
+ ANIMATOR_CAMERA_COMPASS_BEARING,
+ ANIMATOR_LAYER_ACCURACY,
+ ANIMATOR_ZOOM,
+ ANIMATOR_TILT
+ })
+ @interface Type {
+ }
+
+ static final int ANIMATOR_LAYER_LATLNG = 0;
+ static final int ANIMATOR_CAMERA_LATLNG = 1;
+ static final int ANIMATOR_LAYER_GPS_BEARING = 2;
+ static final int ANIMATOR_LAYER_COMPASS_BEARING = 3;
+ static final int ANIMATOR_CAMERA_GPS_BEARING = 4;
+ static final int ANIMATOR_CAMERA_COMPASS_BEARING = 5;
+ static final int ANIMATOR_LAYER_ACCURACY = 6;
+ static final int ANIMATOR_ZOOM = 7;
+ static final int ANIMATOR_TILT = 8;
+
+ private final int animatorType = provideAnimatorType();
+ final List updateListeners;
+ private final K target;
+
+ PluginAnimator(K previous, K target, List updateListeners) {
+ setObjectValues(previous, target);
+ setEvaluator(provideEvaluator());
+ this.updateListeners = updateListeners;
+ this.target = target;
+ addUpdateListener(this);
+ }
+
+ K getTarget() {
+ return target;
+ }
+
+ @Type
+ int getAnimatorType() {
+ return animatorType;
+ }
+
+ @Type
+ abstract int provideAnimatorType();
+
+ abstract TypeEvaluator provideEvaluator();
+
+ interface OnLayerAnimationsValuesChangeListener {
+ void onNewLatLngValue(LatLng latLng);
+
+ void onNewGpsBearingValue(float gpsBearing);
+
+ void onNewCompassBearingValue(float compassBearing);
+
+ void onNewAccuracyRadiusValue(float accuracyRadiusValue);
+ }
+
+ interface OnCameraAnimationsValuesChangeListener {
+ void onNewLatLngValue(LatLng latLng);
+
+ void onNewGpsBearingValue(float gpsBearing);
+
+ void onNewCompassBearingValue(float compassBearing);
+
+ void onNewZoomValue(float zoom);
+
+ void onNewTiltValue(float tilt);
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginAnimatorCoordinator.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginAnimatorCoordinator.java
new file mode 100644
index 0000000000..2ee87a6e46
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginAnimatorCoordinator.java
@@ -0,0 +1,375 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.animation.Animator;
+import android.animation.AnimatorSet;
+import android.annotation.SuppressLint;
+import android.location.Location;
+import android.os.SystemClock;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.view.animation.LinearInterpolator;
+
+import com.mapbox.mapboxsdk.camera.CameraPosition;
+import com.mapbox.mapboxsdk.geometry.LatLng;
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.ACCURACY_RADIUS_ANIMATION_DURATION;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.COMPASS_UPDATE_RATE_MS;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.MAX_ANIMATION_DURATION_MS;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.TRANSITION_ANIMATION_DURATION_MS;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.ANIMATOR_CAMERA_COMPASS_BEARING;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.ANIMATOR_CAMERA_GPS_BEARING;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.ANIMATOR_CAMERA_LATLNG;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.ANIMATOR_LAYER_ACCURACY;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.ANIMATOR_LAYER_COMPASS_BEARING;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.ANIMATOR_LAYER_GPS_BEARING;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.ANIMATOR_LAYER_LATLNG;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.ANIMATOR_TILT;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.ANIMATOR_ZOOM;
+
+final class PluginAnimatorCoordinator {
+
+ @SuppressLint("UseSparseArrays")
+ final Map animatorMap = new HashMap<>();
+
+ final List layerListeners = new ArrayList<>();
+ final List cameraListeners = new ArrayList<>();
+
+ private Location previousLocation;
+ private float previousAccuracyRadius = -1;
+ private float previousCompassBearing = -1;
+ private long locationUpdateTimestamp = -1;
+
+ void addLayerListener(PluginAnimator.OnLayerAnimationsValuesChangeListener listener) {
+ layerListeners.add(listener);
+ }
+
+ void removeLayerListener(PluginAnimator.OnLayerAnimationsValuesChangeListener listener) {
+ layerListeners.remove(listener);
+ }
+
+ void addCameraListener(PluginAnimator.OnCameraAnimationsValuesChangeListener listener) {
+ cameraListeners.add(listener);
+ }
+
+ void removeCameraListener(PluginAnimator.OnCameraAnimationsValuesChangeListener listener) {
+ cameraListeners.remove(listener);
+ }
+
+ void feedNewLocation(@NonNull Location newLocation, @NonNull CameraPosition currentCameraPosition,
+ boolean isGpsNorth) {
+ if (previousLocation == null) {
+ previousLocation = newLocation;
+ locationUpdateTimestamp = SystemClock.elapsedRealtime() - TRANSITION_ANIMATION_DURATION_MS;
+ }
+
+ LatLng previousLayerLatLng = getPreviousLayerLatLng();
+ float previousLayerBearing = getPreviousLayerGpsBearing();
+ LatLng previousCameraLatLng = currentCameraPosition.target;
+ float previousCameraBearing = (float) currentCameraPosition.bearing;
+
+ LatLng targetLatLng = new LatLng(newLocation);
+ float targetLayerBearing = newLocation.getBearing();
+ float targetCameraBearing = newLocation.getBearing();
+ targetCameraBearing = checkGpsNorth(isGpsNorth, targetCameraBearing);
+
+ updateLayerAnimators(previousLayerLatLng, targetLatLng, previousLayerBearing, targetLayerBearing);
+ updateCameraAnimators(previousCameraLatLng, previousCameraBearing, targetLatLng, targetCameraBearing);
+
+ playLocationAnimators(getAnimationDuration());
+
+ previousLocation = newLocation;
+ }
+
+ void feedNewCompassBearing(float targetCompassBearing, @NonNull CameraPosition currentCameraPosition) {
+ if (previousCompassBearing < 0) {
+ previousCompassBearing = targetCompassBearing;
+ }
+
+ float previousLayerBearing = getPreviousLayerCompassBearing();
+ float previousCameraBearing = (float) currentCameraPosition.bearing;
+
+ updateCompassAnimators(targetCompassBearing, previousLayerBearing, previousCameraBearing);
+ playCompassAnimators(COMPASS_UPDATE_RATE_MS);
+
+ previousCompassBearing = targetCompassBearing;
+ }
+
+ void feedNewAccuracyRadius(float targetAccuracyRadius, boolean noAnimation) {
+ if (previousAccuracyRadius < 0) {
+ previousAccuracyRadius = targetAccuracyRadius;
+ }
+
+ float previousAccuracyRadius = getPreviousAccuracyRadius();
+ updateAccuracyAnimators(targetAccuracyRadius, previousAccuracyRadius);
+ playAccuracyAnimator(noAnimation ? 0 : ACCURACY_RADIUS_ANIMATION_DURATION);
+
+ this.previousAccuracyRadius = targetAccuracyRadius;
+ }
+
+ void feedNewZoomLevel(double targetZoomLevel, @NonNull CameraPosition currentCameraPosition, long animationDuration,
+ @Nullable MapboxMap.CancelableCallback callback) {
+ updateZoomAnimator((float) targetZoomLevel, (float) currentCameraPosition.zoom, callback);
+ playZoomAnimator(animationDuration);
+ }
+
+ void feedNewTilt(double targetTilt, @NonNull CameraPosition currentCameraPosition, long animationDuration,
+ @Nullable MapboxMap.CancelableCallback callback) {
+ updateTiltAnimator((float) targetTilt, (float) currentCameraPosition.tilt, callback);
+ playTiltAnimator(animationDuration);
+ }
+
+ private LatLng getPreviousLayerLatLng() {
+ LatLng previousLatLng;
+ PluginAnimator latLngAnimator = animatorMap.get(ANIMATOR_LAYER_LATLNG);
+ if (latLngAnimator != null) {
+ previousLatLng = (LatLng) latLngAnimator.getAnimatedValue();
+ } else {
+ previousLatLng = new LatLng(previousLocation);
+ }
+ return previousLatLng;
+ }
+
+ private float getPreviousLayerGpsBearing() {
+ LayerGpsBearingAnimator animator = (LayerGpsBearingAnimator) animatorMap.get(ANIMATOR_LAYER_GPS_BEARING);
+ float previousBearing;
+ if (animator != null) {
+ previousBearing = (float) animator.getAnimatedValue();
+ } else {
+ previousBearing = previousLocation.getBearing();
+ }
+ return previousBearing;
+ }
+
+ private float getPreviousLayerCompassBearing() {
+ LayerCompassBearingAnimator animator =
+ (LayerCompassBearingAnimator) animatorMap.get(ANIMATOR_LAYER_COMPASS_BEARING);
+
+ float previousBearing;
+ if (animator != null) {
+ previousBearing = (float) animator.getAnimatedValue();
+ } else {
+ previousBearing = previousCompassBearing;
+ }
+ return previousBearing;
+ }
+
+ private float getPreviousAccuracyRadius() {
+ LayerAccuracyAnimator animator = (LayerAccuracyAnimator) animatorMap.get(ANIMATOR_LAYER_ACCURACY);
+ float previousRadius;
+ if (animator != null) {
+ previousRadius = (float) animator.getAnimatedValue();
+ } else {
+ previousRadius = previousAccuracyRadius;
+ }
+ return previousRadius;
+ }
+
+ private void updateLayerAnimators(LatLng previousLatLng, LatLng targetLatLng,
+ float previousBearing, float targetBearing) {
+ createNewAnimator(ANIMATOR_LAYER_LATLNG, new LayerLatLngAnimator(previousLatLng, targetLatLng, layerListeners));
+
+ float normalizedLayerBearing = Utils.shortestRotation(targetBearing, previousBearing);
+ createNewAnimator(ANIMATOR_LAYER_GPS_BEARING,
+ new LayerGpsBearingAnimator(previousBearing, normalizedLayerBearing, layerListeners));
+ }
+
+ private void updateCameraAnimators(LatLng previousCameraLatLng, float previousCameraBearing,
+ LatLng targetLatLng, float targetBearing) {
+ createNewAnimator(ANIMATOR_CAMERA_LATLNG,
+ new CameraLatLngAnimator(previousCameraLatLng, targetLatLng, cameraListeners));
+
+ float normalizedCameraBearing = Utils.shortestRotation(targetBearing, previousCameraBearing);
+ createNewAnimator(ANIMATOR_CAMERA_GPS_BEARING,
+ new CameraGpsBearingAnimator(previousCameraBearing, normalizedCameraBearing, cameraListeners));
+ }
+
+ private void updateCompassAnimators(float targetCompassBearing, float previousLayerBearing,
+ float previousCameraBearing) {
+ float normalizedLayerBearing = Utils.shortestRotation(targetCompassBearing, previousLayerBearing);
+ createNewAnimator(ANIMATOR_LAYER_COMPASS_BEARING,
+ new LayerCompassBearingAnimator(previousLayerBearing, normalizedLayerBearing, layerListeners));
+
+ float normalizedCameraBearing = Utils.shortestRotation(targetCompassBearing, previousCameraBearing);
+ createNewAnimator(ANIMATOR_CAMERA_COMPASS_BEARING,
+ new CameraCompassBearingAnimator(previousCameraBearing, normalizedCameraBearing, cameraListeners));
+ }
+
+ private void updateAccuracyAnimators(float targetAccuracyRadius, float previousAccuracyRadius) {
+ createNewAnimator(ANIMATOR_LAYER_ACCURACY,
+ new LayerAccuracyAnimator(previousAccuracyRadius, targetAccuracyRadius, layerListeners));
+ }
+
+ private void updateZoomAnimator(float targetZoomLevel, float previousZoomLevel,
+ @Nullable MapboxMap.CancelableCallback cancelableCallback) {
+ createNewAnimator(ANIMATOR_ZOOM,
+ new ZoomAnimator(previousZoomLevel, targetZoomLevel, cameraListeners, cancelableCallback));
+ }
+
+ private void updateTiltAnimator(float targetTilt, float previousTiltLevel,
+ @Nullable MapboxMap.CancelableCallback cancelableCallback) {
+ createNewAnimator(ANIMATOR_TILT,
+ new TiltAnimator(previousTiltLevel, targetTilt, cameraListeners, cancelableCallback));
+ }
+
+ private long getAnimationDuration() {
+ long previousUpdateTimeStamp = locationUpdateTimestamp;
+ locationUpdateTimestamp = SystemClock.elapsedRealtime();
+
+ long animationDuration;
+ if (previousUpdateTimeStamp == 0) {
+ animationDuration = 0;
+ } else {
+ animationDuration = (long) ((locationUpdateTimestamp - previousUpdateTimeStamp) * 1.1f)
+ /*make animation slightly longer*/;
+ }
+
+ animationDuration = Math.min(animationDuration, MAX_ANIMATION_DURATION_MS);
+
+ return animationDuration;
+ }
+
+ private float checkGpsNorth(boolean isGpsNorth, float targetCameraBearing) {
+ if (isGpsNorth) {
+ targetCameraBearing = 0;
+ }
+ return targetCameraBearing;
+ }
+
+ private void playLocationAnimators(long duration) {
+ List locationAnimators = new ArrayList<>();
+ locationAnimators.add(animatorMap.get(ANIMATOR_LAYER_LATLNG));
+ locationAnimators.add(animatorMap.get(ANIMATOR_LAYER_GPS_BEARING));
+ locationAnimators.add(animatorMap.get(ANIMATOR_CAMERA_LATLNG));
+ locationAnimators.add(animatorMap.get(ANIMATOR_CAMERA_GPS_BEARING));
+ AnimatorSet locationAnimatorSet = new AnimatorSet();
+ locationAnimatorSet.playTogether(locationAnimators);
+ locationAnimatorSet.setInterpolator(new LinearInterpolator());
+ locationAnimatorSet.setDuration(duration);
+ locationAnimatorSet.start();
+ }
+
+ private void playCompassAnimators(long duration) {
+ List compassAnimators = new ArrayList<>();
+ compassAnimators.add(animatorMap.get(ANIMATOR_LAYER_COMPASS_BEARING));
+ compassAnimators.add(animatorMap.get(ANIMATOR_CAMERA_COMPASS_BEARING));
+ AnimatorSet compassAnimatorSet = new AnimatorSet();
+ compassAnimatorSet.playTogether(compassAnimators);
+ compassAnimatorSet.setDuration(duration);
+ compassAnimatorSet.start();
+ }
+
+ private void playAccuracyAnimator(long duration) {
+ PluginAnimator animator = animatorMap.get(ANIMATOR_LAYER_ACCURACY);
+ animator.setDuration(duration);
+ animator.start();
+ }
+
+ private void playZoomAnimator(long duration) {
+ PluginAnimator animator = animatorMap.get(ANIMATOR_ZOOM);
+ animator.setDuration(duration);
+ animator.start();
+ }
+
+ private void playTiltAnimator(long duration) {
+ PluginAnimator animator = animatorMap.get(ANIMATOR_TILT);
+ animator.setDuration(duration);
+ animator.start();
+ }
+
+ private void playCameraLocationAnimators(long duration) {
+ List locationAnimators = new ArrayList<>();
+ locationAnimators.add(animatorMap.get(ANIMATOR_CAMERA_LATLNG));
+ locationAnimators.add(animatorMap.get(ANIMATOR_CAMERA_GPS_BEARING));
+ AnimatorSet locationAnimatorSet = new AnimatorSet();
+ locationAnimatorSet.playTogether(locationAnimators);
+ locationAnimatorSet.setInterpolator(new LinearInterpolator());
+ locationAnimatorSet.setDuration(duration);
+ locationAnimatorSet.start();
+ }
+
+ void resetAllCameraAnimations(CameraPosition currentCameraPosition, boolean isGpsNorth) {
+ resetCameraCompassAnimation(currentCameraPosition);
+ resetCameraLocationAnimations(currentCameraPosition, isGpsNorth);
+ playCameraLocationAnimators(TRANSITION_ANIMATION_DURATION_MS);
+ }
+
+ private void resetCameraLocationAnimations(CameraPosition currentCameraPosition, boolean isGpsNorth) {
+ resetCameraLatLngAnimation(currentCameraPosition);
+ resetCameraGpsBearingAnimation(currentCameraPosition, isGpsNorth);
+ }
+
+ private void resetCameraLatLngAnimation(CameraPosition currentCameraPosition) {
+ CameraLatLngAnimator animator = (CameraLatLngAnimator) animatorMap.get(ANIMATOR_CAMERA_LATLNG);
+ if (animator == null) {
+ return;
+ }
+
+ LatLng currentTarget = animator.getTarget();
+ LatLng previousCameraTarget = currentCameraPosition.target;
+ createNewAnimator(ANIMATOR_CAMERA_LATLNG,
+ new CameraLatLngAnimator(previousCameraTarget, currentTarget, cameraListeners));
+ }
+
+ private void resetCameraGpsBearingAnimation(CameraPosition currentCameraPosition, boolean isGpsNorth) {
+ CameraGpsBearingAnimator animator = (CameraGpsBearingAnimator) animatorMap.get(ANIMATOR_CAMERA_GPS_BEARING);
+ if (animator == null) {
+ return;
+ }
+
+ float currentTargetBearing = animator.getTarget();
+ currentTargetBearing = checkGpsNorth(isGpsNorth, currentTargetBearing);
+ float previousCameraBearing = (float) currentCameraPosition.bearing;
+ float normalizedCameraBearing = Utils.shortestRotation(currentTargetBearing, previousCameraBearing);
+ createNewAnimator(ANIMATOR_CAMERA_GPS_BEARING,
+ new CameraGpsBearingAnimator(previousCameraBearing, normalizedCameraBearing, cameraListeners));
+ }
+
+ private void resetCameraCompassAnimation(CameraPosition currentCameraPosition) {
+ CameraCompassBearingAnimator animator =
+ (CameraCompassBearingAnimator) animatorMap.get(ANIMATOR_CAMERA_COMPASS_BEARING);
+ if (animator == null) {
+ return;
+ }
+
+ float currentTargetBearing = animator.getTarget();
+ float previousCameraBearing = (float) currentCameraPosition.bearing;
+ float normalizedCameraBearing = Utils.shortestRotation(currentTargetBearing, previousCameraBearing);
+ createNewAnimator(ANIMATOR_CAMERA_COMPASS_BEARING,
+ new CameraCompassBearingAnimator(previousCameraBearing, normalizedCameraBearing, cameraListeners));
+ }
+
+ private void createNewAnimator(@PluginAnimator.Type int animatorType, PluginAnimator animator) {
+ cancelAnimator(animatorType);
+ animatorMap.put(animatorType, animator);
+ }
+
+ void cancelZoomAnimation() {
+ cancelAnimator(ANIMATOR_ZOOM);
+ }
+
+ void cancelTiltAnimation() {
+ cancelAnimator(ANIMATOR_TILT);
+ }
+
+ void cancelAllAnimations() {
+ for (@PluginAnimator.Type int animatorType : animatorMap.keySet()) {
+ cancelAnimator(animatorType);
+ }
+ }
+
+ private void cancelAnimator(@PluginAnimator.Type int animatorType) {
+ PluginAnimator animator = animatorMap.get(animatorType);
+ if (animator != null) {
+ animator.cancel();
+ animator.removeAllUpdateListeners();
+ animator.removeAllListeners();
+ animatorMap.put(animatorType, null);
+ }
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginFloatAnimator.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginFloatAnimator.java
new file mode 100644
index 0000000000..f99f17cd97
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginFloatAnimator.java
@@ -0,0 +1,17 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.animation.FloatEvaluator;
+import android.animation.TypeEvaluator;
+
+import java.util.List;
+
+abstract class PluginFloatAnimator extends PluginAnimator {
+ PluginFloatAnimator(Float previous, Float target, List updateListeners) {
+ super(previous, target, updateListeners);
+ }
+
+ @Override
+ TypeEvaluator provideEvaluator() {
+ return new FloatEvaluator();
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginLatLngAnimator.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginLatLngAnimator.java
new file mode 100644
index 0000000000..29d73f8db7
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginLatLngAnimator.java
@@ -0,0 +1,19 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.animation.TypeEvaluator;
+
+import com.mapbox.mapboxsdk.geometry.LatLng;
+
+import java.util.List;
+
+abstract class PluginLatLngAnimator extends PluginAnimator {
+
+ PluginLatLngAnimator(LatLng previous, LatLng target, List updateListeners) {
+ super(previous, target, updateListeners);
+ }
+
+ @Override
+ TypeEvaluator provideEvaluator() {
+ return new LatLngEvaluator();
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/StaleStateManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/StaleStateManager.java
new file mode 100644
index 0000000000..5c180b5c47
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/StaleStateManager.java
@@ -0,0 +1,64 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.os.Handler;
+
+/**
+ * Class controls the location layer stale state when the {@link android.location.Location} hasn't
+ * been updated in 'x' amount of time. {@link LocationLayerOptions#staleStateTimeout()} can be used to
+ * control the amount of time before the locations considered stale.
+ * {@link LocationLayerOptions#enableStaleState()} is available for disabling this behaviour.
+ */
+class StaleStateManager {
+
+ private final OnLocationStaleListener innerOnLocationStaleListeners;
+ private final Handler handler;
+ private boolean isStale = true;
+ private long delayTime;
+
+ StaleStateManager(OnLocationStaleListener innerListener, long delayTime) {
+ innerOnLocationStaleListeners = innerListener;
+ this.delayTime = delayTime;
+ handler = new Handler();
+ innerOnLocationStaleListeners.onStaleStateChange(true);
+ }
+
+ private Runnable staleStateRunnable = new Runnable() {
+ @Override
+ public void run() {
+ isStale = true;
+ innerOnLocationStaleListeners.onStaleStateChange(true);
+ }
+ };
+
+ boolean isStale() {
+ return isStale;
+ }
+
+ void updateLatestLocationTime() {
+ if (isStale) {
+ isStale = false;
+ innerOnLocationStaleListeners.onStaleStateChange(false);
+ }
+ postTheCallback();
+ }
+
+ void setDelayTime(long delayTime) {
+ this.delayTime = delayTime;
+ postTheCallback();
+ }
+
+ void onStart() {
+ if (!isStale) {
+ postTheCallback();
+ }
+ }
+
+ void onStop() {
+ handler.removeCallbacksAndMessages(null);
+ }
+
+ private void postTheCallback() {
+ handler.removeCallbacksAndMessages(null);
+ handler.postDelayed(staleStateRunnable, delayTime);
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/TiltAnimator.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/TiltAnimator.java
new file mode 100644
index 0000000000..2a12622df5
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/TiltAnimator.java
@@ -0,0 +1,27 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.animation.ValueAnimator;
+import android.support.annotation.Nullable;
+
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+
+import java.util.List;
+
+class TiltAnimator extends MapboxCameraAnimatorAdapter {
+ TiltAnimator(Float previous, Float target, List updateListeners,
+ @Nullable MapboxMap.CancelableCallback cancelableCallback) {
+ super(previous, target, updateListeners, cancelableCallback);
+ }
+
+ @Override
+ int provideAnimatorType() {
+ return ANIMATOR_TILT;
+ }
+
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ for (OnCameraAnimationsValuesChangeListener listener : updateListeners) {
+ listener.onNewTiltValue((Float) animation.getAnimatedValue());
+ }
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/Utils.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/Utils.java
new file mode 100644
index 0000000000..6a0bd94285
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/Utils.java
@@ -0,0 +1,102 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.location.Location;
+import android.os.Build;
+import android.support.annotation.ColorInt;
+import android.support.annotation.DrawableRes;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.content.ContextCompat;
+
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+
+public final class Utils {
+
+ private Utils() {
+ // Class should not be initialized
+ }
+
+ /**
+ * Util for finding the shortest path from the current icon rotated degree to the new degree.
+ *
+ * @param magneticHeading the new position of the rotation
+ * @param previousMagneticHeading the current position of the rotation
+ * @return the shortest degree of rotation possible
+ */
+ public static float shortestRotation(float magneticHeading, float previousMagneticHeading) {
+ double diff = previousMagneticHeading - magneticHeading;
+ if (diff > 180.0f) {
+ magneticHeading += 360.0f;
+ } else if (diff < -180.0f) {
+ magneticHeading -= 360.f;
+ }
+ return magneticHeading;
+ }
+
+ static Bitmap getBitmapFromDrawable(Drawable drawable) {
+ if (drawable instanceof BitmapDrawable) {
+ return ((BitmapDrawable) drawable).getBitmap();
+ } else {
+ // width and height are equal for all assets since they are ovals.
+ Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
+ drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
+ Canvas canvas = new Canvas(bitmap);
+ drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+ drawable.draw(canvas);
+ return bitmap;
+ }
+ }
+
+ static Bitmap generateShadow(Drawable drawable, float elevation) {
+ int width = drawable.getIntrinsicWidth();
+ int height = drawable.getIntrinsicHeight();
+ Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+ Canvas canvas = new Canvas(bitmap);
+ drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+ drawable.draw(canvas);
+ bitmap = Bitmap.createScaledBitmap(bitmap,
+ toEven(width + elevation), toEven(height + elevation), false);
+ return bitmap;
+ }
+
+ static Drawable getDrawable(@NonNull Context context, @DrawableRes int drawableRes,
+ @ColorInt Integer tintColor) {
+ Drawable drawable = ContextCompat.getDrawable(context, drawableRes);
+ if (tintColor == null) {
+ return drawable;
+ }
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ drawable.setTint(tintColor);
+ } else {
+ drawable.mutate().setColorFilter(tintColor, PorterDuff.Mode.SRC_IN);
+ }
+ return drawable;
+ }
+
+ static float calculateZoomLevelRadius(@NonNull MapboxMap mapboxMap, @Nullable Location location) {
+ if (location == null) {
+ return 0;
+ }
+ double metersPerPixel = mapboxMap.getProjection().getMetersPerPixelAtLatitude(
+ location.getLatitude());
+ return (float) (location.getAccuracy() * (1 / metersPerPixel));
+ }
+
+ /**
+ * Casts the value to an even integer.
+ */
+ private static int toEven(float value) {
+ int i = (int) (value + .5f);
+ if (i % 2 == 1) {
+ return i - 1;
+ }
+ return i;
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/ZoomAnimator.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/ZoomAnimator.java
new file mode 100644
index 0000000000..a1b1d4bf81
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/ZoomAnimator.java
@@ -0,0 +1,29 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.animation.ValueAnimator;
+import android.support.annotation.Nullable;
+
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+
+import java.util.List;
+
+class ZoomAnimator extends MapboxCameraAnimatorAdapter {
+
+ ZoomAnimator(Float previous, Float target, List updateListeners,
+ @Nullable MapboxMap.CancelableCallback cancelableCallback) {
+ super(previous, target, updateListeners, cancelableCallback);
+ }
+
+ @Override
+ int provideAnimatorType() {
+ return ANIMATOR_ZOOM;
+ }
+
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation) {
+ for (OnCameraAnimationsValuesChangeListener listener : updateListeners) {
+ listener.onNewZoomValue((Float) animation.getAnimatedValue());
+ }
+ }
+
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/modes/CameraMode.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/modes/CameraMode.java
new file mode 100644
index 0000000000..5edffd00bd
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/modes/CameraMode.java
@@ -0,0 +1,66 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer.modes;
+
+import android.location.Location;
+import android.support.annotation.IntDef;
+
+import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerPlugin;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Contains the variety of camera modes which determine how the camera will track
+ * the user location.
+ */
+public final class CameraMode {
+
+ private CameraMode() {
+ // Class should not be initialized
+ }
+
+ /**
+ * Determine the camera tracking behavior in the {@link LocationLayerPlugin}.
+ */
+ @IntDef( {NONE, NONE_COMPASS, NONE_GPS, TRACKING, TRACKING_COMPASS, TRACKING_GPS, TRACKING_GPS_NORTH})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Mode {
+ }
+
+ /**
+ * No camera tracking.
+ */
+ public static final int NONE = 0x00000008;
+
+ /**
+ * Camera does not track location, but does track compass bearing.
+ */
+ public static final int NONE_COMPASS = 0x00000010;
+
+ /**
+ * Camera does not track location, but does track GPS {@link Location} bearing.
+ */
+ public static final int NONE_GPS = 0x00000016;
+
+ /**
+ * Camera tracks the user location.
+ */
+ public static final int TRACKING = 0x00000018;
+
+ /**
+ * Camera tracks the user location, with bearing
+ * provided by a compass.
+ */
+ public static final int TRACKING_COMPASS = 0x00000020;
+
+ /**
+ * Camera tracks the user location, with bearing
+ * provided by a normalized {@link Location#getBearing()}.
+ */
+ public static final int TRACKING_GPS = 0x00000022;
+
+ /**
+ * Camera tracks the user location, with bearing
+ * always set to north (0).
+ */
+ public static final int TRACKING_GPS_NORTH = 0x00000024;
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/modes/RenderMode.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/modes/RenderMode.java
new file mode 100644
index 0000000000..88db25beb7
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/modes/RenderMode.java
@@ -0,0 +1,45 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer.modes;
+
+import android.support.annotation.IntDef;
+
+import com.mapbox.mapboxsdk.plugins.locationlayer.CompassEngine;
+import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerPlugin;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Contains the variety of ways the user location can be rendered on the map.
+ */
+public final class RenderMode {
+
+ private RenderMode() {
+ // Class should not be initialized
+ }
+
+ /**
+ * One of these constants should be used with {@link LocationLayerPlugin#setRenderMode(int)}.
+ * mode can be switched at anytime by calling the {@code setLocationLayerMode} method passing
+ * in the new mode you'd like the location layer to be in.
+ */
+ @IntDef( {COMPASS, GPS, NORMAL})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Mode {
+ }
+
+ /**
+ * Basic tracking is enabled, bearing ignored.
+ */
+ public static final int NORMAL = 0x00000012;
+
+ /**
+ * Tracking the user location with bearing considered
+ * from a {@link CompassEngine}.
+ */
+ public static final int COMPASS = 0x00000004;
+
+ /**
+ * Tracking the user location with bearing considered from {@link android.location.Location}.
+ */
+ public static final int GPS = 0x00000008;
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/package-info.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/package-info.java
new file mode 100644
index 0000000000..0dc3ea41e5
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * Contains the Mapbox Location layer plugin.
+ */
+package com.mapbox.mapboxsdk.plugins.locationlayer;
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml b/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml
index 1c3653479a..789ba73f1a 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml
@@ -107,4 +107,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_bearing_icon.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_bearing_icon.xml
new file mode 100644
index 0000000000..51bb1161aa
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_bearing_icon.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_icon.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_icon.xml
new file mode 100644
index 0000000000..42f7d35aa9
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_icon.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_icon_shadow.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_icon_shadow.xml
new file mode 100644
index 0000000000..05e30364d7
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_icon_shadow.xml
@@ -0,0 +1,19 @@
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_icon_stale.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_icon_stale.xml
new file mode 100644
index 0000000000..ecfb85b2e8
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_icon_stale.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_puck_icon.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_puck_icon.xml
new file mode 100644
index 0000000000..4f13268419
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_puck_icon.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_stroke_icon.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_stroke_icon.xml
new file mode 100644
index 0000000000..b4213a7e83
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_user_stroke_icon.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml
index 053da80ade..9206899dd6 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml
@@ -128,4 +128,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values/colors.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values/colors.xml
index 19007f503f..565d1c99ca 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/res/values/colors.xml
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values/colors.xml
@@ -3,4 +3,7 @@
#5F5F5F
#7D7F80
#1E8CAB
+
+ #4A90E2
+ #A1B0C0
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values/dimens.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values/dimens.xml
index 00fc05cf6d..9bf77d46d9 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/res/values/dimens.xml
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values/dimens.xml
@@ -15,4 +15,7 @@
0.025dp
+
+ 25dp
+ 125dp
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values/styles.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values/styles.xml
new file mode 100644
index 0000000000..40bf1540ab
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values/styles.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/CompassEngineTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/CompassEngineTest.java
new file mode 100644
index 0000000000..c69d2fc5fb
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/CompassEngineTest.java
@@ -0,0 +1,64 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.view.WindowManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import static junit.framework.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class CompassEngineTest {
+
+ private LocationLayerCompassEngine compassEngine;
+
+ @Mock
+ private WindowManager windowManager;
+
+ @Mock
+ private SensorManager sensorManager;
+
+ @Before
+ public void setUp() throws Exception {
+ compassEngine = new LocationLayerCompassEngine(windowManager, sensorManager);
+ }
+
+ @Test
+ public void lastKnownCompassBearingAccuracyDefault() {
+ assertEquals("Last accuracy should match", compassEngine.getLastAccuracySensorStatus(), 0);
+ }
+
+ @Test
+ public void lastKnownCompassAccuracyStatusValue() {
+ Sensor sensor = mock(Sensor.class);
+ compassEngine.onAccuracyChanged(sensor, 2);
+ assertEquals("Last accuracy should match", compassEngine.getLastAccuracySensorStatus(), 2);
+ }
+
+ @Test
+ public void whenGyroscopeIsNull_fallbackToGravity() {
+ SensorManager sensorManager = mock(SensorManager.class);
+ when(sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE)).thenReturn(null);
+ new LocationLayerCompassEngine(windowManager, sensorManager);
+
+ verify(sensorManager, times(1)).getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+ }
+
+ @Test
+ public void whenGyroscopeIsNull_fallbackToMagneticField() {
+ SensorManager sensorManager = mock(SensorManager.class);
+ when(sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE)).thenReturn(null);
+ new LocationLayerCompassEngine(windowManager, sensorManager);
+
+ verify(sensorManager, times(1)).getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerCameraTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerCameraTest.java
new file mode 100644
index 0000000000..c73216f5d6
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerCameraTest.java
@@ -0,0 +1,337 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.graphics.PointF;
+
+import com.mapbox.android.gestures.MoveGestureDetector;
+import com.mapbox.mapboxsdk.camera.CameraPosition;
+import com.mapbox.mapboxsdk.camera.CameraUpdate;
+import com.mapbox.mapboxsdk.geometry.LatLng;
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+import com.mapbox.mapboxsdk.maps.Projection;
+import com.mapbox.mapboxsdk.maps.UiSettings;
+import com.mapbox.mapboxsdk.plugins.locationlayer.modes.CameraMode;
+
+import org.junit.Test;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class LocationLayerCameraTest {
+
+ @Test
+ public void setCameraMode_mapTransitionsAreCancelled() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+
+ camera.setCameraMode(CameraMode.TRACKING_GPS);
+
+ verify(mapboxMap).cancelTransitions();
+ }
+
+ @Test
+ public void setCameraMode_gestureThresholdIsAdjusted() {
+ MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class);
+ LocationLayerCamera camera = buildCamera(moveGestureDetector);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ float moveThreshold = 5f;
+ when(options.trackingInitialMoveThreshold()).thenReturn(moveThreshold);
+ camera.initializeOptions(options);
+
+ camera.setCameraMode(CameraMode.TRACKING_GPS);
+
+ verify(moveGestureDetector).setMoveThreshold(moveThreshold);
+ }
+
+ @Test
+ public void setCameraMode_gestureThresholdIsResetWhenNotTracking() {
+ MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class);
+ LocationLayerCamera camera = buildCamera(moveGestureDetector);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+
+ camera.setCameraMode(CameraMode.NONE);
+
+ verify(moveGestureDetector).setMoveThreshold(0f);
+ }
+
+ @Test
+ public void setCameraMode_notTrackingAdjustsFocalPoint() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+
+ camera.setCameraMode(CameraMode.TRACKING_GPS);
+ camera.setCameraMode(CameraMode.NONE);
+
+ verify(mapboxMap.getUiSettings()).setFocalPoint(null);
+ }
+
+ @Test
+ public void setCameraMode_trackingChangeListenerCameraDismissedIsCalled() {
+ OnCameraTrackingChangedListener internalTrackingChangedListener = mock(OnCameraTrackingChangedListener.class);
+ LocationLayerCamera camera = buildCamera(internalTrackingChangedListener);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+
+ camera.setCameraMode(CameraMode.TRACKING_GPS);
+ camera.setCameraMode(CameraMode.NONE);
+
+ verify(internalTrackingChangedListener).onCameraTrackingDismissed();
+ }
+
+ @Test
+ public void setCameraMode_internalCameraTrackingChangeListenerIsCalled() {
+ OnCameraTrackingChangedListener internalTrackingChangedListener = mock(OnCameraTrackingChangedListener.class);
+ LocationLayerCamera camera = buildCamera(internalTrackingChangedListener);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ int cameraMode = CameraMode.NONE;
+
+ camera.setCameraMode(cameraMode);
+
+ verify(internalTrackingChangedListener).onCameraTrackingChanged(cameraMode);
+ }
+
+ @Test
+ public void onNewLatLngValue_cameraModeTrackingUpdatesLatLng() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ when(mapboxMap.getProjection()).thenReturn(mock(Projection.class));
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING);
+ LatLng latLng = mock(LatLng.class);
+
+ camera.onNewLatLngValue(latLng);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewLatLngValue_cameraModeTrackingGpsNorthUpdatesLatLng() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ when(mapboxMap.getProjection()).thenReturn(mock(Projection.class));
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING_GPS_NORTH);
+ LatLng latLng = mock(LatLng.class);
+
+ camera.onNewLatLngValue(latLng);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewLatLngValue_cameraModeTrackingGpsUpdatesLatLng() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ when(mapboxMap.getProjection()).thenReturn(mock(Projection.class));
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING_GPS);
+ LatLng latLng = mock(LatLng.class);
+
+ camera.onNewLatLngValue(latLng);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewLatLngValue_cameraModeTrackingCompassUpdatesLatLng() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ when(mapboxMap.getProjection()).thenReturn(mock(Projection.class));
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING_COMPASS);
+ LatLng latLng = mock(LatLng.class);
+
+ camera.onNewLatLngValue(latLng);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewLatLngValue_cameraModeNoneIgnored() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ when(mapboxMap.getProjection()).thenReturn(mock(Projection.class));
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.NONE);
+ LatLng latLng = mock(LatLng.class);
+
+ camera.onNewLatLngValue(latLng);
+
+ verify(mapboxMap, times(0)).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewLatLngValue_focalPointIsAdjusted() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ UiSettings uiSettings = mock(UiSettings.class);
+ when(mapboxMap.getUiSettings()).thenReturn(uiSettings);
+ Projection projection = mock(Projection.class);
+ PointF pointF = mock(PointF.class);
+ when(projection.toScreenLocation(any(LatLng.class))).thenReturn(pointF);
+ when(mapboxMap.getProjection()).thenReturn(projection);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING);
+ LatLng latLng = mock(LatLng.class);
+
+ camera.onNewLatLngValue(latLng);
+
+ verify(uiSettings).setFocalPoint(pointF);
+ }
+
+ @Test
+ public void onNewGpsBearingValue_cameraModeTrackingGpsUpdatesBearing() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING_GPS);
+ float gpsBearing = 5f;
+
+ camera.onNewGpsBearingValue(gpsBearing);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewGpsBearingValue_cameraModeNoneGpsUpdatesBearing() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.NONE_GPS);
+ float gpsBearing = 5f;
+
+ camera.onNewGpsBearingValue(gpsBearing);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewGpsBearingValue_cameraModeTrackingNorthUpdatesBearing() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ CameraPosition cameraPosition = new CameraPosition.Builder().bearing(7d).build();
+ when(mapboxMap.getCameraPosition()).thenReturn(cameraPosition);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING_GPS_NORTH);
+ float gpsBearing = 5f;
+
+ camera.onNewGpsBearingValue(gpsBearing);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewGpsBearingValue_cameraModeTrackingNorthBearingZeroIgnored() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ CameraPosition cameraPosition = new CameraPosition.Builder().bearing(0d).build();
+ when(mapboxMap.getCameraPosition()).thenReturn(cameraPosition);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING_GPS_NORTH);
+ float gpsBearing = 5f;
+
+ camera.onNewGpsBearingValue(gpsBearing);
+
+ verify(mapboxMap, times(0)).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewGpsBearingValue_cameraModeNoneIgnored() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.NONE);
+ float gpsBearing = 5f;
+
+ camera.onNewGpsBearingValue(gpsBearing);
+
+ verify(mapboxMap, times(0)).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewCompassBearingValue_cameraModeTrackingCompassUpdatesBearing() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING_COMPASS);
+ float compassBearing = 5f;
+
+ camera.onNewCompassBearingValue(compassBearing);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewCompassBearingValue_cameraModeNoneCompassUpdatesBearing() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.NONE_COMPASS);
+ float compassBearing = 5f;
+
+ camera.onNewCompassBearingValue(compassBearing);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewCompassBearingValue_cameraModeNoneIgnored() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.NONE);
+ float compassBearing = 5f;
+
+ camera.onNewCompassBearingValue(compassBearing);
+
+ verify(mapboxMap, times(0)).moveCamera(any(CameraUpdate.class));
+ }
+
+ @Test
+ public void onNewZoomValue_cameraIsUpdated() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LocationLayerCamera camera = buildCamera(mapboxMap);
+ camera.initializeOptions(mock(LocationLayerOptions.class));
+ camera.setCameraMode(CameraMode.TRACKING);
+ float zoom = 5f;
+
+ camera.onNewZoomValue(zoom);
+
+ verify(mapboxMap).moveCamera(any(CameraUpdate.class));
+ }
+
+ private LocationLayerCamera buildCamera(OnCameraTrackingChangedListener onCameraTrackingChangedListener) {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class);
+ OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = mock(OnCameraMoveInvalidateListener.class);
+ return new LocationLayerCamera(mapboxMap, moveGestureDetector,
+ onCameraTrackingChangedListener, onCameraMoveInvalidateListener);
+ }
+
+ private LocationLayerCamera buildCamera(MoveGestureDetector moveGestureDetector) {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getUiSettings()).thenReturn(mock(UiSettings.class));
+ OnCameraTrackingChangedListener onCameraTrackingChangedListener = mock(OnCameraTrackingChangedListener.class);
+ OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = mock(OnCameraMoveInvalidateListener.class);
+ return new LocationLayerCamera(mapboxMap, moveGestureDetector,
+ onCameraTrackingChangedListener, onCameraMoveInvalidateListener);
+ }
+
+ private LocationLayerCamera buildCamera(MapboxMap mapboxMap) {
+ MoveGestureDetector moveGestureDetector = mock(MoveGestureDetector.class);
+ OnCameraTrackingChangedListener onCameraTrackingChangedListener = mock(OnCameraTrackingChangedListener.class);
+ OnCameraMoveInvalidateListener onCameraMoveInvalidateListener = mock(OnCameraMoveInvalidateListener.class);
+ return new LocationLayerCamera(mapboxMap, moveGestureDetector,
+ onCameraTrackingChangedListener, onCameraMoveInvalidateListener);
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerOptionsTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerOptionsTest.java
new file mode 100644
index 0000000000..5062a9b9cc
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerOptionsTest.java
@@ -0,0 +1,68 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+
+import com.mapbox.mapboxsdk.R;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public class LocationLayerOptionsTest {
+
+ @Mock
+ private Context context;
+ @Mock
+ private TypedArray array;
+ @Mock
+ private Resources resources;
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ @Before
+ public void setUp() throws Exception {
+ when(context.obtainStyledAttributes(R.style.mapbox_LocationLayer, R.styleable.mapbox_LocationLayer))
+ .thenReturn(array);
+ when(array.getResourceId(R.styleable.mapbox_LocationLayer_mapbox_foregroundDrawable, -1))
+ .thenReturn(R.drawable.mapbox_user_icon);
+ when(context.getResources()).thenReturn(resources);
+ }
+
+ @Test
+ public void sanity() throws Exception {
+ LocationLayerOptions locationLayerOptions = LocationLayerOptions.builder(context)
+ .accuracyAlpha(0.5f)
+ .build();
+ assertNotNull(locationLayerOptions);
+ }
+
+ @Test
+ public void passingOutOfRangeAccuracyAlpha_throwsException() throws Exception {
+ thrown.expect(IllegalArgumentException.class);
+ thrown.expectMessage("Location layer accuracy alpha value must be between 0.0 and "
+ + "1.0.");
+ LocationLayerOptions.builder(context)
+ .accuracyAlpha(2f)
+ .build();
+ }
+
+ @Test
+ public void negativeElevation_causesExceptionToBeThrown() throws Exception {
+ thrown.expect(IllegalArgumentException.class);
+ thrown.expectMessage("Invalid shadow size -500.0. Must be >= 0");
+ LocationLayerOptions.builder(context)
+ .elevation(-500)
+ .build();
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.java
new file mode 100644
index 0000000000..2a08855ab7
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.java
@@ -0,0 +1,466 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import android.graphics.Bitmap;
+
+import com.google.gson.JsonElement;
+import com.mapbox.geojson.Feature;
+import com.mapbox.mapboxsdk.geometry.LatLng;
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+import com.mapbox.mapboxsdk.plugins.locationlayer.modes.RenderMode;
+import com.mapbox.mapboxsdk.style.layers.Layer;
+import com.mapbox.mapboxsdk.style.sources.GeoJsonSource;
+
+import org.junit.Test;
+
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.BACKGROUND_ICON;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.BACKGROUND_LAYER;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.BACKGROUND_STALE_ICON;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.BEARING_ICON;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.BEARING_LAYER;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.FOREGROUND_ICON;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.FOREGROUND_LAYER;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.FOREGROUND_STALE_ICON;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.LOCATION_SOURCE;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.PROPERTY_ACCURACY_RADIUS;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.PROPERTY_COMPASS_BEARING;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.PROPERTY_FOREGROUND_ICON_OFFSET;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.PROPERTY_GPS_BEARING;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.PROPERTY_SHADOW_ICON_OFFSET;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.SHADOW_ICON;
+import static com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.SHADOW_LAYER;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class LocationLayerTest {
+
+ @Test
+ public void onInitialization_locationSourceIsAdded() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addSource(locationSource);
+ }
+
+ @Test
+ public void onInitialization_shadowLayerIsAdded() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ Layer shadowLayer = mock(Layer.class);
+ when(sourceProvider.generateLayer(SHADOW_LAYER)).thenReturn(shadowLayer);
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addLayerBelow(shadowLayer, BACKGROUND_LAYER);
+ }
+
+ @Test
+ public void onInitialization_backgroundLayerIsAdded() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ Layer backgroundLayer = mock(Layer.class);
+ when(sourceProvider.generateLayer(BACKGROUND_LAYER)).thenReturn(backgroundLayer);
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addLayerBelow(backgroundLayer, FOREGROUND_LAYER);
+ }
+
+ @Test
+ public void onInitialization_foregroundLayerIsAdded() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ Layer foregroundLayer = mock(Layer.class);
+ when(sourceProvider.generateLayer(FOREGROUND_LAYER)).thenReturn(foregroundLayer);
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addLayerBelow(foregroundLayer, BEARING_LAYER);
+ }
+
+ @Test
+ public void onInitialization_bearingLayerIsAdded() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ Layer bearingLayer = mock(Layer.class);
+ when(sourceProvider.generateLayer(BEARING_LAYER)).thenReturn(bearingLayer);
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ String layerBelow = "layer-below";
+ when(options.layerBelow()).thenReturn(layerBelow);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addLayerBelow(bearingLayer, layerBelow);
+ }
+
+ @Test
+ public void onInitialization_accuracyLayerIsAdded() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ Layer accuracyLayer = mock(Layer.class);
+ when(sourceProvider.generateAccuracyLayer()).thenReturn(accuracyLayer);
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addLayerBelow(accuracyLayer, BACKGROUND_LAYER);
+ }
+
+ @Test
+ public void applyStyle_styleShadowWithValidElevation() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class));
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ Bitmap bitmap = mock(Bitmap.class);
+ when(bitmapProvider.generateShadowBitmap(any(LocationLayerOptions.class))).thenReturn(bitmap);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ when(options.elevation()).thenReturn(2f);
+
+ // Style is applied on initialization
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addImage(SHADOW_ICON, bitmap);
+ }
+
+ @Test
+ public void applyStyle_ignoreStyleShadowWithInvalidElevation() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class));
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ Bitmap bitmap = mock(Bitmap.class);
+ when(bitmapProvider.generateShadowBitmap(any(LocationLayerOptions.class))).thenReturn(bitmap);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ when(options.elevation()).thenReturn(0f);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap, times(0)).addImage(SHADOW_ICON, bitmap);
+ }
+
+ @Test
+ public void applyStyle_styleForegroundFromOptions() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class));
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ int drawableResId = 123;
+ int tintColor = 456;
+ when(options.foregroundDrawable()).thenReturn(drawableResId);
+ when(options.foregroundTintColor()).thenReturn(tintColor);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ Bitmap bitmap = mock(Bitmap.class);
+ when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addImage(FOREGROUND_ICON, bitmap);
+ }
+
+ @Test
+ public void applyStyle_styleForegroundStaleFromOptions() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class));
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ int drawableResId = 123;
+ int tintColor = 456;
+ when(options.foregroundDrawableStale()).thenReturn(drawableResId);
+ when(options.foregroundStaleTintColor()).thenReturn(tintColor);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ Bitmap bitmap = mock(Bitmap.class);
+ when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addImage(FOREGROUND_STALE_ICON, bitmap);
+ }
+
+ @Test
+ public void applyStyle_styleBackgroundFromOptions() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class));
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ int drawableResId = 123;
+ int tintColor = 456;
+ when(options.backgroundDrawable()).thenReturn(drawableResId);
+ when(options.backgroundTintColor()).thenReturn(tintColor);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ Bitmap bitmap = mock(Bitmap.class);
+ when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addImage(BACKGROUND_ICON, bitmap);
+ }
+
+ @Test
+ public void applyStyle_styleBackgroundStaleFromOptions() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class));
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ int drawableResId = 123;
+ int tintColor = 456;
+ when(options.backgroundDrawableStale()).thenReturn(drawableResId);
+ when(options.backgroundStaleTintColor()).thenReturn(tintColor);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ Bitmap bitmap = mock(Bitmap.class);
+ when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addImage(BACKGROUND_STALE_ICON, bitmap);
+ }
+
+ @Test
+ public void applyStyle_styleBearingFromOptions() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(mock(GeoJsonSource.class));
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ int drawableResId = 123;
+ int tintColor = 456;
+ when(options.bearingDrawable()).thenReturn(drawableResId);
+ when(options.bearingTintColor()).thenReturn(tintColor);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ Bitmap bitmap = mock(Bitmap.class);
+ when(bitmapProvider.generateBitmap(drawableResId, tintColor)).thenReturn(bitmap);
+
+ new LocationLayer(mapboxMap, sourceProvider, buildFeatureProvider(options), bitmapProvider, options);
+
+ verify(mapboxMap).addImage(BEARING_ICON, bitmap);
+ }
+
+ @Test
+ public void updateForegroundOffset_foregroundIconPropertyIsUpdated() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ Feature locationFeature = mock(Feature.class);
+ LocationLayer layer = new LocationLayer(
+ mapboxMap, sourceProvider, buildFeatureProvider(locationFeature, options), bitmapProvider, options
+ );
+
+ layer.updateForegroundOffset(2d);
+
+ verify(locationFeature).addProperty(eq(PROPERTY_FOREGROUND_ICON_OFFSET), any(JsonElement.class));
+ }
+
+ @Test
+ public void updateForegroundOffset_shadowPropertyIsUpdated() {
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ Feature locationFeature = mock(Feature.class);
+ LocationLayer layer = new LocationLayer(
+ mapboxMap, sourceProvider, buildFeatureProvider(locationFeature, options), bitmapProvider, options
+ );
+
+ layer.updateForegroundOffset(2d);
+
+ verify(locationFeature).addProperty(eq(PROPERTY_SHADOW_ICON_OFFSET), any(JsonElement.class));
+ }
+
+ @Test
+ public void onNewLatLngValue_locationFeatureIsUpdated() {
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ Feature locationFeature = mock(Feature.class);
+ LocationLayer layer = new LocationLayer(
+ mapboxMap, sourceProvider, buildFeatureProvider(locationFeature, options), bitmapProvider, options
+ );
+
+ layer.onNewLatLngValue(new LatLng());
+
+ // wanted twice (once for initialization)
+ verify(locationSource, times(2)).setGeoJson(locationFeature);
+ }
+
+ @Test
+ public void onNewGpsBearingValue_locationFeatureIsUpdated() {
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ Feature locationFeature = mock(Feature.class);
+ LocationLayer layer = new LocationLayer(
+ mapboxMap, sourceProvider, buildFeatureProvider(locationFeature, options), bitmapProvider, options
+ );
+ layer.setRenderMode(RenderMode.GPS);
+ float gpsBearing = 2f;
+
+ layer.onNewGpsBearingValue(gpsBearing);
+
+ verify(locationFeature).addNumberProperty(PROPERTY_GPS_BEARING, gpsBearing);
+ }
+
+ @Test
+ public void onNewGpsBearingValue_updateIgnoredWithInvalidRenderMode() {
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ Feature locationFeature = mock(Feature.class);
+ LocationLayer layer = new LocationLayer(
+ mapboxMap, sourceProvider, buildFeatureProvider(locationFeature, options), bitmapProvider, options
+ );
+ layer.setRenderMode(RenderMode.COMPASS);
+ float gpsBearing = 2f;
+
+ layer.onNewGpsBearingValue(gpsBearing);
+
+ verify(locationFeature, times(0)).addNumberProperty(PROPERTY_GPS_BEARING, gpsBearing);
+ }
+
+ @Test
+ public void onNewCompassBearingValue_locationFeatureIsUpdated() {
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ Feature locationFeature = mock(Feature.class);
+ LocationLayer layer = new LocationLayer(
+ mapboxMap, sourceProvider, buildFeatureProvider(locationFeature, options), bitmapProvider, options
+ );
+ layer.setRenderMode(RenderMode.COMPASS);
+ float compassBearing = 2f;
+
+ layer.onNewCompassBearingValue(compassBearing);
+
+ verify(locationFeature).addNumberProperty(PROPERTY_COMPASS_BEARING, compassBearing);
+ }
+
+ @Test
+ public void onNewCompassBearingValue_updateIgnoredWithInvalidRenderMode() {
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ Feature locationFeature = mock(Feature.class);
+ LocationLayer layer = new LocationLayer(
+ mapboxMap, sourceProvider, buildFeatureProvider(locationFeature, options), bitmapProvider, options
+ );
+ layer.setRenderMode(RenderMode.GPS);
+ float compassBearing = 2f;
+
+ layer.onNewCompassBearingValue(compassBearing);
+
+ verify(locationFeature, times(0)).addNumberProperty(PROPERTY_COMPASS_BEARING, compassBearing);
+ }
+
+ @Test
+ public void onNewAccuracyRadiusValue_locationFeatureIsUpdated() {
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ Feature locationFeature = mock(Feature.class);
+ LocationLayer layer = new LocationLayer(
+ mapboxMap, sourceProvider, buildFeatureProvider(locationFeature, options), bitmapProvider, options
+ );
+ float accuracyRadiusValue = 2f;
+
+ layer.onNewAccuracyRadiusValue(accuracyRadiusValue);
+
+ verify(locationFeature).addNumberProperty(PROPERTY_ACCURACY_RADIUS, accuracyRadiusValue);
+ }
+
+ @Test
+ public void onNewAccuracyRadiusValue_updateIgnoredWithInvalidRenderMode() {
+ GeoJsonSource locationSource = mock(GeoJsonSource.class);
+ MapboxMap mapboxMap = mock(MapboxMap.class);
+ when(mapboxMap.getSourceAs(LOCATION_SOURCE)).thenReturn(locationSource);
+ LayerSourceProvider sourceProvider = buildLayerProvider();
+ when(sourceProvider.generateSource(any(Feature.class))).thenReturn(locationSource);
+ LayerBitmapProvider bitmapProvider = mock(LayerBitmapProvider.class);
+ LocationLayerOptions options = mock(LocationLayerOptions.class);
+ Feature locationFeature = mock(Feature.class);
+ LocationLayer layer = new LocationLayer(
+ mapboxMap, sourceProvider, buildFeatureProvider(locationFeature, options), bitmapProvider, options
+ );
+ layer.setRenderMode(RenderMode.GPS);
+ float accuracyRadiusValue = 2f;
+
+ layer.onNewAccuracyRadiusValue(accuracyRadiusValue);
+
+ verify(locationFeature, times(0)).addNumberProperty(PROPERTY_ACCURACY_RADIUS, accuracyRadiusValue);
+ }
+
+ private LayerFeatureProvider buildFeatureProvider(LocationLayerOptions options) {
+ LayerFeatureProvider provider = mock(LayerFeatureProvider.class);
+ when(provider.generateLocationFeature(null, options)).thenReturn(mock(Feature.class));
+ return provider;
+ }
+
+ private LayerFeatureProvider buildFeatureProvider(Feature feature, LocationLayerOptions options) {
+ LayerFeatureProvider provider = mock(LayerFeatureProvider.class);
+ when(provider.generateLocationFeature(null, options)).thenReturn(feature);
+ return provider;
+ }
+
+ private LayerSourceProvider buildLayerProvider() {
+ LayerSourceProvider layerSourceProvider = mock(LayerSourceProvider.class);
+ when(layerSourceProvider.generateLayer(SHADOW_LAYER)).thenReturn(mock(Layer.class));
+ when(layerSourceProvider.generateLayer(BACKGROUND_LAYER)).thenReturn(mock(Layer.class));
+ when(layerSourceProvider.generateLayer(FOREGROUND_LAYER)).thenReturn(mock(Layer.class));
+ when(layerSourceProvider.generateLayer(BEARING_LAYER)).thenReturn(mock(Layer.class));
+ when(layerSourceProvider.generateAccuracyLayer()).thenReturn(mock(Layer.class));
+ return layerSourceProvider;
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginAnimatorCoordinatorTest.kt b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginAnimatorCoordinatorTest.kt
new file mode 100644
index 0000000000..738b7b7a20
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/PluginAnimatorCoordinatorTest.kt
@@ -0,0 +1,284 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer
+
+import android.location.Location
+import com.mapbox.mapboxsdk.camera.CameraPosition
+import com.mapbox.mapboxsdk.geometry.LatLng
+import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.DEFAULT_TRACKING_TILT_ANIMATION_DURATION
+import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION
+import com.mapbox.mapboxsdk.plugins.locationlayer.PluginAnimator.*
+import junit.framework.Assert.assertEquals
+import junit.framework.Assert.assertTrue
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito
+import org.robolectric.RobolectricTestRunner
+
+@RunWith(RobolectricTestRunner::class)
+class PluginAnimatorCoordinatorTest {
+
+ private lateinit var pluginAnimatorCoordinator: PluginAnimatorCoordinator
+ private val cameraPosition: CameraPosition = CameraPosition.DEFAULT
+
+ @Before
+ fun setUp() {
+ pluginAnimatorCoordinator = PluginAnimatorCoordinator()
+ }
+
+ @Test
+ fun feedNewLocation_animatorsAreCreated() {
+ pluginAnimatorCoordinator.feedNewLocation(Location(""), cameraPosition, false)
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_LATLNG] != null)
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_GPS_BEARING] != null)
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_LATLNG] != null)
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_GPS_BEARING] != null)
+ }
+
+ @Test
+ fun feedNewLocation_animatorValue() {
+ val location = Location("")
+ location.latitude = 51.0
+ location.longitude = 17.0
+ location.bearing = 35f
+ pluginAnimatorCoordinator.feedNewLocation(location, cameraPosition, false)
+
+ val cameraLatLngTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_LATLNG]?.target as LatLng
+ assertEquals(cameraLatLngTarget.latitude, cameraLatLngTarget.latitude)
+
+ val layerLatLngTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_LATLNG]?.target as LatLng
+ assertEquals(layerLatLngTarget.latitude, layerLatLngTarget.latitude)
+
+ val cameraBearingTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_GPS_BEARING]?.target as Float
+ assertEquals(location.bearing, cameraBearingTarget)
+
+ val layerBearingTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_GPS_BEARING]?.target as Float
+ assertEquals(location.bearing, layerBearingTarget)
+ }
+
+ @Test
+ fun feedNewLocation_isNorth_animatorsAreCreated() {
+ val location = Location("")
+ location.latitude = 51.0
+ location.longitude = 17.0
+ location.bearing = 35f
+ pluginAnimatorCoordinator.feedNewLocation(location, cameraPosition, false)
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_LATLNG] != null)
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_GPS_BEARING] != null)
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_LATLNG] != null)
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_GPS_BEARING] != null)
+ }
+
+ @Test
+ fun feedNewLocation_isNorth_animatorValue() {
+ val location = Location("")
+ location.latitude = 51.0
+ location.longitude = 17.0
+ location.bearing = 35f
+ pluginAnimatorCoordinator.feedNewLocation(location, cameraPosition, true)
+
+ val cameraLatLngTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_LATLNG]?.target as LatLng
+ assertEquals(cameraLatLngTarget.latitude, cameraLatLngTarget.latitude)
+
+ val layerLatLngTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_LATLNG]?.target as LatLng
+ assertEquals(layerLatLngTarget.latitude, layerLatLngTarget.latitude)
+
+ val cameraBearingTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_GPS_BEARING]?.target as Float
+ assertEquals(0f, cameraBearingTarget)
+
+ val layerBearingTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_GPS_BEARING]?.target as Float
+ assertEquals(location.bearing, layerBearingTarget)
+ }
+
+ @Test
+ fun feedNewCompassBearing_animatorsAreCreated() {
+ pluginAnimatorCoordinator.feedNewCompassBearing(77f, cameraPosition)
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_COMPASS_BEARING] != null)
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_COMPASS_BEARING] != null)
+ }
+
+ @Test
+ fun feedNewCompassBearing_animatorValue() {
+ val bearing = 77f
+ pluginAnimatorCoordinator.feedNewCompassBearing(bearing, cameraPosition)
+
+ val cameraBearingTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_COMPASS_BEARING]?.target as Float
+ assertEquals(bearing, cameraBearingTarget)
+
+ val layerBearingTarget = pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_COMPASS_BEARING]?.target as Float
+ assertEquals(bearing, layerBearingTarget)
+ }
+
+ @Test
+ fun feedNewAccuracyRadius_animatorsCreated() {
+ pluginAnimatorCoordinator.feedNewAccuracyRadius(150f, false)
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_ACCURACY] != null)
+ }
+
+ @Test
+ fun feedNewAccuracyRadius_animatorValue() {
+ val accuracy = 150f
+ pluginAnimatorCoordinator.feedNewAccuracyRadius(accuracy, false)
+
+ val layerAccuracy = pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_ACCURACY]?.target as Float
+ assertEquals(layerAccuracy, accuracy)
+
+ val animationDuration = pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_ACCURACY]?.duration as Long
+ assertEquals(LocationLayerConstants.ACCURACY_RADIUS_ANIMATION_DURATION, animationDuration)
+ }
+
+ @Test
+ fun feedNewAccuracyRadius_noAnimation_animatorsCreated() {
+ pluginAnimatorCoordinator.feedNewAccuracyRadius(150f, true)
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_ACCURACY] != null)
+ }
+
+ @Test
+ fun feedNewAccuracyRadius_noAnimation_animatorValue() {
+ val accuracy = 150f
+ pluginAnimatorCoordinator.feedNewAccuracyRadius(accuracy, true)
+
+ val layerAccuracy = pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_ACCURACY]?.target as Float
+ assertEquals(layerAccuracy, accuracy)
+
+ val animationDuration = pluginAnimatorCoordinator.animatorMap[ANIMATOR_LAYER_ACCURACY]?.duration as Long
+ assertEquals(0L, animationDuration)
+ }
+
+ @Test
+ fun feedNewZoomLevel_animatorsCreated() {
+ pluginAnimatorCoordinator.feedNewZoomLevel(
+ 15.0,
+ cameraPosition,
+ DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION,
+ null
+ )
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_ZOOM] != null)
+ }
+
+ @Test
+ fun feedNewZoomLevel_animatorValue() {
+ val zoom = 15.0f
+ pluginAnimatorCoordinator.feedNewZoomLevel(
+ zoom.toDouble(),
+ cameraPosition,
+ DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION,
+ null
+ )
+
+ val animationDuration = pluginAnimatorCoordinator.animatorMap[ANIMATOR_ZOOM]?.duration as Long
+ assertEquals(DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION, animationDuration)
+
+ val target = pluginAnimatorCoordinator.animatorMap[ANIMATOR_ZOOM]?.target as Float
+ assertEquals(zoom, target)
+ }
+
+ @Test
+ fun feedNewTiltLevel_animatorsCreated() {
+ pluginAnimatorCoordinator.feedNewTilt(
+ 30.0,
+ cameraPosition,
+ DEFAULT_TRACKING_TILT_ANIMATION_DURATION,
+ null
+ )
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_TILT] != null)
+ }
+
+ @Test
+ fun feedNewTiltLevel_animatorValue() {
+ val tilt = 30.0f
+ pluginAnimatorCoordinator.feedNewTilt(
+ tilt.toDouble(),
+ cameraPosition,
+ DEFAULT_TRACKING_TILT_ANIMATION_DURATION,
+ null
+ )
+
+ val animationDuration = pluginAnimatorCoordinator.animatorMap[ANIMATOR_TILT]?.duration as Long
+ assertEquals(DEFAULT_TRACKING_TILT_ANIMATION_DURATION, animationDuration)
+
+ val target = pluginAnimatorCoordinator.animatorMap[ANIMATOR_TILT]?.target as Float
+ assertEquals(tilt, target)
+ }
+
+ @Test
+ fun cancelAllAnimators() {
+ pluginAnimatorCoordinator.feedNewLocation(Location(""), cameraPosition, true)
+ pluginAnimatorCoordinator.cancelAllAnimations()
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_CAMERA_LATLNG] == null)
+ }
+
+ @Test
+ fun cancelZoomAnimators() {
+ pluginAnimatorCoordinator.feedNewZoomLevel(
+ 15.0,
+ cameraPosition,
+ DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION,
+ null
+ )
+ pluginAnimatorCoordinator.cancelZoomAnimation()
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_ZOOM] == null)
+ }
+
+ @Test
+ fun cancelTiltAnimation() {
+ pluginAnimatorCoordinator.feedNewTilt(
+ 30.0,
+ cameraPosition,
+ DEFAULT_TRACKING_TILT_ANIMATION_DURATION,
+ null
+ )
+
+ pluginAnimatorCoordinator.cancelTiltAnimation()
+
+ assertTrue(pluginAnimatorCoordinator.animatorMap[ANIMATOR_TILT] == null)
+ }
+
+ @Test
+ fun resetAllCameraAnimations_empty() {
+ pluginAnimatorCoordinator.resetAllCameraAnimations(cameraPosition, false)
+ assertTrue(pluginAnimatorCoordinator.animatorMap.isEmpty())
+ }
+
+ @Test
+ fun addLayerListener() {
+ val layerListener = Mockito.mock(OnLayerAnimationsValuesChangeListener::class.java)
+ pluginAnimatorCoordinator.addLayerListener(layerListener)
+
+ assertTrue(pluginAnimatorCoordinator.layerListeners.contains(layerListener))
+ }
+
+ @Test
+ fun removeLayerListener() {
+ val layerListener = Mockito.mock(OnLayerAnimationsValuesChangeListener::class.java)
+ pluginAnimatorCoordinator.addLayerListener(layerListener)
+ pluginAnimatorCoordinator.removeLayerListener(layerListener)
+
+ assertTrue(pluginAnimatorCoordinator.layerListeners.isEmpty())
+ }
+
+ @Test
+ fun addCameraListener() {
+ val cameraListener = Mockito.mock(OnCameraAnimationsValuesChangeListener::class.java)
+ pluginAnimatorCoordinator.addCameraListener(cameraListener)
+
+ assertTrue(pluginAnimatorCoordinator.cameraListeners.contains(cameraListener))
+ }
+
+ @Test
+ fun removeCameraListener() {
+ val cameraListener = Mockito.mock(OnCameraAnimationsValuesChangeListener::class.java)
+ pluginAnimatorCoordinator.addCameraListener(cameraListener)
+ pluginAnimatorCoordinator.removeCameraListener(cameraListener)
+
+ assertTrue(pluginAnimatorCoordinator.cameraListeners.isEmpty())
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/UtilsTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/UtilsTest.java
new file mode 100644
index 0000000000..9caad6c6a1
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/plugins/locationlayer/UtilsTest.java
@@ -0,0 +1,29 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer;
+
+import org.junit.Test;
+
+import static junit.framework.Assert.assertEquals;
+
+public final class UtilsTest {
+
+
+ @Test
+ public void shortestRotation_doesReturnValueDistanceQuickestToZero() throws Exception {
+ float value = Utils.shortestRotation(0, 181);
+ assertEquals(360f, value);
+ value = Utils.shortestRotation(0, 179);
+ assertEquals(0f, value);
+ value = Utils.shortestRotation(0, 180);
+ assertEquals(0f, value);
+ }
+
+ @Test
+ public void shortestRotation_doesReturnValueDistanceQuickestToFifty() throws Exception {
+ float value = Utils.shortestRotation(50, 231);
+ assertEquals(410f, value);
+ value = Utils.shortestRotation(50, 229);
+ assertEquals(50f, value);
+ value = Utils.shortestRotation(50, 180);
+ assertEquals(50f, value);
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPluginTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPluginTest.kt
new file mode 100644
index 0000000000..12a64850b0
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerPluginTest.kt
@@ -0,0 +1,1089 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer
+
+import android.Manifest
+import android.R
+import android.arch.lifecycle.Lifecycle
+import android.content.Context
+import android.graphics.Color
+import android.graphics.RectF
+import android.location.Location
+import android.support.test.espresso.Espresso.onView
+import android.support.test.espresso.IdlingRegistry
+import android.support.test.espresso.UiController
+import android.support.test.espresso.assertion.ViewAssertions.matches
+import android.support.test.espresso.matcher.ViewMatchers.*
+import android.support.test.filters.LargeTest
+import android.support.test.rule.ActivityTestRule
+import android.support.test.rule.GrantPermissionRule
+import android.support.test.runner.AndroidJUnit4
+import android.support.v4.content.ContextCompat
+import com.mapbox.geojson.Point
+import com.mapbox.mapboxsdk.camera.CameraPosition
+import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
+import com.mapbox.mapboxsdk.constants.Style
+import com.mapbox.mapboxsdk.geometry.LatLng
+import com.mapbox.mapboxsdk.maps.MapView
+import com.mapbox.mapboxsdk.maps.MapboxMap
+import com.mapbox.mapboxsdk.maps.MapboxMapOptions
+import com.mapbox.mapboxsdk.maps.SupportMapFragment
+import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.*
+import com.mapbox.mapboxsdk.plugins.locationlayer.modes.CameraMode
+import com.mapbox.mapboxsdk.plugins.locationlayer.modes.RenderMode
+import com.mapbox.mapboxsdk.plugins.utils.*
+import com.mapbox.mapboxsdk.plugins.utils.MapboxTestingUtils.Companion.MAPBOX_HEAVY_STYLE
+import com.mapbox.mapboxsdk.plugins.utils.MapboxTestingUtils.Companion.pushSourceUpdates
+import com.mapbox.mapboxsdk.plugins.utils.PluginGenerationUtil.Companion.MAP_CONNECTION_DELAY
+import com.mapbox.mapboxsdk.plugins.utils.PluginGenerationUtil.Companion.MAP_RENDER_DELAY
+import com.mapbox.mapboxsdk.style.layers.PropertyFactory
+import com.mapbox.mapboxsdk.style.sources.GeoJsonSource
+import com.mapbox.mapboxsdk.testapp.activity.SingleFragmentActivity
+import org.hamcrest.CoreMatchers.*
+import org.junit.*
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertTrue
+import org.junit.rules.TestName
+import org.junit.runner.RunWith
+import timber.log.Timber
+
+/**
+ * Test class that uses a map fragment to keep onMapReady actions isolated to within the test
+ */
+@RunWith(AndroidJUnit4::class)
+@LargeTest
+class LocationLayerPluginTest {
+
+ @Rule
+ @JvmField
+ val activityRule = ActivityTestRule(SingleFragmentActivity::class.java, true, true)
+
+ @Rule
+ @JvmField
+ val nameRule = TestName()
+
+ @Rule
+ @JvmField
+ val permissionRule: GrantPermissionRule = GrantPermissionRule.grant(Manifest.permission.ACCESS_FINE_LOCATION)
+
+ private lateinit var idlingResource: OnMapFragmentReadyIdlingResource
+ private lateinit var styleChangeIdlingResource: StyleChangeIdlingResource
+ private lateinit var fragment: SupportMapFragment
+ private lateinit var mapboxMap: MapboxMap
+ private val location: Location by lazy {
+ val initLocation = Location("test")
+ initLocation.latitude = 15.0
+ initLocation.longitude = 17.0
+ initLocation
+ }
+
+ @Before
+ fun beforeTest() {
+
+ // Create a default support map fragment and pass it into the empty activity
+ val options = MapboxMapOptions()
+ .camera(CameraPosition.Builder().zoom(2.0).build()) // to match plugins min zoom
+ fragment = SupportMapFragment.newInstance(options)
+ activityRule.activity.setFragment(fragment)
+
+ Timber.e("@Before: ${nameRule.methodName} - register idle resource")
+ // If idlingResource is null, throw Kotlin exception
+ idlingResource = OnMapFragmentReadyIdlingResource(fragment)
+ styleChangeIdlingResource = StyleChangeIdlingResource()
+ IdlingRegistry.getInstance().register(idlingResource)
+ IdlingRegistry.getInstance().register(styleChangeIdlingResource)
+ onView(withId(R.id.content)).check(matches(isDisplayed()))
+ mapboxMap = idlingResource.mapboxMap
+ }
+
+ @Test
+ fun locationLayerPlugin_initializesLocationEngineCorrectlyWhenOnesNotProvided() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ val locationEngine = plugin.locationEngine
+ assertThat(locationEngine, notNullValue())
+
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ assertThat(locationEngine?.isConnected, `is`(true))
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, true))
+ }
+
+ @Test
+ fun locationLayerPlugin_initializesLocationEngineCorrectlyWhenOnesNotProvidedButHasOptions() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ val locationEngine = plugin.locationEngine
+ val pluginOptions = plugin.locationLayerOptions
+
+ assertThat(locationEngine, notNullValue())
+ assertThat(pluginOptions, notNullValue())
+
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ assertThat(locationEngine?.isConnected, `is`(true))
+ assertThat(pluginOptions?.accuracyAlpha(), `is`(.5f))
+ assertThat(pluginOptions?.accuracyColor(), `is`(Color.BLUE))
+ }
+ }
+
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .staleStateTimeout(200)
+ .enableStaleState(false)
+ .accuracyAlpha(.5f)
+ .accuracyColor(Color.BLUE)
+ .build()
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(
+ activityRule.activity, true, null, options))
+ }
+
+ @Test
+ fun settingMapStyleImmediatelyBeforeLoadingPlugin_doesStillLoadLayersProperly() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+
+ assertThat(plugin.renderMode, `is`(equalTo(RenderMode.NORMAL)))
+ assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BEARING_LAYER), `is`(false))
+ }
+ }
+
+ executePluginTest(pluginAction, object : GenericPluginAction.PluginProvider {
+ override fun providePlugin(mapView: MapView, mapboxMap: MapboxMap, context: Context): LocationLayerPlugin {
+ // changing the style just before instantiating the plugin
+ mapboxMap.setStyleUrl(Style.LIGHT)
+ val plugin =
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false)
+ .providePlugin(mapView, mapboxMap, context)
+ plugin.forceLocationUpdate(location)
+ return plugin
+ }
+
+ override fun isPluginDataReady(plugin: LocationLayerPlugin, mapboxMap: MapboxMap): Boolean {
+ val source = mapboxMap.getSource(LOCATION_SOURCE)
+ return source != null && (source as GeoJsonSource).querySourceFeatures(null).isNotEmpty()
+ }
+ })
+ }
+
+ @Test
+ fun locationLayer_doesntShowUntilFirstLocationFix() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ // Source should be present but empty
+ val mapView = fragment.view as MapView
+ assertThat(mapboxMap.queryRenderedFeatures(
+ RectF(0f, 0f, mapView.width.toFloat(), mapView.height.toFloat()), FOREGROUND_LAYER)
+ .isEmpty(), `is`(true))
+
+ // Force the first location update
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+
+ // Check if the puck is visible
+ assertThat(mapboxMap.queryRenderedFeatures(location, FOREGROUND_LAYER).isEmpty(), `is`(false))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ //
+ // Location Layer Options
+ //
+
+ @Test
+ fun locationLayerOptions_disablingStaleStateDoesWorkCorrectly() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(200)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ mapboxMap.querySourceFeatures(LOCATION_SOURCE).also {
+ it.forEach {
+ assertThat(it.getBooleanProperty(PROPERTY_LOCATION_STALE), `is`(false))
+ }
+ }
+ }
+ }
+
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .staleStateTimeout(200)
+ .enableStaleState(false)
+ .build()
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, options))
+ }
+
+ @Test
+ fun locationLayerOptions_loadsForegroundBitmapFromNameOption() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ val foregroundDrawable = ContextCompat.getDrawable(context, R.drawable.ic_media_play)
+ mapboxMap.addImageFromDrawable("custom-foreground-bitmap", foregroundDrawable!!)
+ mapboxMap.addImageFromDrawable("custom-background-bitmap", foregroundDrawable)
+ mapboxMap.addImageFromDrawable("custom-foreground-stale-bitmap", foregroundDrawable)
+ mapboxMap.addImageFromDrawable("custom-background-stale-bitmap", foregroundDrawable)
+ mapboxMap.addImageFromDrawable("custom-bearing-bitmap", foregroundDrawable)
+
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ assertThat(mapboxMap.queryRenderedFeatures(location, FOREGROUND_LAYER).isEmpty(), `is`(false))
+
+ val feature = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0]
+ assertThat(feature.getStringProperty(PROPERTY_FOREGROUND_ICON), `is`(equalTo("custom-foreground-bitmap")))
+ assertThat(feature.getStringProperty(PROPERTY_BACKGROUND_ICON), `is`(equalTo("custom-background-bitmap")))
+ assertThat(feature.getStringProperty(PROPERTY_FOREGROUND_STALE_ICON), `is`(equalTo("custom-foreground-stale-bitmap")))
+ assertThat(feature.getStringProperty(PROPERTY_BACKGROUND_STALE_ICON), `is`(equalTo("custom-background-stale-bitmap")))
+ assertThat(feature.getStringProperty(PROPERTY_BEARING_ICON), `is`(equalTo("custom-bearing-bitmap")))
+ }
+ }
+
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .foregroundName("custom-foreground-bitmap")
+ .backgroundName("custom-background-bitmap")
+ .foregroundStaleName("custom-foreground-stale-bitmap")
+ .backgroundStaleName("custom-background-stale-bitmap")
+ .bearingName("custom-bearing-bitmap")
+ .build()
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, options))
+ }
+
+ @Test
+ fun locationLayerOptions_loadsGpsNameWithGpsRenderMode() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.GPS
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ val foregroundDrawable = ContextCompat.getDrawable(context, R.drawable.ic_media_play)
+ mapboxMap.addImageFromDrawable("custom-foreground-bitmap", foregroundDrawable!!)
+ mapboxMap.addImageFromDrawable("custom-gps-bitmap", foregroundDrawable)
+
+ val foregroundId = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getStringProperty(PROPERTY_FOREGROUND_ICON)
+ assertThat(foregroundId, `is`(equalTo("custom-gps-bitmap")))
+ }
+ }
+
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .foregroundName("custom-foreground-bitmap")
+ .gpsName("custom-gps-bitmap")
+ .build()
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, options))
+ }
+
+ @Test
+ fun locationLayerOptions_customIconNameRevertsToDefault() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.GPS
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ val foregroundId = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getStringProperty(PROPERTY_FOREGROUND_ICON)
+ assertThat(foregroundId, `is`(equalTo("custom-gps-bitmap")))
+
+ plugin.applyStyle(LocationLayerOptions.builder(fragment.activity).build())
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ val revertedForegroundId = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getStringProperty(PROPERTY_FOREGROUND_ICON)
+ assertThat(revertedForegroundId, `is`(equalTo(FOREGROUND_ICON)))
+ }
+ }
+
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .foregroundName("custom-foreground-bitmap")
+ .gpsName("custom-gps-bitmap")
+ .build()
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, options))
+ }
+
+ @Test
+ fun locationLayerOptions_customGpsIconNameChangeBackWithMode() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.GPS
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ val foregroundId = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getStringProperty(PROPERTY_FOREGROUND_ICON)
+ assertThat(foregroundId, `is`(equalTo("custom-gps-bitmap")))
+
+ plugin.renderMode = RenderMode.NORMAL
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ val revertedForegroundId = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getStringProperty(PROPERTY_FOREGROUND_ICON)
+ assertThat(revertedForegroundId, `is`(equalTo(FOREGROUND_ICON)))
+ }
+ }
+
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .gpsName("custom-gps-bitmap")
+ .build()
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, options))
+ }
+
+ @Test
+ fun stillStaleAfterResuming() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(300) // engaging stale state
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getBooleanProperty(PROPERTY_LOCATION_STALE), `is`(true))
+
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getBooleanProperty(PROPERTY_LOCATION_STALE), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(false))
+ }
+ }
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .staleStateTimeout(200)
+ .build()
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, options, false))
+ }
+
+ @Test
+ fun stillNotStaleAfterResuming() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getBooleanProperty(PROPERTY_LOCATION_STALE), `is`(false))
+
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getBooleanProperty(PROPERTY_LOCATION_STALE), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(true))
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun locationLayerOptions_accuracyRingWithColor() {
+ val color = Color.parseColor("#4A90E2")
+ val rgbaColor = PropertyFactory.colorToRgbaString(color)
+
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ // Check that the source property changes correctly
+ mapboxMap.querySourceFeatures(LOCATION_SOURCE).also {
+ it.forEach {
+ assertThat(it.getStringProperty(PROPERTY_ACCURACY_COLOR), `is`(equalTo(rgbaColor)))
+ }
+ }
+ }
+ }
+
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .accuracyColor(color)
+ .build()
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, options))
+ }
+
+ @Test
+ fun forceLocationUpdate_doesMoveLocationLayerIconToCorrectPosition() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ plugin.forceLocationUpdate(location)
+
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ val point: Point = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].geometry() as Point
+
+ assertThat(plugin.locationEngine, nullValue())
+ assertEquals(point.latitude(), location.latitude, 0.1)
+ assertEquals(point.longitude(), location.longitude, 0.1)
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun disablingPluginHidesPuck() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ val point: Point = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].geometry() as Point
+ assertEquals(point.latitude(), location.latitude, 0.1)
+ assertEquals(point.longitude(), location.longitude, 0.1)
+
+ plugin.isLocationLayerEnabled = false
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE).isEmpty(), `is`(true))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun disablingPluginAndChangingStyleAllowsToEnableAgain() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ plugin.isLocationLayerEnabled = false
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ mapboxMap.setStyle(Style.LIGHT)
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ plugin.isLocationLayerEnabled = true
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun lifecycle_keepsEnabledWhenStoppedAndStarted() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ assertThat(plugin.isLocationLayerEnabled, `is`(true))
+ testLifecycleOwner.handleLifecycleEvent(Lifecycle.Event.ON_PAUSE)
+ testLifecycleOwner.handleLifecycleEvent(Lifecycle.Event.ON_STOP)
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ assertThat(plugin.isLocationLayerEnabled, `is`(true))
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false))
+ }
+
+ @Test
+ fun lifecycle_keepsDisabledWhenStoppedAndStarted() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.isLocationLayerEnabled = false
+
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ assertThat(plugin.isLocationLayerEnabled, `is`(false))
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ assertThat(plugin.isLocationLayerEnabled, `is`(false))
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false))
+ }
+
+ @Test
+ fun lifecycle_ableToChangeStyleAfterResuming() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+
+ mapboxMap.setStyle(Style.DARK)
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false))
+ }
+
+ @Test
+ fun lifecycle_interruptedDuringStyleChange() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+ mapboxMap.setStyle(Style.DARK)
+
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false))
+ }
+
+ @Test
+ fun lifecycle_forceLocationUpdateAfterStopped() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE).isEmpty(), `is`(true))
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false))
+ }
+
+ @Test
+ fun lifecycle_acceptAndReuseLocationUpdatesBeforeLayerStarted() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ plugin.forceLocationUpdate(location)
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ val point: Point = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].geometry() as Point
+ assertEquals(point.latitude(), location.latitude, 0.1)
+ assertEquals(point.longitude(), location.longitude, 0.1)
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false))
+ }
+
+ @Test
+ fun lifecycle_lifecycleChangeRightAfterStyleReload() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ plugin.forceLocationUpdate(location)
+ mapboxMap.setStyle(Style.LIGHT)
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ val point: Point = mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].geometry() as Point
+ assertEquals(point.latitude(), location.latitude, 0.1)
+ assertEquals(point.longitude(), location.longitude, 0.1)
+
+ assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BEARING_LAYER), `is`(false))
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false))
+ }
+
+ @Test
+ fun mapChange_settingPluginStyle() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ styleChangeIdlingResource.waitForStyle(fragment.view as MapView, mapboxMap, MAPBOX_HEAVY_STYLE)
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .accuracyColor(Color.RED)
+ .build()
+
+ pushSourceUpdates(styleChangeIdlingResource) {
+ plugin.applyStyle(options)
+ }
+
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+
+ // Waiting for style to finish loading while pushing updates
+ onView(withId(R.id.content)).check(matches(isDisplayed()))
+ }
+
+ @Test
+ fun mapChange_forcingLocation() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ styleChangeIdlingResource.waitForStyle(fragment.view as MapView, mapboxMap, MAPBOX_HEAVY_STYLE)
+
+ pushSourceUpdates(styleChangeIdlingResource) {
+ plugin.forceLocationUpdate(location)
+ }
+
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ }
+ }
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+
+ // Waiting for style to finish loading while pushing updates
+ onView(withId(R.id.content)).check(matches(isDisplayed()))
+ }
+
+ @Test
+ fun mapChange_settingMapStyleBeforePluginCreation() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ val options = LocationLayerOptions.builder(fragment.activity)
+ .accuracyColor(Color.RED)
+ .build()
+
+ pushSourceUpdates(styleChangeIdlingResource) {
+ plugin.forceLocationUpdate(location)
+ plugin.applyStyle(options)
+ }
+ }
+ }
+
+ executePluginTest(pluginAction, object : GenericPluginAction.PluginProvider {
+ override fun providePlugin(mapView: MapView, mapboxMap: MapboxMap, context: Context): LocationLayerPlugin {
+ // changing the style just before instantiating the plugin
+ styleChangeIdlingResource.waitForStyle(mapView, mapboxMap, MAPBOX_HEAVY_STYLE)
+ return PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false)
+ .providePlugin(mapView, mapboxMap, context)
+ }
+
+ override fun isPluginDataReady(plugin: LocationLayerPlugin, mapboxMap: MapboxMap): Boolean {
+ return true
+ }
+ })
+
+ // Waiting for style to finish loading while pushing updates
+ onView(withId(R.id.content)).check(matches(isDisplayed()))
+ }
+
+ @Test
+ fun animators_layerBearingCorrect() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.GPS
+ location.bearing = 77f
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(1000)
+ assertEquals(77.0, mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getNumberProperty(PROPERTY_GPS_BEARING) as Double, 0.1)
+
+ location.bearing = 92f
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(2000) // Waiting for the animation to finish
+ assertEquals(92.0, mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getNumberProperty(PROPERTY_GPS_BEARING) as Double, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_cameraLatLngBearingCorrect() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.TRACKING_GPS
+ location.bearing = 77f
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(1000)
+ assertEquals(77.0, mapboxMap.cameraPosition.bearing, 0.1)
+ assertEquals(location.latitude, mapboxMap.cameraPosition.target.latitude, 0.1)
+ assertEquals(location.longitude, mapboxMap.cameraPosition.target.longitude, 0.1)
+
+ location.bearing = 92f
+ location.latitude = 30.0
+ location.longitude = 35.0
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(2000) // Waiting for the animation to finish
+ assertEquals(92.0, mapboxMap.cameraPosition.bearing, 0.1)
+ assertEquals(location.latitude, mapboxMap.cameraPosition.target.latitude, 0.1)
+ assertEquals(location.longitude, mapboxMap.cameraPosition.target.longitude, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_cameraBearingCorrect() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.NONE_GPS
+ val latitude = mapboxMap.cameraPosition.target.latitude
+ val longitude = mapboxMap.cameraPosition.target.longitude
+
+ location.bearing = 77f
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(1000)
+ assertEquals(77.0, mapboxMap.cameraPosition.bearing, 0.1)
+ assertEquals(latitude, mapboxMap.cameraPosition.target.latitude, 0.1)
+ assertEquals(longitude, mapboxMap.cameraPosition.target.longitude, 0.1)
+
+ location.bearing = 92f
+ location.latitude = 30.0
+ location.longitude = 35.0
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(2000) // Waiting for the animation to finish
+ assertEquals(92.0, mapboxMap.cameraPosition.bearing, 0.1)
+ assertEquals(latitude, mapboxMap.cameraPosition.target.latitude, 0.1)
+ assertEquals(longitude, mapboxMap.cameraPosition.target.longitude, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_cameraNoneCorrect() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.NONE
+ val latitude = mapboxMap.cameraPosition.target.latitude
+ val longitude = mapboxMap.cameraPosition.target.longitude
+ val bearing = mapboxMap.cameraPosition.bearing
+
+ location.bearing = 77f
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(1000)
+ assertEquals(bearing, mapboxMap.cameraPosition.bearing, 0.1)
+ assertEquals(latitude, mapboxMap.cameraPosition.target.latitude, 0.1)
+ assertEquals(longitude, mapboxMap.cameraPosition.target.longitude, 0.1)
+
+ location.bearing = 92f
+ location.latitude = 30.0
+ location.longitude = 35.0
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(2000) // Waiting for the animation to finish
+ assertEquals(bearing, mapboxMap.cameraPosition.bearing, 0.1)
+ assertEquals(latitude, mapboxMap.cameraPosition.target.latitude, 0.1)
+ assertEquals(longitude, mapboxMap.cameraPosition.target.longitude, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_focalPointAdjustment() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.TRACKING
+ plugin.cameraMode = CameraMode.NONE
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ assertThat(mapboxMap.uiSettings.focalPoint, nullValue())
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_dontZoomWhileNotTracking() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.NONE
+ val zoom = mapboxMap.cameraPosition.zoom
+ plugin.zoomWhileTracking(10.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION)
+
+ assertEquals(zoom, mapboxMap.cameraPosition.zoom, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_zoomWhileTracking() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.TRACKING
+ plugin.zoomWhileTracking(10.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION)
+
+ assertEquals(10.0, mapboxMap.cameraPosition.zoom, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ @Ignore
+ fun animators_zoomWhileTrackingCanceledOnModeChange() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.TRACKING
+ plugin.zoomWhileTracking(15.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION / 2)
+ plugin.cameraMode = CameraMode.NONE
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION / 2)
+
+ assertEquals(15.0 / 2.0, mapboxMap.cameraPosition.zoom, 3.0)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_dontZoomWhileStopped() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ plugin.cameraMode = CameraMode.TRACKING
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ val zoom = mapboxMap.cameraPosition.zoom
+
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ plugin.zoomWhileTracking(10.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION)
+
+ assertEquals(zoom, mapboxMap.cameraPosition.zoom, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false))
+ }
+
+ @Test
+ @Ignore
+ fun animators_cancelZoomWhileTracking() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.TRACKING
+ plugin.zoomWhileTracking(15.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION / 2)
+ plugin.cancelZoomWhileTrackingAnimation()
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_ZOOM_ANIMATION_DURATION / 2)
+
+ assertEquals(15.0 / 2.0, mapboxMap.cameraPosition.zoom, 3.0)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_dontTiltWhileNotTracking() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.NONE
+ val tilt = mapboxMap.cameraPosition.tilt
+ plugin.tiltWhileTracking(30.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_TILT_ANIMATION_DURATION)
+
+ assertEquals(tilt, mapboxMap.cameraPosition.tilt, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_tiltWhileTracking() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.TRACKING
+ plugin.tiltWhileTracking(30.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_TILT_ANIMATION_DURATION)
+
+ assertEquals(30.0, mapboxMap.cameraPosition.tilt, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ @Ignore
+ fun animators_tiltWhileTrackingCanceledOnModeChange() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.TRACKING
+ plugin.tiltWhileTracking(30.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_TILT_ANIMATION_DURATION / 2)
+ plugin.cameraMode = CameraMode.NONE
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_TILT_ANIMATION_DURATION / 2)
+
+ assertEquals(30.0 / 2.0, mapboxMap.cameraPosition.tilt, 3.0)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun animators_dontTiltWhileStopped() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+
+ val testLifecycleOwner = TestLifecycleOwner()
+ testLifecycleOwner.markState(Lifecycle.State.RESUMED)
+ testLifecycleOwner.lifecycle.addObserver(plugin)
+
+ plugin.cameraMode = CameraMode.TRACKING
+ val tilt = mapboxMap.cameraPosition.tilt
+
+ testLifecycleOwner.markState(Lifecycle.State.CREATED)
+ plugin.tiltWhileTracking(30.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_TILT_ANIMATION_DURATION)
+
+ assertEquals(tilt, mapboxMap.cameraPosition.tilt, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction,
+ PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity, false, null, null, false))
+ }
+
+ @Test
+ @Ignore
+ fun animators_cancelTiltWhileTracking() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.TRACKING
+ plugin.tiltWhileTracking(30.0)
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_TILT_ANIMATION_DURATION / 2)
+ plugin.cancelTiltWhileTrackingAnimation()
+ uiController.loopMainThreadForAtLeast(DEFAULT_TRACKING_TILT_ANIMATION_DURATION / 2)
+
+ assertEquals(30.0 / 2.0, mapboxMap.cameraPosition.tilt, 3.0)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun cameraPositionAdjustedToTrackingModeWhenPluginEnabled() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.cameraMode = CameraMode.TRACKING_GPS
+ plugin.forceLocationUpdate(location)
+ plugin.isLocationLayerEnabled = false
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLng(LatLng(51.0, 17.0)))
+ mapboxMap.moveCamera(CameraUpdateFactory.bearingTo(90.0))
+ plugin.isLocationLayerEnabled = true
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ assertEquals(location.bearing.toDouble(), mapboxMap.cameraPosition.bearing, 0.1)
+ assertEquals(location.latitude, mapboxMap.cameraPosition.target.latitude, 0.1)
+ assertEquals(location.longitude, mapboxMap.cameraPosition.target.longitude, 0.1)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @Test
+ fun onPluginInitialized_defaultCompassEngineIsProvided() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ assertTrue(plugin.compassEngine is LocationLayerCompassEngine)
+ }
+ }
+
+ executePluginTest(pluginAction, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity))
+ }
+
+ @After
+ fun afterTest() {
+ Timber.e("@After: ${nameRule.methodName} - unregister idle resource")
+ IdlingRegistry.getInstance().unregister(idlingResource)
+ IdlingRegistry.getInstance().unregister(styleChangeIdlingResource)
+ }
+
+ private fun executePluginTest(listener: GenericPluginAction.OnPerformGenericPluginAction,
+ pluginProvider: GenericPluginAction.PluginProvider = PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity)) {
+ onView(withId(R.id.content)).perform(GenericPluginAction(fragment.view as MapView, mapboxMap, pluginProvider, listener))
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt
new file mode 100644
index 0000000000..121c8f2d22
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerTest.kt
@@ -0,0 +1,356 @@
+package com.mapbox.mapboxsdk.plugins.locationlayer
+
+import android.Manifest
+import android.R
+import android.content.Context
+import android.location.Location
+import android.support.test.espresso.Espresso.onView
+import android.support.test.espresso.IdlingRegistry
+import android.support.test.espresso.UiController
+import android.support.test.espresso.assertion.ViewAssertions.matches
+import android.support.test.espresso.matcher.ViewMatchers.isDisplayed
+import android.support.test.espresso.matcher.ViewMatchers.withId
+import android.support.test.filters.LargeTest
+import android.support.test.rule.ActivityTestRule
+import android.support.test.rule.GrantPermissionRule
+import android.support.test.rule.GrantPermissionRule.grant
+import android.support.test.runner.AndroidJUnit4
+import com.mapbox.mapboxsdk.camera.CameraUpdateFactory
+import com.mapbox.mapboxsdk.constants.Style
+import com.mapbox.mapboxsdk.geometry.LatLng
+import com.mapbox.mapboxsdk.maps.MapboxMap
+import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerConstants.*
+import com.mapbox.mapboxsdk.plugins.locationlayer.modes.RenderMode
+import com.mapbox.mapboxsdk.plugins.utils.*
+import com.mapbox.mapboxsdk.plugins.utils.MapboxTestingUtils.Companion.MAPBOX_HEAVY_STYLE
+import com.mapbox.mapboxsdk.plugins.utils.MapboxTestingUtils.Companion.pushSourceUpdates
+import com.mapbox.mapboxsdk.plugins.utils.PluginGenerationUtil.Companion.MAP_CONNECTION_DELAY
+import com.mapbox.mapboxsdk.plugins.utils.PluginGenerationUtil.Companion.MAP_RENDER_DELAY
+import com.mapbox.mapboxsdk.style.sources.GeoJsonSource
+import com.mapbox.mapboxsdk.testapp.activity.SingleActivity
+import org.hamcrest.CoreMatchers.`is`
+import org.hamcrest.CoreMatchers.notNullValue
+import org.hamcrest.Matchers.equalTo
+import org.junit.After
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertThat
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.rules.TestName
+import org.junit.runner.RunWith
+import timber.log.Timber
+
+@RunWith(AndroidJUnit4::class)
+@LargeTest
+class LocationLayerTest {
+
+ @Rule
+ @JvmField
+ val activityRule = ActivityTestRule(SingleActivity::class.java)
+
+ @Rule
+ @JvmField
+ val nameRule = TestName()
+
+ @Rule
+ @JvmField
+ val permissionRule: GrantPermissionRule = grant(Manifest.permission.ACCESS_FINE_LOCATION)
+
+ private lateinit var idlingResource: OnMapReadyIdlingResource
+ private lateinit var styleChangeIdlingResource: StyleChangeIdlingResource
+ private lateinit var mapboxMap: MapboxMap
+ private val location: Location by lazy {
+ val initLocation = Location("test")
+ initLocation.latitude = 15.0
+ initLocation.longitude = 17.0
+ initLocation.accuracy = 2000f
+ initLocation
+ }
+
+ @Before
+ fun beforeTest() {
+ Timber.e("@Before: ${nameRule.methodName} - register idle resource")
+ // If idlingResource is null, throw Kotlin exception
+ idlingResource = OnMapReadyIdlingResource(activityRule.activity)
+ styleChangeIdlingResource = StyleChangeIdlingResource()
+ IdlingRegistry.getInstance().register(idlingResource)
+ IdlingRegistry.getInstance().register(styleChangeIdlingResource)
+ onView(withId(android.R.id.content)).check(matches(isDisplayed()))
+ mapboxMap = idlingResource.mapboxMap
+ }
+
+ //
+ // Location Source
+ //
+
+ @Test
+ fun renderModeNormal_sourceDoesGetAdded() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.NORMAL
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ assertThat(mapboxMap.getSource(LOCATION_SOURCE), notNullValue())
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ //
+ // Location Layers
+ //
+
+ @Test
+ fun renderModeNormal_trackingNormalLayersDoGetAdded() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.NORMAL
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BEARING_LAYER), `is`(false))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun renderModeCompass_bearingLayersDoGetAdded() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.COMPASS
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BEARING_LAYER), `is`(true))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun renderModeGps_navigationLayersDoGetAdded() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.GPS
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(BEARING_LAYER), `is`(false))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun dontShowPuckWhenRenderModeSetAndPluginDisabled() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.forceLocationUpdate(location)
+ plugin.isLocationLayerEnabled = false
+ plugin.renderMode = RenderMode.GPS
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(BEARING_LAYER), `is`(false))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun whenLocationLayerPluginDisabled_doesSetAllLayersToVisibilityNone() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.NORMAL
+ plugin.forceLocationUpdate(location)
+ plugin.isLocationLayerEnabled = false
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ // Check that all layers visibilities are set to none
+ assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(false))
+ assertThat(mapboxMap.isLayerVisible(BEARING_LAYER), `is`(false))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun onMapChange_locationLayerLayersDoGetRedrawn() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.renderMode = RenderMode.NORMAL
+ plugin.forceLocationUpdate(location)
+ mapboxMap.setStyleUrl(Style.LIGHT)
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+
+ assertThat(plugin.renderMode, `is`(equalTo(RenderMode.NORMAL)))
+
+ // Check that the Source has been re-added to the new map style
+ val source: GeoJsonSource? = mapboxMap.getSourceAs(LOCATION_SOURCE)
+ assertThat(source, notNullValue())
+
+ // Check that all layers visibilities are set to visible
+ assertThat(mapboxMap.isLayerVisible(FOREGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BACKGROUND_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(SHADOW_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(ACCURACY_LAYER), `is`(true))
+ assertThat(mapboxMap.isLayerVisible(BEARING_LAYER), `is`(false))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+//
+// Stale state test
+//
+
+ @Test
+ fun whenStyleChanged_continuesUsingStaleIcons() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.applyStyle(LocationLayerOptions.builder(context).staleStateTimeout(100).build())
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(200)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+
+ assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getBooleanProperty(PROPERTY_LOCATION_STALE), `is`(true))
+
+ mapboxMap.setStyleUrl(Style.LIGHT)
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+
+ assertThat(mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0].getBooleanProperty(PROPERTY_LOCATION_STALE), `is`(true))
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun whenStyleChanged_staleStateChanges() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ plugin.applyStyle(LocationLayerOptions.builder(context).staleStateTimeout(1).build())
+ styleChangeIdlingResource.waitForStyle(idlingResource.mapView, mapboxMap, MAPBOX_HEAVY_STYLE)
+ pushSourceUpdates(styleChangeIdlingResource) {
+ plugin.forceLocationUpdate(location)
+ }
+ }
+ }
+ executePluginTest(pluginAction)
+
+ // Waiting for style to finish loading while pushing updates
+ onView(withId(R.id.content)).check(matches(isDisplayed()))
+ }
+
+ @Test
+ fun whenStyleChanged_layerVisibilityUpdates() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ styleChangeIdlingResource.waitForStyle(idlingResource.mapView, mapboxMap, MAPBOX_HEAVY_STYLE)
+ var show = true
+ pushSourceUpdates(styleChangeIdlingResource) {
+ plugin.isLocationLayerEnabled = show
+ show = !show
+ }
+
+ uiController.loopMainThreadForAtLeast(MAP_CONNECTION_DELAY)
+ }
+ }
+ executePluginTest(pluginAction)
+
+ // Waiting for style to finish loading while pushing updates
+ onView(withId(R.id.content)).check(matches(isDisplayed()))
+ }
+
+ @Test
+ fun accuracy_visibleWithNewLocation() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(location), 16.0))
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY + ACCURACY_RADIUS_ANIMATION_DURATION)
+
+ assertEquals(Utils.calculateZoomLevelRadius(mapboxMap, location) /*meters projected to radius on zoom 16*/,
+ mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0]
+ .getNumberProperty(PROPERTY_ACCURACY_RADIUS).toFloat(), 0.1f)
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun accuracy_visibleWhenCameraEased() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ mapboxMap.easeCamera(CameraUpdateFactory.newLatLngZoom(LatLng(location), 16.0), 300)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY + 300)
+
+ assertEquals(Utils.calculateZoomLevelRadius(mapboxMap, location) /*meters projected to radius on zoom 16*/,
+ mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0]
+ .getNumberProperty(PROPERTY_ACCURACY_RADIUS).toFloat(), 0.1f)
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @Test
+ fun accuracy_visibleWhenCameraMoved() {
+ val pluginAction = object : GenericPluginAction.OnPerformGenericPluginAction {
+ override fun onGenericPluginAction(plugin: LocationLayerPlugin, mapboxMap: MapboxMap,
+ uiController: UiController, context: Context) {
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ plugin.forceLocationUpdate(location)
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(location), 16.0))
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY + 300)
+
+ assertEquals(Utils.calculateZoomLevelRadius(mapboxMap, location) /*meters projected to radius on zoom 16*/,
+ mapboxMap.querySourceFeatures(LOCATION_SOURCE)[0]
+ .getNumberProperty(PROPERTY_ACCURACY_RADIUS).toFloat(), 0.1f)
+ }
+ }
+ executePluginTest(pluginAction)
+ }
+
+ @After
+ fun afterTest() {
+ Timber.e("@After: ${nameRule.methodName} - unregister idle resource")
+ IdlingRegistry.getInstance().unregister(idlingResource)
+ IdlingRegistry.getInstance().unregister(styleChangeIdlingResource)
+ }
+
+ private fun executePluginTest(listener: GenericPluginAction.OnPerformGenericPluginAction) {
+ onView(withId(android.R.id.content)).perform(GenericPluginAction(idlingResource.mapView, mapboxMap, PluginGenerationUtil.getLocationLayerPluginProvider(activityRule.activity), listener))
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/GenericPluginAction.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/GenericPluginAction.kt
new file mode 100644
index 0000000000..210f7b4758
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/GenericPluginAction.kt
@@ -0,0 +1,48 @@
+package com.mapbox.mapboxsdk.plugins.utils
+
+import android.content.Context
+import android.support.test.espresso.UiController
+import android.support.test.espresso.ViewAction
+import android.support.test.espresso.matcher.ViewMatchers.isDisplayed
+import android.view.View
+import com.mapbox.mapboxsdk.maps.MapView
+import com.mapbox.mapboxsdk.maps.MapboxMap
+import com.mapbox.mapboxsdk.plugins.utils.PluginGenerationUtil.Companion.MAP_RENDER_DELAY
+import org.hamcrest.Matcher
+
+class GenericPluginAction(private val mapView: MapView, private val mapboxMap: MapboxMap, private val pluginProvider: PluginProvider,
+ private val onPerformGenericPluginAction: OnPerformGenericPluginAction) : ViewAction {
+
+ override fun getConstraints(): Matcher {
+ return isDisplayed()
+ }
+
+ override fun getDescription(): String {
+ return javaClass.simpleName
+ }
+
+ override fun perform(uiController: UiController, view: View) {
+ val plugin = pluginProvider.providePlugin(mapView, mapboxMap, view.context)
+
+ // ensuring that the asynchronous renderer has time to render data we want to test
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ while (!pluginProvider.isPluginDataReady(plugin, mapboxMap)) {
+ uiController.loopMainThreadForAtLeast(MAP_RENDER_DELAY)
+ }
+
+ onPerformGenericPluginAction.onGenericPluginAction(
+ plugin,
+ mapboxMap,
+ uiController,
+ view.context)
+ }
+
+ interface OnPerformGenericPluginAction {
+ fun onGenericPluginAction(plugin: T, mapboxMap: MapboxMap, uiController: UiController, context: Context)
+ }
+
+ interface PluginProvider {
+ fun providePlugin(mapView: MapView, mapboxMap: MapboxMap, context: Context): T
+ fun isPluginDataReady(plugin: T, mapboxMap: MapboxMap): Boolean
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/MapboxTestingUtils.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/MapboxTestingUtils.kt
new file mode 100644
index 0000000000..b65cb3278b
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/MapboxTestingUtils.kt
@@ -0,0 +1,79 @@
+package com.mapbox.mapboxsdk.plugins.utils
+
+import android.graphics.Bitmap
+import android.graphics.Canvas
+import android.graphics.drawable.BitmapDrawable
+import android.graphics.drawable.Drawable
+import android.location.Location
+import android.os.Handler
+import android.os.Looper
+import com.mapbox.geojson.Feature
+import com.mapbox.mapboxsdk.geometry.LatLng
+import com.mapbox.mapboxsdk.maps.MapboxMap
+import com.mapbox.mapboxsdk.style.layers.Property
+import com.mapbox.mapboxsdk.style.sources.GeoJsonSource
+
+fun MapboxMap.querySourceFeatures(sourceId: String): List {
+ return this.getSourceAs(sourceId)?.querySourceFeatures(null) as List
+}
+
+fun MapboxMap.queryRenderedFeatures(location: Location, layerId: String): List {
+ val latLng = LatLng(location.latitude, location.longitude)
+ val point = this.projection.toScreenLocation(latLng)
+ return this.queryRenderedFeatures(point, layerId)
+}
+
+fun MapboxMap.isLayerVisible(layerId: String): Boolean {
+ return this.getLayer(layerId)?.visibility?.value?.equals(Property.VISIBLE)!!
+}
+
+class MapboxTestingUtils {
+ companion object {
+
+ /**
+ * Used to increase style load time for stress testing.
+ */
+ const val MAPBOX_HEAVY_STYLE = "asset://heavy_style.json"
+
+ private const val DATA_PUSH_INTERVAL = 1L
+
+ /**
+ * Pushes data updates every [DATA_PUSH_INTERVAL] milliseconds until the style has been loaded,
+ * checked with [StyleChangeIdlingResource].
+ */
+ fun pushSourceUpdates(styleChangeIdlingResource: StyleChangeIdlingResource, update: () -> Unit) {
+ val mainHandler = Handler(Looper.getMainLooper())
+ val runnable = object : Runnable {
+ override fun run() {
+ update.invoke()
+ if (!styleChangeIdlingResource.isIdleNow) {
+ mainHandler.postDelayed(this, DATA_PUSH_INTERVAL)
+ }
+ }
+ }
+
+ if (!styleChangeIdlingResource.isIdleNow) {
+ if (Looper.myLooper() == Looper.getMainLooper()) {
+ runnable.run()
+ } else {
+ mainHandler.post(runnable)
+ }
+ }
+ }
+ }
+}
+
+fun MapboxMap.addImageFromDrawable(string: String, drawable: Drawable) {
+ val bitmapFromDrawable = getBitmapFromDrawable(drawable)
+ this.addImage(string, bitmapFromDrawable)
+}
+
+private fun getBitmapFromDrawable(drawable: Drawable): Bitmap {
+ if (drawable is BitmapDrawable) return drawable.bitmap
+ val bitmap = Bitmap.createBitmap(drawable.intrinsicWidth,
+ drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
+ val canvas = Canvas(bitmap)
+ drawable.setBounds(0, 0, canvas.width, canvas.height)
+ drawable.draw(canvas)
+ return bitmap
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/OnMapFragmentReadyIdlingResource.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/OnMapFragmentReadyIdlingResource.kt
new file mode 100644
index 0000000000..fa6b732770
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/OnMapFragmentReadyIdlingResource.kt
@@ -0,0 +1,39 @@
+package com.mapbox.mapboxsdk.plugins.utils
+
+import android.os.Handler
+import android.os.Looper
+import android.support.test.espresso.IdlingResource
+
+import com.mapbox.mapboxsdk.maps.MapboxMap
+import com.mapbox.mapboxsdk.maps.OnMapReadyCallback
+import com.mapbox.mapboxsdk.maps.SupportMapFragment
+
+class OnMapFragmentReadyIdlingResource(fragment: SupportMapFragment?) : IdlingResource, OnMapReadyCallback {
+
+ lateinit var mapboxMap: MapboxMap
+
+ private var resourceCallback: IdlingResource.ResourceCallback? = null
+
+ init {
+ Handler(Looper.getMainLooper()).post {
+ fragment?.getMapAsync(this)
+ }
+ }
+
+ override fun getName(): String {
+ return javaClass.simpleName
+ }
+
+ override fun isIdleNow(): Boolean {
+ return this::mapboxMap.isInitialized
+ }
+
+ override fun registerIdleTransitionCallback(resourceCallback: IdlingResource.ResourceCallback) {
+ this.resourceCallback = resourceCallback
+ }
+
+ override fun onMapReady(mapboxMap: MapboxMap) {
+ this.mapboxMap = mapboxMap
+ resourceCallback?.onTransitionToIdle()
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/OnMapReadyIdlingResource.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/OnMapReadyIdlingResource.java
new file mode 100644
index 0000000000..f084343594
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/OnMapReadyIdlingResource.java
@@ -0,0 +1,63 @@
+package com.mapbox.mapboxsdk.plugins.utils;
+
+import android.app.Activity;
+import android.os.Handler;
+import android.os.Looper;
+import android.support.test.espresso.IdlingResource;
+
+import com.mapbox.mapboxsdk.maps.MapView;
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
+
+import java.lang.reflect.Field;
+
+public class OnMapReadyIdlingResource implements IdlingResource, OnMapReadyCallback {
+
+ private MapboxMap mapboxMap;
+ private MapView mapView;
+ private IdlingResource.ResourceCallback resourceCallback;
+
+ public OnMapReadyIdlingResource(Activity activity) {
+ new Handler(Looper.getMainLooper()).post(() -> {
+ try {
+ Field field = activity.getClass().getDeclaredField("mapView");
+ field.setAccessible(true);
+ mapView = ((MapView) field.get(activity));
+ mapView.getMapAsync(this);
+ } catch (Exception err) {
+ throw new RuntimeException(err);
+ }
+ });
+ }
+
+ @Override
+ public String getName() {
+ return getClass().getSimpleName();
+ }
+
+ @Override
+ public boolean isIdleNow() {
+ return mapboxMap != null;
+ }
+
+ @Override
+ public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
+ this.resourceCallback = resourceCallback;
+ }
+
+ public MapView getMapView() {
+ return mapView;
+ }
+
+ public MapboxMap getMapboxMap() {
+ return mapboxMap;
+ }
+
+ @Override
+ public void onMapReady(MapboxMap mapboxMap) {
+ this.mapboxMap = mapboxMap;
+ if (resourceCallback != null) {
+ resourceCallback.onTransitionToIdle();
+ }
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/PluginGenerationUtil.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/PluginGenerationUtil.kt
new file mode 100644
index 0000000000..9049a28298
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/PluginGenerationUtil.kt
@@ -0,0 +1,51 @@
+package com.mapbox.mapboxsdk.plugins.utils
+
+import android.content.Context
+import android.support.v7.app.AppCompatActivity
+import com.mapbox.android.core.location.LocationEngine
+import com.mapbox.mapboxsdk.maps.MapView
+import com.mapbox.mapboxsdk.maps.MapboxMap
+import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerOptions
+import com.mapbox.mapboxsdk.plugins.locationlayer.LocationLayerPlugin
+
+class PluginGenerationUtil {
+ companion object {
+ fun getLocationLayerPluginProvider(activity: AppCompatActivity,
+ useDefaultEngine: Boolean = false,
+ engine: LocationEngine? = null,
+ options: LocationLayerOptions? = null,
+ registerLifecycleObserver: Boolean = true)
+ : GenericPluginAction.PluginProvider {
+ return object : GenericPluginAction.PluginProvider {
+ override fun providePlugin(mapView: MapView, mapboxMap: MapboxMap, context: Context): LocationLayerPlugin {
+ val plugin = if (useDefaultEngine) {
+ if (options != null) {
+ LocationLayerPlugin(mapView, mapboxMap, options)
+ } else {
+ LocationLayerPlugin(mapView, mapboxMap)
+ }
+ } else {
+ if (options != null) {
+ LocationLayerPlugin(mapView, mapboxMap, engine, options)
+ } else {
+ LocationLayerPlugin(mapView, mapboxMap, engine)
+ }
+ }
+
+ if (registerLifecycleObserver) {
+ activity.lifecycle.addObserver(plugin)
+ }
+
+ return plugin
+ }
+
+ override fun isPluginDataReady(plugin: LocationLayerPlugin, mapboxMap: MapboxMap): Boolean {
+ return mapboxMap.getSource("mapbox-location-source") != null
+ }
+ }
+ }
+
+ const val MAP_RENDER_DELAY = 250L
+ const val MAP_CONNECTION_DELAY = 1000L
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/StyleChangeIdlingResource.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/StyleChangeIdlingResource.kt
new file mode 100644
index 0000000000..ab2c855c65
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/StyleChangeIdlingResource.kt
@@ -0,0 +1,46 @@
+package com.mapbox.mapboxsdk.plugins.utils
+
+import android.support.test.espresso.IdlingResource
+import com.mapbox.mapboxsdk.maps.MapView
+import com.mapbox.mapboxsdk.maps.MapboxMap
+
+/**
+ * Resource, that's idling until the provided style is loaded.
+ * Remember to add any espresso action (like view assertion) after the [waitForStyle] call
+ * for the test to keep running.
+ */
+class StyleChangeIdlingResource : IdlingResource {
+
+ private var callback: IdlingResource.ResourceCallback? = null
+ private var isIdle = true
+
+ override fun getName(): String {
+ return javaClass.simpleName
+ }
+
+ override fun isIdleNow(): Boolean {
+ return isIdle
+ }
+
+ override fun registerIdleTransitionCallback(callback: IdlingResource.ResourceCallback?) {
+ this.callback = callback
+ }
+
+ private fun setIdle() {
+ isIdle = true
+ callback?.onTransitionToIdle()
+ }
+
+ fun waitForStyle(mapView: MapView, mapboxMap: MapboxMap, styleUrl: String) {
+ isIdle = false
+ mapView.addOnMapChangedListener(object : MapView.OnMapChangedListener {
+ override fun onMapChanged(change: Int) {
+ if (change == MapView.DID_FINISH_LOADING_STYLE) {
+ mapView.removeOnMapChangedListener(this)
+ setIdle()
+ }
+ }
+ })
+ mapboxMap.setStyleUrl(styleUrl)
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/TestLifecycleOwner.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/TestLifecycleOwner.kt
new file mode 100644
index 0000000000..ccb8da17a7
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/plugins/utils/TestLifecycleOwner.kt
@@ -0,0 +1,19 @@
+package com.mapbox.mapboxsdk.plugins.utils
+
+import android.arch.lifecycle.Lifecycle
+import android.arch.lifecycle.LifecycleOwner
+import android.arch.lifecycle.LifecycleRegistry
+
+class TestLifecycleOwner : LifecycleOwner {
+ private val lifecycleRegistry = LifecycleRegistry(this)
+
+ override fun getLifecycle() = lifecycleRegistry
+
+ fun markState(state: Lifecycle.State) {
+ lifecycleRegistry.markState(state)
+ }
+
+ fun handleLifecycleEvent(event: Lifecycle.Event) {
+ lifecycleRegistry.handleLifecycleEvent(event)
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/debug/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000000..489ec3f407
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/AndroidManifest.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/debug/assets/heavy_style.json b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/assets/heavy_style.json
new file mode 100644
index 0000000000..238ed7d9f2
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/assets/heavy_style.json
@@ -0,0 +1,81857 @@
+{
+ "version": 8,
+ "name": "Streets-copy",
+ "metadata": {
+ "mapbox:autocomposite": true,
+ "mapbox:type": "default",
+ "mapbox:origin": "streets-v10",
+ "mapbox:groups": {
+ "1444934828655.3389": {
+ "name": "Aeroways",
+ "collapsed": true
+ },
+ "1444933322393.2852": {
+ "name": "POI labels (scalerank 1)",
+ "collapsed": true
+ },
+ "1444855786460.0557": {
+ "name": "Roads",
+ "collapsed": true
+ },
+ "1444933575858.6992": {
+ "name": "Highway shields",
+ "collapsed": true
+ },
+ "1444934295202.7542": {
+ "name": "Admin boundaries",
+ "collapsed": true
+ },
+ "1444856151690.9143": {
+ "name": "State labels",
+ "collapsed": true
+ },
+ "1444933721429.3076": {
+ "name": "Road labels",
+ "collapsed": true
+ },
+ "1444933358918.2366": {
+ "name": "POI labels (scalerank 2)",
+ "collapsed": true
+ },
+ "1444933808272.805": {
+ "name": "Water labels",
+ "collapsed": true
+ },
+ "1444933372896.5967": {
+ "name": "POI labels (scalerank 3)",
+ "collapsed": true
+ },
+ "1444855799204.86": {
+ "name": "Bridges",
+ "collapsed": true
+ },
+ "1444856087950.3635": {
+ "name": "Marine labels",
+ "collapsed": true
+ },
+ "1456969573402.7817": {
+ "name": "Hillshading",
+ "collapsed": true
+ },
+ "1444862510685.128": {
+ "name": "City labels",
+ "collapsed": true
+ },
+ "1444855769305.6016": {
+ "name": "Tunnels",
+ "collapsed": true
+ },
+ "1456970288113.8113": {
+ "name": "Landcover",
+ "collapsed": true
+ },
+ "1444856144497.7825": {
+ "name": "Country labels",
+ "collapsed": true
+ },
+ "1444933456003.5437": {
+ "name": "POI labels (scalerank 4)",
+ "collapsed": true
+ }
+ },
+ "mapbox:sdk-support": {
+ "js": "0.45.0",
+ "android": "6.0.0",
+ "ios": "4.0.0"
+ }
+ },
+ "center": [
+ -122.4241,
+ 37.78
+ ],
+ "zoom": 9,
+ "bearing": 0,
+ "pitch": 0,
+ "sources": {
+ "composite": {
+ "url": "mapbox://mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7",
+ "type": "vector"
+ }
+ },
+ "sprite": "mapbox://sprites/lukaspaczos/cjj5gy5q00ips2rnqgjcneimy",
+ "glyphs": "mapbox://fonts/lukaspaczos/{fontstack}/{range}.pbf",
+ "layers": [
+ {
+ "id": "background",
+ "type": "background",
+ "layout": {},
+ "paint": {
+ "background-color": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 13,
+ "hsl(35, 12%, 89%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "landcover_snow",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "filter": [
+ "==",
+ "class",
+ "snow"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-opacity": 0.2,
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_wood",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "maxzoom": 14,
+ "filter": [
+ "==",
+ "class",
+ "wood"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 62%, 81%)",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 7,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_scrub",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "maxzoom": 14,
+ "filter": [
+ "==",
+ "class",
+ "scrub"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 62%, 81%)",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 7,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_grass",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "maxzoom": 14,
+ "filter": [
+ "==",
+ "class",
+ "grass"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 62%, 81%)",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 7,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_crop",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "maxzoom": 14,
+ "filter": [
+ "==",
+ "class",
+ "crop"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 62%, 81%)",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 7,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "national_park",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse_overlay",
+ "filter": [
+ "==",
+ "class",
+ "national_park"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(100, 58%, 76%)",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 6,
+ 0.5
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "hospital",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "hospital"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ "hsl(340, 37%, 87%)"
+ ],
+ [
+ 16,
+ "hsl(340, 63%, 89%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "school",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "school"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ "hsl(50, 47%, 81%)"
+ ],
+ [
+ 16,
+ "hsl(50, 63%, 84%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "park",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "park"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(100, 58%, 76%)",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 6,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "pitch",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "pitch"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(100, 57%, 72%)"
+ }
+ },
+ {
+ "id": "pitch-line",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 15,
+ "filter": [
+ "==",
+ "class",
+ "pitch"
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-color": "hsl(75, 57%, 84%)"
+ }
+ },
+ {
+ "id": "cemetery",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "cemetery"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 37%, 81%)"
+ }
+ },
+ {
+ "id": "industrial",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "industrial"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ "hsl(230, 15%, 86%)"
+ ],
+ [
+ 16,
+ "hsl(230, 29%, 89%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "sand",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "sand"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(60, 46%, 87%)"
+ }
+ },
+ {
+ "id": "hillshade_highlight_bright",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 94
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.12
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_highlight_med",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 90
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.12
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_faint",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 89
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(56, 59%, 22%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.05
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_med",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 78
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(56, 59%, 22%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.05
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_dark",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 67
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(56, 59%, 22%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.06
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_extreme",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 56
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(56, 59%, 22%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.06
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "waterway-river-canal",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "waterway",
+ "minzoom": 8,
+ "filter": [
+ "in",
+ "class",
+ "canal",
+ "river"
+ ],
+ "layout": {
+ "line-cap": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "butt"
+ ],
+ [
+ 11,
+ "round"
+ ]
+ ]
+ },
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": "hsl(205, 87%, 76%)",
+ "line-width": {
+ "base": 1.3,
+ "stops": [
+ [
+ 8.5,
+ 0.1
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ 0
+ ],
+ [
+ 8.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "waterway-small",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "waterway",
+ "minzoom": 13,
+ "filter": [
+ "!in",
+ "class",
+ "canal",
+ "river"
+ ],
+ "layout": {
+ "line-join": "round",
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-color": "hsl(205, 87%, 76%)",
+ "line-width": {
+ "base": 1.35,
+ "stops": [
+ [
+ 13.5,
+ 0.1
+ ],
+ [
+ 20,
+ 3
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 13.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "water-shadow",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "water",
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(215, 84%, 69%)",
+ "fill-translate": {
+ "base": 1.2,
+ "stops": [
+ [
+ 7,
+ [
+ 0,
+ 0
+ ]
+ ],
+ [
+ 16,
+ [
+ -1,
+ -1
+ ]
+ ]
+ ]
+ },
+ "fill-translate-anchor": "viewport",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "water",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "water",
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(196, 80%, 70%)"
+ }
+ },
+ {
+ "id": "barrier_line-land-polygon",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "barrier_line",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "==",
+ "class",
+ "land"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(35, 12%, 89%)"
+ }
+ },
+ {
+ "id": "barrier_line-land-line",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "barrier_line",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "class",
+ "land"
+ ]
+ ],
+ "layout": {
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.99,
+ "stops": [
+ [
+ 14,
+ 0.75
+ ],
+ [
+ 20,
+ 40
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 12%, 89%)"
+ }
+ },
+ {
+ "id": "aeroway-polygon",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444934828655.3389"
+ },
+ "source": "composite",
+ "source-layer": "aeroway",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "!=",
+ "type",
+ "apron"
+ ],
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(230, 23%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 37%, 84%)"
+ ]
+ ]
+ },
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "aeroway-runway",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934828655.3389"
+ },
+ "source": "composite",
+ "source-layer": "aeroway",
+ "minzoom": 9,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "type",
+ "runway"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(230, 23%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 37%, 84%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 9,
+ 1
+ ],
+ [
+ 18,
+ 80
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "aeroway-taxiway",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934828655.3389"
+ },
+ "source": "composite",
+ "source-layer": "aeroway",
+ "minzoom": 9,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "type",
+ "taxiway"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(230, 23%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 37%, 84%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 0.5
+ ],
+ [
+ 18,
+ 20
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "building-line",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "building",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "!=",
+ "type",
+ "building:part"
+ ],
+ [
+ "==",
+ "underground",
+ "false"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "line-color": "hsl(35, 6%, 79%)",
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 0.75
+ ],
+ [
+ 20,
+ 3
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ 0
+ ],
+ [
+ 16,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "building",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "building",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "!=",
+ "type",
+ "building:part"
+ ],
+ [
+ "==",
+ "underground",
+ "false"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(35, 11%, 88%)"
+ ],
+ [
+ 16,
+ "hsl(35, 8%, 85%)"
+ ]
+ ]
+ },
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ 0
+ ],
+ [
+ 16,
+ 1
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(35, 6%, 79%)"
+ }
+ },
+ {
+ "id": "tunnel-street-low",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street_limited-low",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-service-link-track-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-street_limited-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-secondary-tertiary-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)"
+ }
+ },
+ {
+ "id": "tunnel-primary-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)"
+ }
+ },
+ {
+ "id": "tunnel-trunk_link-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-motorway_link-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-trunk-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-motorway-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-construction",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-path",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 26%, 95%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-steps",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 26%, 95%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-trunk_link",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 77%, 78%)",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "tunnel-motorway_link",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 78%)",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "tunnel-pedestrian",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-service-link-track",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "tunnel-street_limited",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-secondary-tertiary",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-blur": 0
+ }
+ },
+ {
+ "id": "tunnel-primary",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-blur": 0
+ }
+ },
+ {
+ "id": "tunnel-oneway-arrows-blue-minor",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "tunnel-oneway-arrows-blue-major",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "tunnel-trunk",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 77%, 78%)"
+ }
+ },
+ {
+ "id": "tunnel-motorway",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": 1,
+ "line-color": "hsl(26, 100%, 78%)",
+ "line-blur": 0
+ }
+ },
+ {
+ "id": "tunnel-oneway-arrows-white",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "ferry",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "type",
+ "ferry"
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(205, 73%, 63%)"
+ ],
+ [
+ 17,
+ "hsl(230, 73%, 63%)"
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 12,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 13,
+ [
+ 12,
+ 4
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "ferry_auto",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "type",
+ "ferry_auto"
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(205, 73%, 63%)"
+ ],
+ [
+ 17,
+ "hsl(230, 73%, 63%)"
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path-bg",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 1",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 1",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 1",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 2",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 2",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 2",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 3",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 3",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 3",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 4",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 4",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 4",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 1",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 2",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 3",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 4",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "aerialway",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "class",
+ "aerialway"
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": "hsl(230, 10%, 74%)",
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-3-4-boundaries-bg",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "filter": [
+ "all",
+ [
+ "==",
+ "maritime",
+ 0
+ ],
+ [
+ ">=",
+ "admin_level",
+ 3
+ ]
+ ],
+ "layout": {
+ "line-join": "bevel"
+ },
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(35, 12%, 89%)"
+ ],
+ [
+ 16,
+ "hsl(230, 49%, 90%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ 3.75
+ ],
+ [
+ 12,
+ 5.5
+ ]
+ ]
+ },
+ "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": "admin-2-boundaries-bg",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 1,
+ "filter": [
+ "all",
+ [
+ "==",
+ "admin_level",
+ 2
+ ],
+ [
+ "==",
+ "maritime",
+ 0
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 3.5
+ ],
+ [
+ 10,
+ 8
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(35, 12%, 89%)"
+ ],
+ [
+ 8,
+ "hsl(230, 49%, 90%)"
+ ]
+ ]
+ },
+ "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",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "filter": [
+ "all",
+ [
+ "==",
+ "maritime",
+ 0
+ ],
+ [
+ ">=",
+ "admin_level",
+ 3
+ ]
+ ],
+ "layout": {
+ "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,
+ "hsl(230, 14%, 77%)"
+ ],
+ [
+ 7,
+ "hsl(230, 8%, 62%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-2-boundaries",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 1,
+ "filter": [
+ "all",
+ [
+ "==",
+ "admin_level",
+ 2
+ ],
+ [
+ "==",
+ "disputed",
+ 0
+ ],
+ [
+ "==",
+ "maritime",
+ 0
+ ]
+ ],
+ "layout": {
+ "line-join": "round",
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-color": "hsl(230, 8%, 51%)",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 0.5
+ ],
+ [
+ 10,
+ 2
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-2-boundaries-dispute",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 1,
+ "filter": [
+ "all",
+ [
+ "==",
+ "admin_level",
+ 2
+ ],
+ [
+ "==",
+ "disputed",
+ 1
+ ],
+ [
+ "==",
+ "maritime",
+ 0
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-dasharray": [
+ 1.5,
+ 1.5
+ ],
+ "line-color": "hsl(230, 8%, 51%)",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 0.5
+ ],
+ [
+ 10,
+ 2
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "housenum-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "housenum_label",
+ "minzoom": 17,
+ "layout": {
+ "text-field": "{house_num}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 4,
+ "text-max-width": 7,
+ "text-size": 9.5
+ },
+ "paint": {
+ "text-color": "hsl(35, 2%, 69%)",
+ "text-halo-color": "hsl(35, 8%, 85%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0
+ }
+ },
+ {
+ "id": "housenum-label copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "housenum_label",
+ "minzoom": 17,
+ "layout": {
+ "text-field": "{house_num}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 4,
+ "text-max-width": 7,
+ "text-size": 9.5
+ },
+ "paint": {
+ "text-color": "hsl(35, 2%, 69%)",
+ "text-halo-color": "hsl(35, 8%, 85%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0
+ }
+ },
+ {
+ "id": "housenum-label copy 1",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "housenum_label",
+ "minzoom": 17,
+ "layout": {
+ "text-field": "{house_num}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 4,
+ "text-max-width": 7,
+ "text-size": 9.5
+ },
+ "paint": {
+ "text-color": "hsl(35, 2%, 69%)",
+ "text-halo-color": "hsl(35, 8%, 85%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0
+ }
+ },
+ {
+ "id": "waterway-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "waterway_label",
+ "minzoom": 12,
+ "filter": [
+ "in",
+ "class",
+ "canal",
+ "river"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-pitch-alignment": "viewport",
+ "text-max-angle": 30,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 12
+ ],
+ [
+ 18,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-width": 0.5,
+ "text-halo-color": "hsl(196, 80%, 70%)",
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-scalerank4-l15",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933456003.5437"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 17,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "==",
+ "scalerank",
+ 4
+ ],
+ [
+ ">=",
+ "localrank",
+ 15
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-scalerank4-l1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933456003.5437"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "<=",
+ "localrank",
+ 14
+ ],
+ [
+ "==",
+ "scalerank",
+ 4
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 1,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-parks_scalerank4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933456003.5437"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "scalerank",
+ 4
+ ],
+ [
+ "in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 1,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(100, 100%, 20%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-scalerank3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933372896.5967"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "==",
+ "scalerank",
+ 3
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 1,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-parks-scalerank3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933372896.5967"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "==",
+ "scalerank",
+ 3
+ ],
+ [
+ "in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(100, 100%, 20%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "road-label-small",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933721429.3076"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "class",
+ "golf",
+ "link",
+ "motorway",
+ "pedestrian",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary",
+ "trunk"
+ ],
+ [
+ "==",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 10
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "text-max-angle": 30,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-padding": 1,
+ "text-rotation-alignment": "map",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "road-label-medium",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933721429.3076"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "pedestrian",
+ "street",
+ "street_limited"
+ ]
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 10
+ ],
+ [
+ 20,
+ 14
+ ]
+ ]
+ },
+ "text-max-angle": 30,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-padding": 1,
+ "text-rotation-alignment": "map",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "road-label-large",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933721429.3076"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "in",
+ "class",
+ "motorway",
+ "primary",
+ "secondary",
+ "tertiary",
+ "trunk"
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 9,
+ 10
+ ],
+ [
+ 20,
+ 16
+ ]
+ ]
+ },
+ "text-max-angle": 30,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-padding": 1,
+ "text-rotation-alignment": "map",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsla(0, 0%, 100%, 0.75)",
+ "text-halo-width": 1,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "road-shields-black",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ],
+ [
+ "<=",
+ "reflen",
+ 6
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 7%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "road-shields-white",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 6
+ ],
+ [
+ "in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "motorway-junction",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "motorway_junction",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 9
+ ],
+ [
+ ">",
+ "reflen",
+ 0
+ ]
+ ],
+ "layout": {
+ "text-field": "{ref}",
+ "text-size": 9,
+ "icon-image": "motorway-exit-{reflen}",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ]
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "text-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "road-shields-black copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ],
+ [
+ "<=",
+ "reflen",
+ 6
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 7%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "road-shields-white copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 6
+ ],
+ [
+ "in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "motorway-junction copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "motorway_junction",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 9
+ ],
+ [
+ ">",
+ "reflen",
+ 0
+ ]
+ ],
+ "layout": {
+ "text-field": "{ref}",
+ "text-size": 9,
+ "icon-image": "motorway-exit-{reflen}",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ]
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "text-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "road-shields-black copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ],
+ [
+ "<=",
+ "reflen",
+ 6
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 7%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "road-shields-white copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 6
+ ],
+ [
+ "in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "motorway-junction copy 1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "motorway_junction",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 9
+ ],
+ [
+ ">",
+ "reflen",
+ 0
+ ]
+ ],
+ "layout": {
+ "text-field": "{ref}",
+ "text-size": 9,
+ "icon-image": "motorway-exit-{reflen}",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ]
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "text-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "poi-scalerank2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933358918.2366"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "==",
+ "scalerank",
+ 2
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 11
+ ],
+ [
+ 20,
+ 14
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 14,
+ "{maki}-11"
+ ],
+ [
+ 15,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-parks-scalerank2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933358918.2366"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "==",
+ "scalerank",
+ 2
+ ],
+ [
+ "in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 11
+ ],
+ [
+ 20,
+ 14
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 14,
+ "{maki}-11"
+ ],
+ [
+ 15,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(100, 100%, 20%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "rail-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "rail_station_label",
+ "minzoom": 12,
+ "filter": [
+ "!=",
+ "maki",
+ "entrance"
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{network}",
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-offset": [
+ 0,
+ 0.85
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ ""
+ ],
+ [
+ 13,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.01,
+ "icon-padding": 0,
+ "text-max-width": 7
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "icon-halo-width": 4,
+ "icon-halo-color": "#fff",
+ "text-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "water-label-sm",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933808272.805"
+ },
+ "source": "composite",
+ "source-layer": "water_label",
+ "minzoom": 15,
+ "filter": [
+ "<=",
+ "area",
+ 10000
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 13
+ ],
+ [
+ 20,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)"
+ }
+ },
+ {
+ "id": "water-label",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933808272.805"
+ },
+ "source": "composite",
+ "source-layer": "water_label",
+ "minzoom": 5,
+ "filter": [
+ ">",
+ "area",
+ 10000
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 13
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)"
+ }
+ },
+ {
+ "id": "place-residential",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 18,
+ "filter": [
+ "all",
+ [
+ "all",
+ [
+ "<=",
+ "localrank",
+ 10
+ ],
+ [
+ "==",
+ "type",
+ "residential"
+ ]
+ ],
+ [
+ "in",
+ "$type",
+ "LineString",
+ "Point",
+ "Polygon"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 14
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-max-width": 7
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-parks-scalerank1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933322393.2852"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "<=",
+ "scalerank",
+ 1
+ ],
+ [
+ "in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 14
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 13,
+ "{maki}-11"
+ ],
+ [
+ 14,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(100, 100%, 20%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-scalerank1",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933322393.2852"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "<=",
+ "scalerank",
+ 1
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 14
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 13,
+ "{maki}-11"
+ ],
+ [
+ 14,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "airport-label",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "airport_label",
+ "minzoom": 9,
+ "filter": [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 12
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 12,
+ "{maki}-11"
+ ],
+ [
+ 13,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.75
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "stops": [
+ [
+ 11,
+ "{ref}"
+ ],
+ [
+ 12,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.01,
+ "text-max-width": 9
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "airport-label copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "airport_label",
+ "minzoom": 9,
+ "filter": [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 12
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 12,
+ "{maki}-11"
+ ],
+ [
+ 13,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.75
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "stops": [
+ [
+ 11,
+ "{ref}"
+ ],
+ [
+ 12,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.01,
+ "text-max-width": 9
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "airport-label copy 1",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "airport_label",
+ "minzoom": 9,
+ "filter": [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 12
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 12,
+ "{maki}-11"
+ ],
+ [
+ 13,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.75
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "stops": [
+ [
+ 11,
+ "{ref}"
+ ],
+ [
+ 12,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.01,
+ "text-max-width": 9
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "place-islet-archipelago-aboriginal",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 16,
+ "filter": [
+ "in",
+ "type",
+ "aboriginal_lands",
+ "archipelago",
+ "islet"
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 16
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "place-neighbourhood",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "neighbourhood"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-transform": "uppercase",
+ "text-letter-spacing": 0.1,
+ "text-max-width": 7,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 3,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 12,
+ 11
+ ],
+ [
+ 16,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "place-suburb",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "suburb"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-letter-spacing": 0.15,
+ "text-max-width": 7,
+ "text-padding": 3,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 11
+ ],
+ [
+ 15,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "place-suburb copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "suburb"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-letter-spacing": 0.15,
+ "text-max-width": 7,
+ "text-padding": 3,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 11
+ ],
+ [
+ 15,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "place-hamlet",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "hamlet"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 12,
+ 11.5
+ ],
+ [
+ 15,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "text-color": "hsl(0, 0%, 0%)"
+ }
+ },
+ {
+ "id": "place-village",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 8,
+ "maxzoom": 15,
+ "filter": [
+ "==",
+ "type",
+ "village"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11.5
+ ],
+ [
+ 16,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "text-color": "hsl(0, 0%, 0%)"
+ }
+ },
+ {
+ "id": "place-town",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 6,
+ "maxzoom": 15,
+ "filter": [
+ "==",
+ "type",
+ "town"
+ ],
+ "layout": {
+ "icon-image": "dot-9",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 12,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ 0,
+ -0.15
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ 11.5
+ ],
+ [
+ 15,
+ 20
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "place-island",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "island"
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 16
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 7
+ },
+ "paint": {
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "place-city-sm",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "scalerank",
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "type",
+ "city"
+ ]
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 12
+ ],
+ [
+ 14,
+ 22
+ ]
+ ]
+ },
+ "icon-image": "dot-9",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "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
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "place-city-md-s",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "E",
+ "S",
+ "SE",
+ "SW"
+ ],
+ [
+ "in",
+ "scalerank",
+ 3,
+ 4,
+ 5
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "icon-image": "dot-10",
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "top"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ 0.1
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 5,
+ 12
+ ],
+ [
+ 12,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-width": 1,
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-blur": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "place-city-md-n",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "N",
+ "NE",
+ "NW",
+ "W"
+ ],
+ [
+ "in",
+ "scalerank",
+ 3,
+ 4,
+ 5
+ ]
+ ],
+ "layout": {
+ "icon-image": "dot-10",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ -0.25
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 5,
+ 12
+ ],
+ [
+ 12,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "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",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 1,
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ [
+ "==",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "E",
+ "S",
+ "SE",
+ "SW"
+ ]
+ ],
+ "layout": {
+ "icon-image": "dot-11",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ 0.15
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "top"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 4,
+ 12
+ ],
+ [
+ 10,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ },
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "place-city-lg-n",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 1,
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ [
+ "==",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "N",
+ "NE",
+ "NW",
+ "W"
+ ]
+ ],
+ "layout": {
+ "icon-image": "dot-11",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ -0.25
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 4,
+ 12
+ ],
+ [
+ 10,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-opacity": 1,
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ },
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "marine-label-sm-ln",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 3,
+ "maxzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ ">=",
+ "labelrank",
+ 4
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 12
+ ],
+ [
+ 6,
+ 16
+ ]
+ ]
+ },
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 4,
+ 100
+ ],
+ [
+ 6,
+ 400
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.1,
+ "text-max-width": 5
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-sm-pt",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 3,
+ "maxzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ ">=",
+ "labelrank",
+ 4
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": 5,
+ "text-letter-spacing": 0.1,
+ "text-line-height": 1.5,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 12
+ ],
+ [
+ 6,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-md-ln",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 2,
+ "maxzoom": 8,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "labelrank",
+ 2,
+ 3
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1.1,
+ "stops": [
+ [
+ 2,
+ 12
+ ],
+ [
+ 5,
+ 20
+ ]
+ ]
+ },
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.15,
+ "text-max-width": 5
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-md-pt",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 2,
+ "maxzoom": 8,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "labelrank",
+ 2,
+ 3
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": 5,
+ "text-letter-spacing": 0.15,
+ "text-line-height": 1.5,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1.1,
+ "stops": [
+ [
+ 2,
+ 14
+ ],
+ [
+ 5,
+ 20
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-lg-ln",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 1,
+ "maxzoom": 4,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "labelrank",
+ 1
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": 4,
+ "text-letter-spacing": 0.25,
+ "text-line-height": 1.1,
+ "symbol-placement": "line",
+ "text-pitch-alignment": "viewport",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 1,
+ 14
+ ],
+ [
+ 4,
+ 30
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-lg-pt",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 1,
+ "maxzoom": 4,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "labelrank",
+ 1
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": 4,
+ "text-letter-spacing": 0.25,
+ "text-line-height": 1.5,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 1,
+ 14
+ ],
+ [
+ 4,
+ 30
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "state-label-sm",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856151690.9143"
+ },
+ "source": "composite",
+ "source-layer": "state_label",
+ "minzoom": 3,
+ "maxzoom": 9,
+ "filter": [
+ "<",
+ "area",
+ 20000
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 10
+ ],
+ [
+ 9,
+ 14
+ ]
+ ]
+ },
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{abbr}"
+ ],
+ [
+ 6,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.15,
+ "text-max-width": 5
+ },
+ "paint": {
+ "text-opacity": 1,
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "state-label-md",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856151690.9143"
+ },
+ "source": "composite",
+ "source-layer": "state_label",
+ "minzoom": 3,
+ "maxzoom": 8,
+ "filter": [
+ "all",
+ [
+ "<",
+ "area",
+ 80000
+ ],
+ [
+ ">=",
+ "area",
+ 20000
+ ]
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ 10
+ ],
+ [
+ 8,
+ 16
+ ]
+ ]
+ },
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{abbr}"
+ ],
+ [
+ 5,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.15,
+ "text-max-width": 6
+ },
+ "paint": {
+ "text-opacity": 1,
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "state-label-lg",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856151690.9143"
+ },
+ "source": "composite",
+ "source-layer": "state_label",
+ "minzoom": 3,
+ "maxzoom": 7,
+ "filter": [
+ ">=",
+ "area",
+ 80000
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 4,
+ 10
+ ],
+ [
+ 7,
+ 18
+ ]
+ ]
+ },
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "text-padding": 1,
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{abbr}"
+ ],
+ [
+ 4,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.15,
+ "text-max-width": 6
+ },
+ "paint": {
+ "text-opacity": 1,
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "background copy",
+ "type": "background",
+ "layout": {},
+ "paint": {
+ "background-color": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 13,
+ "hsl(35, 12%, 89%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "landcover_snow copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "filter": [
+ "==",
+ "class",
+ "snow"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-opacity": 0.2,
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_wood copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "maxzoom": 14,
+ "filter": [
+ "==",
+ "class",
+ "wood"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 62%, 81%)",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 7,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_scrub copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "maxzoom": 14,
+ "filter": [
+ "==",
+ "class",
+ "scrub"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 62%, 81%)",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 7,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_grass copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "maxzoom": 14,
+ "filter": [
+ "==",
+ "class",
+ "grass"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 62%, 81%)",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 7,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "landcover_crop copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456970288113.8113"
+ },
+ "source": "composite",
+ "source-layer": "landcover",
+ "maxzoom": 14,
+ "filter": [
+ "==",
+ "class",
+ "crop"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 62%, 81%)",
+ "fill-opacity": {
+ "base": 1.5,
+ "stops": [
+ [
+ 2,
+ 0.3
+ ],
+ [
+ 7,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "national_park copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse_overlay",
+ "filter": [
+ "==",
+ "class",
+ "national_park"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(100, 58%, 76%)",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 6,
+ 0.5
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "hospital copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "hospital"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ "hsl(340, 37%, 87%)"
+ ],
+ [
+ 16,
+ "hsl(340, 63%, 89%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "school copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "school"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ "hsl(50, 47%, 81%)"
+ ],
+ [
+ 16,
+ "hsl(50, 63%, 84%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "park copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "park"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(100, 58%, 76%)",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 6,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "pitch copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "pitch"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(100, 57%, 72%)"
+ }
+ },
+ {
+ "id": "pitch-line copy",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "landuse",
+ "minzoom": 15,
+ "filter": [
+ "==",
+ "class",
+ "pitch"
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-color": "hsl(75, 57%, 84%)"
+ }
+ },
+ {
+ "id": "cemetery copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "cemetery"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(75, 37%, 81%)"
+ }
+ },
+ {
+ "id": "industrial copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "industrial"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ "hsl(230, 15%, 86%)"
+ ],
+ [
+ 16,
+ "hsl(230, 29%, 89%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "sand copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "landuse",
+ "filter": [
+ "==",
+ "class",
+ "sand"
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(60, 46%, 87%)"
+ }
+ },
+ {
+ "id": "hillshade_highlight_bright copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 94
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.12
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_highlight_med copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 90
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.12
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_faint copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 89
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(56, 59%, 22%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.05
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_med copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 78
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(56, 59%, 22%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.05
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_dark copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 67
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(56, 59%, 22%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.06
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "hillshade_shadow_extreme copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1456969573402.7817"
+ },
+ "source": "composite",
+ "source-layer": "hillshade",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "level",
+ 56
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(56, 59%, 22%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 14,
+ 0.06
+ ],
+ [
+ 16,
+ 0
+ ]
+ ]
+ },
+ "fill-antialias": false
+ }
+ },
+ {
+ "id": "waterway-river-canal copy",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "waterway",
+ "minzoom": 8,
+ "filter": [
+ "in",
+ "class",
+ "canal",
+ "river"
+ ],
+ "layout": {
+ "line-cap": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "butt"
+ ],
+ [
+ 11,
+ "round"
+ ]
+ ]
+ },
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": "hsl(205, 87%, 76%)",
+ "line-width": {
+ "base": 1.3,
+ "stops": [
+ [
+ 8.5,
+ 0.1
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ 0
+ ],
+ [
+ 8.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "waterway-small copy",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "waterway",
+ "minzoom": 13,
+ "filter": [
+ "!in",
+ "class",
+ "canal",
+ "river"
+ ],
+ "layout": {
+ "line-join": "round",
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-color": "hsl(205, 87%, 76%)",
+ "line-width": {
+ "base": 1.35,
+ "stops": [
+ [
+ 13.5,
+ 0.1
+ ],
+ [
+ 20,
+ 3
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 13.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "water-shadow copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "water",
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(215, 84%, 69%)",
+ "fill-translate": {
+ "base": 1.2,
+ "stops": [
+ [
+ 7,
+ [
+ 0,
+ 0
+ ]
+ ],
+ [
+ 16,
+ [
+ -1,
+ -1
+ ]
+ ]
+ ]
+ },
+ "fill-translate-anchor": "viewport",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "water copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "water",
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(196, 80%, 70%)"
+ }
+ },
+ {
+ "id": "barrier_line-land-polygon copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "barrier_line",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "==",
+ "class",
+ "land"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(35, 12%, 89%)"
+ }
+ },
+ {
+ "id": "barrier_line-land-line copy",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "barrier_line",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "class",
+ "land"
+ ]
+ ],
+ "layout": {
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.99,
+ "stops": [
+ [
+ 14,
+ 0.75
+ ],
+ [
+ 20,
+ 40
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 12%, 89%)"
+ }
+ },
+ {
+ "id": "aeroway-polygon copy",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444934828655.3389"
+ },
+ "source": "composite",
+ "source-layer": "aeroway",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "!=",
+ "type",
+ "apron"
+ ],
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(230, 23%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 37%, 84%)"
+ ]
+ ]
+ },
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "aeroway-runway copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934828655.3389"
+ },
+ "source": "composite",
+ "source-layer": "aeroway",
+ "minzoom": 9,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "type",
+ "runway"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(230, 23%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 37%, 84%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 9,
+ 1
+ ],
+ [
+ 18,
+ 80
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "aeroway-taxiway copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934828655.3389"
+ },
+ "source": "composite",
+ "source-layer": "aeroway",
+ "minzoom": 9,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "type",
+ "taxiway"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(230, 23%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 37%, 84%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 0.5
+ ],
+ [
+ 18,
+ 20
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "building-line copy",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "building",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "!=",
+ "type",
+ "building:part"
+ ],
+ [
+ "==",
+ "underground",
+ "false"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "line-color": "hsl(35, 6%, 79%)",
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 0.75
+ ],
+ [
+ 20,
+ 3
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ 0
+ ],
+ [
+ 16,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "building copy",
+ "type": "fill",
+ "source": "composite",
+ "source-layer": "building",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "!=",
+ "type",
+ "building:part"
+ ],
+ [
+ "==",
+ "underground",
+ "false"
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(35, 11%, 88%)"
+ ],
+ [
+ 16,
+ "hsl(35, 8%, 85%)"
+ ]
+ ]
+ },
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15.5,
+ 0
+ ],
+ [
+ 16,
+ 1
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(35, 6%, 79%)"
+ }
+ },
+ {
+ "id": "tunnel-street-low copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street_limited-low copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-service-link-track-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-street_limited-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-secondary-tertiary-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)"
+ }
+ },
+ {
+ "id": "tunnel-primary-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ],
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 19%, 75%)"
+ }
+ },
+ {
+ "id": "tunnel-trunk_link-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-motorway_link-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-trunk-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-motorway-case copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-dasharray": [
+ 3,
+ 3
+ ]
+ }
+ },
+ {
+ "id": "tunnel-construction copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-path copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 26%, 95%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-steps copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 26%, 95%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-trunk_link copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 77%, 78%)",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "tunnel-motorway_link copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 78%)",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "tunnel-pedestrian copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-service-link-track copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "tunnel-street_limited copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-street copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "tunnel-secondary-tertiary copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-blur": 0
+ }
+ },
+ {
+ "id": "tunnel-primary copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-blur": 0
+ }
+ },
+ {
+ "id": "tunnel-oneway-arrows-blue-minor copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "tunnel-oneway-arrows-blue-major copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "tunnel-trunk copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 77%, 78%)"
+ }
+ },
+ {
+ "id": "tunnel-motorway copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": 1,
+ "line-color": "hsl(26, 100%, 78%)",
+ "line-blur": 0
+ }
+ },
+ {
+ "id": "tunnel-oneway-arrows-white copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855769305.6016"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "ferry copy",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "type",
+ "ferry"
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(205, 73%, 63%)"
+ ],
+ [
+ 17,
+ "hsl(230, 73%, 63%)"
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 12,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 13,
+ [
+ 12,
+ 4
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "ferry_auto copy",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "type",
+ "ferry_auto"
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ "hsl(205, 73%, 63%)"
+ ],
+ [
+ 17,
+ "hsl(230, 73%, 63%)"
+ ]
+ ]
+ },
+ "line-opacity": 1,
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path-bg copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 10",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 10",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 10",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 10",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 10",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 10",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 10",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 10",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 10",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 9",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 9",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 9",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 9",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 9",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 9",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 9",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 9",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 9",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 8",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 8",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 8",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 8",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 8",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 8",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 8",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 8",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 8",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 7",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 7",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 7",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 7",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 7",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 7",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 7",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 7",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 7",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 6",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 6",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 6",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 6",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 6",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 6",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 6",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 6",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 6",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-path-bg copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps-bg copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalk-bg copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "turning-features-outline copy 5",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle-outline",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.122
+ ],
+ [
+ 18,
+ 0.969
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-pedestrian-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-low copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-low copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11,
+ 0
+ ],
+ [
+ 11.25,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-service-link-track-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street_limited-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 9.99,
+ 0
+ ],
+ [
+ 10,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway_link-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 0
+ ],
+ [
+ 6.1,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-construction copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-sidewalks copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "type",
+ "crossing",
+ "sidewalk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-path copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "crossing",
+ "sidewalk",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-steps copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-trunk_link copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-motorway_link copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-fill copy 5",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "hsl(230, 16%, 94%)"
+ ],
+ [
+ 16.25,
+ "hsl(230, 50%, 98%)"
+ ]
+ ]
+ },
+ "fill-outline-color": "hsl(230, 26%, 88%)",
+ "fill-opacity": 1
+ }
+ },
+ {
+ "id": "road-pedestrian-polygon-pattern copy 5",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "none"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "hsl(35, 10%, 83%)",
+ "fill-pattern": "pedestrian-polygon",
+ "fill-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 0
+ ],
+ [
+ 16.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-polygon copy 5",
+ "type": "fill",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 12,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "class",
+ "motorway",
+ "path",
+ "pedestrian",
+ "trunk"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ]
+ ]
+ ],
+ "layout": {},
+ "paint": {
+ "fill-color": "hsl(0, 0%, 100%)",
+ "fill-outline-color": "#d6d9e6"
+ }
+ },
+ {
+ "id": "road-service-link-track copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "road-street_limited copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-street copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "none"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-secondary-tertiary copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 8,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-primary copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ "hsl(35, 32%, 91%)"
+ ],
+ [
+ 7,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "road-oneway-arrows-blue-minor copy 5",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-blue-major copy 5",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-trunk copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(0, 0%, 100%)"
+ ],
+ [
+ 6.1,
+ "hsl(46, 80%, 60%)"
+ ],
+ [
+ 9,
+ "hsl(46, 85%, 67%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-motorway copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(26, 87%, 62%)"
+ ],
+ [
+ 9,
+ "hsl(26, 100%, 68%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "road-rail-tracks copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "level-crossings copy 5",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "class",
+ "level_crossing"
+ ]
+ ],
+ "layout": {
+ "icon-size": 1,
+ "icon-image": "level-crossing",
+ "icon-allow-overlap": true
+ },
+ "paint": {}
+ },
+ {
+ "id": "road-oneway-arrows-white copy 5",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "structure",
+ "bridge",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "icon-padding": 2,
+ "symbol-spacing": 200
+ },
+ "paint": {}
+ },
+ {
+ "id": "turning-features copy 5",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855786460.0557"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "turning_circle",
+ "turning_loop"
+ ]
+ ],
+ "layout": {
+ "icon-image": "turning-circle",
+ "icon-size": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.095
+ ],
+ [
+ 18,
+ 1
+ ]
+ ]
+ },
+ "icon-allow-overlap": true,
+ "icon-ignore-placement": true,
+ "icon-padding": 0,
+ "icon-rotation-alignment": "map"
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 10",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 10",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 10",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 10",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 9",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 9",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 9",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 9",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 8",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 8",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 8",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 8",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 7",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 7",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 7",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 7",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 6",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 6",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 6",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 6",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-path-bg copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-blur": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 0
+ ],
+ [
+ 15.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps-bg copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 2
+ ],
+ [
+ 17,
+ 4.6
+ ],
+ [
+ 18,
+ 7
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 17%, 82%)",
+ "line-dasharray": [
+ 1,
+ 0
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 0.75
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-pedestrian-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 14.5
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": 0,
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-low copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-low copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "stops": [
+ [
+ 11.5,
+ 0
+ ],
+ [
+ 12,
+ 1
+ ],
+ [
+ 14,
+ 1
+ ],
+ [
+ 14.01,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street_limited-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 13,
+ 0
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-primary-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "primary"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "bridge-trunk_link-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-construction copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "construction"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(230, 24%, 87%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 0.4,
+ 0.8
+ ]
+ ],
+ [
+ 15,
+ [
+ 0.3,
+ 0.6
+ ]
+ ],
+ [
+ 16,
+ [
+ 0.2,
+ 0.3
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.2,
+ 0.25
+ ]
+ ],
+ [
+ 18,
+ [
+ 0.15,
+ 0.15
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-path copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "steps"
+ ],
+ [
+ "==",
+ "class",
+ "path"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 18,
+ 4
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 1,
+ 0.5
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-steps copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "steps"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 16,
+ 1.6
+ ],
+ [
+ 18,
+ 6
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.75,
+ 1
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.75
+ ]
+ ],
+ [
+ 17,
+ [
+ 0.3,
+ 0.3
+ ]
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 14.25,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-pedestrian copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1,
+ "line-dasharray": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ 15,
+ [
+ 1.5,
+ 0.4
+ ]
+ ],
+ [
+ 16,
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-service-link-track copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!=",
+ "type",
+ "trunk_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 18,
+ 12
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)"
+ }
+ },
+ {
+ "id": "bridge-street_limited copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street_limited"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(35, 14%, 93%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-street copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "street"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12.5,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-secondary-tertiary copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "type",
+ "secondary",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 8.5,
+ 0.5
+ ],
+ [
+ 10,
+ 0.75
+ ],
+ [
+ 18,
+ 26
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": {
+ "base": 1.2,
+ "stops": [
+ [
+ 5,
+ 0
+ ],
+ [
+ 5.5,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-primary copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "primary"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-minor copy 5",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "path",
+ "pedestrian",
+ "service",
+ "track"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 17,
+ "oneway-small"
+ ],
+ [
+ 18,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-oneway-arrows-blue-major copy 5",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-small"
+ ],
+ [
+ 17,
+ "oneway-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-rotation-alignment": "map",
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "bridge-trunk copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "layer",
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-rail copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-rail-tracks copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "major_rail",
+ "minor_rail"
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 13,
+ "hsl(50, 17%, 82%)"
+ ],
+ [
+ 16,
+ "hsl(230, 10%, 74%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 4
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 0.1,
+ 15
+ ],
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.75,
+ 0
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 10.99,
+ 0
+ ],
+ [
+ 11,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-opacity": 1
+ }
+ },
+ {
+ "id": "bridge-trunk-2-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-motorway-2-case copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 16,
+ 2
+ ]
+ ]
+ },
+ "line-color": "hsl(0, 0%, 100%)",
+ "line-gap-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "bridge-trunk_link-2 copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "==",
+ "type",
+ "trunk_link"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway_link-2 copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway_link"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 14,
+ 2
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-trunk-2 copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "trunk"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(46, 85%, 67%)"
+ }
+ },
+ {
+ "id": "bridge-motorway-2 copy 5",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "==",
+ "class",
+ "motorway"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ ">=",
+ "layer",
+ 2
+ ]
+ ]
+ ],
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 5,
+ 0.75
+ ],
+ [
+ 18,
+ 32
+ ]
+ ]
+ },
+ "line-color": "hsl(26, 100%, 68%)"
+ }
+ },
+ {
+ "id": "bridge-oneway-arrows-white copy 5",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444855799204.86"
+ },
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 16,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "all",
+ [
+ "!in",
+ "type",
+ "primary_link",
+ "secondary_link",
+ "tertiary_link"
+ ],
+ [
+ "==",
+ "oneway",
+ "true"
+ ],
+ [
+ "==",
+ "structure",
+ "bridge"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "motorway",
+ "motorway_link",
+ "trunk"
+ ]
+ ]
+ ],
+ "layout": {
+ "symbol-placement": "line",
+ "icon-image": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ "oneway-white-small"
+ ],
+ [
+ 17,
+ "oneway-white-large"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "icon-padding": 2
+ },
+ "paint": {}
+ },
+ {
+ "id": "aerialway copy",
+ "type": "line",
+ "source": "composite",
+ "source-layer": "road",
+ "minzoom": 13,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "class",
+ "aerialway"
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-color": "hsl(230, 10%, 74%)",
+ "line-width": {
+ "base": 1.5,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 20,
+ 1
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-3-4-boundaries-bg copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "filter": [
+ "all",
+ [
+ "==",
+ "maritime",
+ 0
+ ],
+ [
+ ">=",
+ "admin_level",
+ 3
+ ]
+ ],
+ "layout": {
+ "line-join": "bevel"
+ },
+ "paint": {
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 8,
+ "hsl(35, 12%, 89%)"
+ ],
+ [
+ 16,
+ "hsl(230, 49%, 90%)"
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ 3.75
+ ],
+ [
+ 12,
+ 5.5
+ ]
+ ]
+ },
+ "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": "admin-2-boundaries-bg copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 1,
+ "filter": [
+ "all",
+ [
+ "==",
+ "admin_level",
+ 2
+ ],
+ [
+ "==",
+ "maritime",
+ 0
+ ]
+ ],
+ "layout": {
+ "line-join": "miter"
+ },
+ "paint": {
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 3.5
+ ],
+ [
+ 10,
+ 8
+ ]
+ ]
+ },
+ "line-color": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ "hsl(35, 12%, 89%)"
+ ],
+ [
+ 8,
+ "hsl(230, 49%, 90%)"
+ ]
+ ]
+ },
+ "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 copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "filter": [
+ "all",
+ [
+ "==",
+ "maritime",
+ 0
+ ],
+ [
+ ">=",
+ "admin_level",
+ 3
+ ]
+ ],
+ "layout": {
+ "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,
+ "hsl(230, 14%, 77%)"
+ ],
+ [
+ 7,
+ "hsl(230, 8%, 62%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-2-boundaries copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 1,
+ "filter": [
+ "all",
+ [
+ "==",
+ "admin_level",
+ 2
+ ],
+ [
+ "==",
+ "disputed",
+ 0
+ ],
+ [
+ "==",
+ "maritime",
+ 0
+ ]
+ ],
+ "layout": {
+ "line-join": "round",
+ "line-cap": "round"
+ },
+ "paint": {
+ "line-color": "hsl(230, 8%, 51%)",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 0.5
+ ],
+ [
+ 10,
+ 2
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "admin-2-boundaries-dispute copy",
+ "type": "line",
+ "metadata": {
+ "mapbox:group": "1444934295202.7542"
+ },
+ "source": "composite",
+ "source-layer": "admin",
+ "minzoom": 1,
+ "filter": [
+ "all",
+ [
+ "==",
+ "admin_level",
+ 2
+ ],
+ [
+ "==",
+ "disputed",
+ 1
+ ],
+ [
+ "==",
+ "maritime",
+ 0
+ ]
+ ],
+ "layout": {
+ "line-join": "round"
+ },
+ "paint": {
+ "line-dasharray": [
+ 1.5,
+ 1.5
+ ],
+ "line-color": "hsl(230, 8%, 51%)",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 0.5
+ ],
+ [
+ 10,
+ 2
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "housenum-label copy 4",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "housenum_label",
+ "minzoom": 17,
+ "layout": {
+ "text-field": "{house_num}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 4,
+ "text-max-width": 7,
+ "text-size": 9.5
+ },
+ "paint": {
+ "text-color": "hsl(35, 2%, 69%)",
+ "text-halo-color": "hsl(35, 8%, 85%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0
+ }
+ },
+ {
+ "id": "housenum-label copy 3",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "housenum_label",
+ "minzoom": 17,
+ "layout": {
+ "text-field": "{house_num}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 4,
+ "text-max-width": 7,
+ "text-size": 9.5
+ },
+ "paint": {
+ "text-color": "hsl(35, 2%, 69%)",
+ "text-halo-color": "hsl(35, 8%, 85%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0
+ }
+ },
+ {
+ "id": "housenum-label copy 2",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "housenum_label",
+ "minzoom": 17,
+ "layout": {
+ "text-field": "{house_num}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 4,
+ "text-max-width": 7,
+ "text-size": 9.5
+ },
+ "paint": {
+ "text-color": "hsl(35, 2%, 69%)",
+ "text-halo-color": "hsl(35, 8%, 85%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0
+ }
+ },
+ {
+ "id": "waterway-label copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "waterway_label",
+ "minzoom": 12,
+ "filter": [
+ "in",
+ "class",
+ "canal",
+ "river"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-pitch-alignment": "viewport",
+ "text-max-angle": 30,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 12
+ ],
+ [
+ 18,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-width": 0.5,
+ "text-halo-color": "hsl(196, 80%, 70%)",
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-scalerank4-l15 copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933456003.5437"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 17,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "==",
+ "scalerank",
+ 4
+ ],
+ [
+ ">=",
+ "localrank",
+ 15
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-scalerank4-l1 copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933456003.5437"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "<=",
+ "localrank",
+ 14
+ ],
+ [
+ "==",
+ "scalerank",
+ 4
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 1,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-parks_scalerank4 copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933456003.5437"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "==",
+ "scalerank",
+ 4
+ ],
+ [
+ "in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 1,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(100, 100%, 20%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-scalerank3 copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933372896.5967"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "==",
+ "scalerank",
+ 3
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 1,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-parks-scalerank3 copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933372896.5967"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "==",
+ "scalerank",
+ 3
+ ],
+ [
+ "in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{maki}-11",
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(100, 100%, 20%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "road-label-small copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933721429.3076"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "minzoom": 15,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "class",
+ "golf",
+ "link",
+ "motorway",
+ "pedestrian",
+ "primary",
+ "secondary",
+ "street",
+ "street_limited",
+ "tertiary",
+ "trunk"
+ ],
+ [
+ "==",
+ "$type",
+ "LineString"
+ ]
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 15,
+ 10
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "text-max-angle": 30,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-padding": 1,
+ "text-rotation-alignment": "map",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "road-label-medium copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933721429.3076"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "minzoom": 11,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "class",
+ "link",
+ "pedestrian",
+ "street",
+ "street_limited"
+ ]
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 10
+ ],
+ [
+ 20,
+ 14
+ ]
+ ]
+ },
+ "text-max-angle": 30,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-padding": 1,
+ "text-rotation-alignment": "map",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "road-label-large copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933721429.3076"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "in",
+ "class",
+ "motorway",
+ "primary",
+ "secondary",
+ "tertiary",
+ "trunk"
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 9,
+ 10
+ ],
+ [
+ 20,
+ 16
+ ]
+ ]
+ },
+ "text-max-angle": 30,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-padding": 1,
+ "text-rotation-alignment": "map",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsla(0, 0%, 100%, 0.75)",
+ "text-halo-width": 1,
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "road-shields-black copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ],
+ [
+ "<=",
+ "reflen",
+ 6
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 7%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "road-shields-white copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 6
+ ],
+ [
+ "in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "motorway-junction copy 4",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "motorway_junction",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 9
+ ],
+ [
+ ">",
+ "reflen",
+ 0
+ ]
+ ],
+ "layout": {
+ "text-field": "{ref}",
+ "text-size": 9,
+ "icon-image": "motorway-exit-{reflen}",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ]
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "text-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "road-shields-black copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ],
+ [
+ "<=",
+ "reflen",
+ 6
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 7%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "road-shields-white copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 6
+ ],
+ [
+ "in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "motorway-junction copy 3",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "motorway_junction",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 9
+ ],
+ [
+ ">",
+ "reflen",
+ 0
+ ]
+ ],
+ "layout": {
+ "text-field": "{ref}",
+ "text-size": 9,
+ "icon-image": "motorway-exit-{reflen}",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ]
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "text-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "road-shields-black copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ],
+ [
+ "<=",
+ "reflen",
+ 6
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 7%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "road-shields-white copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "road_label",
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 6
+ ],
+ [
+ "in",
+ "shield",
+ "at-expressway",
+ "at-motorway",
+ "at-state-b",
+ "bg-motorway",
+ "bg-national",
+ "ch-main",
+ "ch-motorway",
+ "cz-motorway",
+ "cz-road",
+ "de-motorway",
+ "e-road",
+ "fi-main",
+ "gr-motorway",
+ "gr-national",
+ "hr-motorway",
+ "hr-state",
+ "hu-main",
+ "hu-motorway",
+ "nz-state",
+ "pl-expressway",
+ "pl-motorway",
+ "pl-national",
+ "ro-county",
+ "ro-motorway",
+ "ro-national",
+ "rs-motorway",
+ "rs-state-1b",
+ "se-main",
+ "si-expressway",
+ "si-motorway",
+ "sk-highway",
+ "sk-road",
+ "us-interstate",
+ "us-interstate-business",
+ "us-interstate-duplex",
+ "us-interstate-truck",
+ "za-metropolitan",
+ "za-national",
+ "za-provincial",
+ "za-regional"
+ ]
+ ],
+ "layout": {
+ "text-size": 9,
+ "icon-image": "{shield}-{reflen}",
+ "icon-rotation-alignment": "viewport",
+ "text-max-angle": 38,
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 150
+ ],
+ [
+ 14,
+ 200
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ "point"
+ ],
+ [
+ 11,
+ "line"
+ ]
+ ]
+ },
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-field": "{ref}",
+ "text-letter-spacing": 0.05,
+ "icon-padding": 2
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "rgba(0, 0, 0, 1)",
+ "icon-halo-width": 1,
+ "text-opacity": 1,
+ "icon-color": "white",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0
+ }
+ },
+ {
+ "id": "motorway-junction copy 2",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933575858.6992"
+ },
+ "source": "composite",
+ "source-layer": "motorway_junction",
+ "minzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "reflen",
+ 9
+ ],
+ [
+ ">",
+ "reflen",
+ 0
+ ]
+ ],
+ "layout": {
+ "text-field": "{ref}",
+ "text-size": 9,
+ "icon-image": "motorway-exit-{reflen}",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ]
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 100%)",
+ "text-translate": [
+ 0,
+ 0
+ ]
+ }
+ },
+ {
+ "id": "poi-scalerank2 copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933358918.2366"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "==",
+ "scalerank",
+ 2
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 11
+ ],
+ [
+ 20,
+ 14
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 14,
+ "{maki}-11"
+ ],
+ [
+ 15,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-parks-scalerank2 copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933358918.2366"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "==",
+ "scalerank",
+ 2
+ ],
+ [
+ "in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 14,
+ 11
+ ],
+ [
+ 20,
+ 14
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 14,
+ "{maki}-11"
+ ],
+ [
+ 15,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(100, 100%, 20%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "rail-label copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "rail_station_label",
+ "minzoom": 12,
+ "filter": [
+ "!=",
+ "maki",
+ "entrance"
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 11
+ ],
+ [
+ 20,
+ 13
+ ]
+ ]
+ },
+ "icon-image": "{network}",
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-offset": [
+ 0,
+ 0.85
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ ""
+ ],
+ [
+ 13,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.01,
+ "icon-padding": 0,
+ "text-max-width": 7
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "icon-halo-width": 4,
+ "icon-halo-color": "#fff",
+ "text-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 13.99,
+ 0
+ ],
+ [
+ 14,
+ 1
+ ]
+ ]
+ },
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "water-label-sm copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933808272.805"
+ },
+ "source": "composite",
+ "source-layer": "water_label",
+ "minzoom": 15,
+ "filter": [
+ "<=",
+ "area",
+ 10000
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 16,
+ 13
+ ],
+ [
+ 20,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)"
+ }
+ },
+ {
+ "id": "water-label copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933808272.805"
+ },
+ "source": "composite",
+ "source-layer": "water_label",
+ "minzoom": 5,
+ "filter": [
+ ">",
+ "area",
+ 10000
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 13
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)"
+ }
+ },
+ {
+ "id": "place-residential copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 18,
+ "filter": [
+ "all",
+ [
+ "all",
+ [
+ "<=",
+ "localrank",
+ 10
+ ],
+ [
+ "==",
+ "type",
+ "residential"
+ ]
+ ],
+ [
+ "in",
+ "$type",
+ "LineString",
+ "Point",
+ "Polygon"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 14
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-max-width": 7
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-parks-scalerank1 copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933322393.2852"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "<=",
+ "scalerank",
+ 1
+ ],
+ [
+ "in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 14
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 13,
+ "{maki}-11"
+ ],
+ [
+ 14,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(100, 100%, 20%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "poi-scalerank1 copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444933322393.2852"
+ },
+ "source": "composite",
+ "source-layer": "poi_label",
+ "filter": [
+ "all",
+ [
+ "!in",
+ "maki",
+ "campsite",
+ "cemetery",
+ "dog-park",
+ "garden",
+ "golf",
+ "park",
+ "picnic-site",
+ "playground",
+ "zoo"
+ ],
+ [
+ "<=",
+ "scalerank",
+ 1
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 14
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 13,
+ "{maki}-11"
+ ],
+ [
+ 14,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.65
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(26, 25%, 32%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "airport-label copy 4",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "airport_label",
+ "minzoom": 9,
+ "filter": [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 12
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 12,
+ "{maki}-11"
+ ],
+ [
+ 13,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.75
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "stops": [
+ [
+ 11,
+ "{ref}"
+ ],
+ [
+ 12,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.01,
+ "text-max-width": 9
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "airport-label copy 3",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "airport_label",
+ "minzoom": 9,
+ "filter": [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 12
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 12,
+ "{maki}-11"
+ ],
+ [
+ 13,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.75
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "stops": [
+ [
+ 11,
+ "{ref}"
+ ],
+ [
+ 12,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.01,
+ "text-max-width": 9
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "airport-label copy 2",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "airport_label",
+ "minzoom": 9,
+ "filter": [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 12
+ ],
+ [
+ 18,
+ 18
+ ]
+ ]
+ },
+ "icon-image": {
+ "stops": [
+ [
+ 12,
+ "{maki}-11"
+ ],
+ [
+ 13,
+ "{maki}-15"
+ ]
+ ]
+ },
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0.75
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-anchor": "top",
+ "text-field": {
+ "stops": [
+ [
+ 11,
+ "{ref}"
+ ],
+ [
+ 12,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.01,
+ "text-max-width": 9
+ },
+ "paint": {
+ "text-color": "hsl(230, 48%, 44%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 0.5,
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "place-islet-archipelago-aboriginal copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 16,
+ "filter": [
+ "in",
+ "type",
+ "aboriginal_lands",
+ "archipelago",
+ "islet"
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 16
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 8
+ },
+ "paint": {
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "place-neighbourhood copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "neighbourhood"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-transform": "uppercase",
+ "text-letter-spacing": 0.1,
+ "text-max-width": 7,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 3,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 12,
+ 11
+ ],
+ [
+ 16,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "place-suburb copy 2",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "suburb"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-letter-spacing": 0.15,
+ "text-max-width": 7,
+ "text-padding": 3,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 11
+ ],
+ [
+ 15,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "place-suburb copy 1",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "suburb"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-letter-spacing": 0.15,
+ "text-max-width": 7,
+ "text-padding": 3,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ 11
+ ],
+ [
+ 15,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-blur": 0.5
+ }
+ },
+ {
+ "id": "place-hamlet copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 10,
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "hamlet"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 12,
+ 11.5
+ ],
+ [
+ 15,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "text-color": "hsl(0, 0%, 0%)"
+ }
+ },
+ {
+ "id": "place-village copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 8,
+ "maxzoom": 15,
+ "filter": [
+ "==",
+ "type",
+ "village"
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11.5
+ ],
+ [
+ 16,
+ 18
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "text-color": "hsl(0, 0%, 0%)"
+ }
+ },
+ {
+ "id": "place-town copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 6,
+ "maxzoom": 15,
+ "filter": [
+ "==",
+ "type",
+ "town"
+ ],
+ "layout": {
+ "icon-image": "dot-9",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 11,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 12,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ 0,
+ -0.15
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ 11.5
+ ],
+ [
+ 15,
+ 20
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "place-island copy",
+ "type": "symbol",
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 16,
+ "filter": [
+ "==",
+ "type",
+ "island"
+ ],
+ "layout": {
+ "text-line-height": 1.2,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 10,
+ 11
+ ],
+ [
+ 18,
+ 16
+ ]
+ ]
+ },
+ "text-max-angle": 38,
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ],
+ "text-padding": 2,
+ "text-offset": [
+ 0,
+ 0
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.01,
+ "text-max-width": 7
+ },
+ "paint": {
+ "text-color": "hsl(230, 29%, 35%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "place-city-sm copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "!in",
+ "scalerank",
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ [
+ "==",
+ "type",
+ "city"
+ ]
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 12
+ ],
+ [
+ 14,
+ 22
+ ]
+ ]
+ },
+ "icon-image": "dot-9",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "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
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1.25,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "place-city-md-s copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "E",
+ "S",
+ "SE",
+ "SW"
+ ],
+ [
+ "in",
+ "scalerank",
+ 3,
+ 4,
+ 5
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "icon-image": "dot-10",
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "top"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ 0.1
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 5,
+ 12
+ ],
+ [
+ 12,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-halo-width": 1,
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-blur": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "place-city-md-n copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "==",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "N",
+ "NE",
+ "NW",
+ "W"
+ ],
+ [
+ "in",
+ "scalerank",
+ 3,
+ 4,
+ 5
+ ]
+ ],
+ "layout": {
+ "icon-image": "dot-10",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ -0.25
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 5,
+ 12
+ ],
+ [
+ 12,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ },
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "place-city-lg-s copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 1,
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ [
+ "==",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "E",
+ "S",
+ "SE",
+ "SW"
+ ]
+ ],
+ "layout": {
+ "icon-image": "dot-11",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ 0.15
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "top"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 4,
+ 12
+ ],
+ [
+ 10,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ },
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "place-city-lg-n copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444862510685.128"
+ },
+ "source": "composite",
+ "source-layer": "place_label",
+ "minzoom": 1,
+ "maxzoom": 14,
+ "filter": [
+ "all",
+ [
+ "<=",
+ "scalerank",
+ 2
+ ],
+ [
+ "==",
+ "type",
+ "city"
+ ],
+ [
+ "in",
+ "ldir",
+ "N",
+ "NE",
+ "NW",
+ "W"
+ ]
+ ],
+ "layout": {
+ "icon-image": "dot-11",
+ "text-font": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ [
+ "DIN Offc Pro Regular",
+ "Arial Unicode MS Regular"
+ ]
+ ],
+ [
+ 8,
+ [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ]
+ ]
+ ]
+ },
+ "text-offset": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ [
+ 0,
+ -0.25
+ ]
+ ],
+ [
+ 8,
+ [
+ 0,
+ 0
+ ]
+ ]
+ ]
+ },
+ "text-anchor": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "bottom"
+ ],
+ [
+ 8,
+ "center"
+ ]
+ ]
+ },
+ "text-field": "{name_en}",
+ "text-max-width": 7,
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 4,
+ 12
+ ],
+ [
+ 10,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-opacity": 1,
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1,
+ "icon-opacity": {
+ "base": 1,
+ "stops": [
+ [
+ 7.99,
+ 1
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ },
+ "text-halo-blur": 1
+ }
+ },
+ {
+ "id": "marine-label-sm-ln copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 3,
+ "maxzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ ">=",
+ "labelrank",
+ 4
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 12
+ ],
+ [
+ 6,
+ 16
+ ]
+ ]
+ },
+ "symbol-spacing": {
+ "base": 1,
+ "stops": [
+ [
+ 4,
+ 100
+ ],
+ [
+ 6,
+ 400
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.1,
+ "text-max-width": 5
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-sm-pt copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 3,
+ "maxzoom": 10,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ ">=",
+ "labelrank",
+ 4
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": 5,
+ "text-letter-spacing": 0.1,
+ "text-line-height": 1.5,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 12
+ ],
+ [
+ 6,
+ 16
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-md-ln copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 2,
+ "maxzoom": 8,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "labelrank",
+ 2,
+ 3
+ ]
+ ],
+ "layout": {
+ "text-line-height": 1.1,
+ "text-size": {
+ "base": 1.1,
+ "stops": [
+ [
+ 2,
+ 12
+ ],
+ [
+ 5,
+ 20
+ ]
+ ]
+ },
+ "symbol-spacing": 250,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "symbol-placement": "line",
+ "text-pitch-alignment": "viewport",
+ "text-field": "{name_en}",
+ "text-letter-spacing": 0.15,
+ "text-max-width": 5
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-md-pt copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 2,
+ "maxzoom": 8,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "labelrank",
+ 2,
+ 3
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": 5,
+ "text-letter-spacing": 0.15,
+ "text-line-height": 1.5,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1.1,
+ "stops": [
+ [
+ 2,
+ 14
+ ],
+ [
+ 5,
+ 20
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-lg-ln copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 1,
+ "maxzoom": 4,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "labelrank",
+ 1
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": 4,
+ "text-letter-spacing": 0.25,
+ "text-line-height": 1.1,
+ "symbol-placement": "line",
+ "text-pitch-alignment": "viewport",
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 1,
+ 14
+ ],
+ [
+ 4,
+ 30
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "marine-label-lg-pt copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856087950.3635"
+ },
+ "source": "composite",
+ "source-layer": "marine_label",
+ "minzoom": 1,
+ "maxzoom": 4,
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "labelrank",
+ 1
+ ]
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": 4,
+ "text-letter-spacing": 0.25,
+ "text-line-height": 1.5,
+ "text-font": [
+ "DIN Offc Pro Italic",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 1,
+ 14
+ ],
+ [
+ 4,
+ 30
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(205, 83%, 88%)"
+ }
+ },
+ {
+ "id": "state-label-sm copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856151690.9143"
+ },
+ "source": "composite",
+ "source-layer": "state_label",
+ "minzoom": 3,
+ "maxzoom": 9,
+ "filter": [
+ "<",
+ "area",
+ 20000
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 6,
+ 10
+ ],
+ [
+ 9,
+ 14
+ ]
+ ]
+ },
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{abbr}"
+ ],
+ [
+ 6,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.15,
+ "text-max-width": 5
+ },
+ "paint": {
+ "text-opacity": 1,
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "state-label-md copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856151690.9143"
+ },
+ "source": "composite",
+ "source-layer": "state_label",
+ "minzoom": 3,
+ "maxzoom": 8,
+ "filter": [
+ "all",
+ [
+ "<",
+ "area",
+ 80000
+ ],
+ [
+ ">=",
+ "area",
+ 20000
+ ]
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 5,
+ 10
+ ],
+ [
+ 8,
+ 16
+ ]
+ ]
+ },
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{abbr}"
+ ],
+ [
+ 5,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.15,
+ "text-max-width": 6
+ },
+ "paint": {
+ "text-opacity": 1,
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "state-label-lg copy",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856151690.9143"
+ },
+ "source": "composite",
+ "source-layer": "state_label",
+ "minzoom": 3,
+ "maxzoom": 7,
+ "filter": [
+ ">=",
+ "area",
+ 80000
+ ],
+ "layout": {
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 4,
+ 10
+ ],
+ [
+ 7,
+ 18
+ ]
+ ]
+ },
+ "text-transform": "uppercase",
+ "text-font": [
+ "DIN Offc Pro Bold",
+ "Arial Unicode MS Bold"
+ ],
+ "text-padding": 1,
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{abbr}"
+ ],
+ [
+ 4,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-letter-spacing": 0.15,
+ "text-max-width": 6
+ },
+ "paint": {
+ "text-opacity": 1,
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "country-label-sm",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856144497.7825"
+ },
+ "source": "composite",
+ "source-layer": "country_label",
+ "minzoom": 1,
+ "maxzoom": 10,
+ "filter": [
+ ">=",
+ "scalerank",
+ 5
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": 6,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 0.9,
+ "stops": [
+ [
+ 5,
+ 14
+ ],
+ [
+ 9,
+ 22
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": {
+ "base": 1,
+ "stops": [
+ [
+ 2,
+ "rgba(255,255,255,0.75)"
+ ],
+ [
+ 3,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "text-halo-width": 1.25
+ }
+ },
+ {
+ "id": "country-label-md",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856144497.7825"
+ },
+ "source": "composite",
+ "source-layer": "country_label",
+ "minzoom": 1,
+ "maxzoom": 8,
+ "filter": [
+ "in",
+ "scalerank",
+ 3,
+ 4
+ ],
+ "layout": {
+ "text-field": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ "{code}"
+ ],
+ [
+ 2,
+ "{name_en}"
+ ]
+ ]
+ },
+ "text-max-width": 6,
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 3,
+ 10
+ ],
+ [
+ 8,
+ 24
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": {
+ "base": 1,
+ "stops": [
+ [
+ 2,
+ "rgba(255,255,255,0.75)"
+ ],
+ [
+ 3,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "text-halo-width": 1.25
+ }
+ },
+ {
+ "id": "country-label-lg",
+ "type": "symbol",
+ "metadata": {
+ "mapbox:group": "1444856144497.7825"
+ },
+ "source": "composite",
+ "source-layer": "country_label",
+ "minzoom": 1,
+ "maxzoom": 7,
+ "filter": [
+ "in",
+ "scalerank",
+ 1,
+ 2
+ ],
+ "layout": {
+ "text-field": "{name_en}",
+ "text-max-width": {
+ "base": 1,
+ "stops": [
+ [
+ 0,
+ 5
+ ],
+ [
+ 3,
+ 6
+ ]
+ ]
+ },
+ "text-font": [
+ "DIN Offc Pro Medium",
+ "Arial Unicode MS Regular"
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 1,
+ 10
+ ],
+ [
+ 6,
+ 24
+ ]
+ ]
+ }
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 0%)",
+ "text-halo-color": {
+ "base": 1,
+ "stops": [
+ [
+ 2,
+ "rgba(255,255,255,0.75)"
+ ],
+ [
+ 3,
+ "hsl(0, 0%, 100%)"
+ ]
+ ]
+ },
+ "text-halo-width": 1.25
+ }
+ }
+ ],
+ "created": "2018-07-03T09:06:20.716Z",
+ "id": "cjj5gy5q00ips2rnqgjcneimy",
+ "modified": "2018-07-03T09:31:38.205Z",
+ "owner": "lukaspaczos",
+ "visibility": "public",
+ "draft": false
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/debug/java/com/mapbox/mapboxsdk/testapp/activity/SingleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/java/com/mapbox/mapboxsdk/testapp/activity/SingleActivity.java
new file mode 100644
index 0000000000..3c7812f9b1
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/java/com/mapbox/mapboxsdk/testapp/activity/SingleActivity.java
@@ -0,0 +1,62 @@
+package com.mapbox.mapboxsdk.testapp.activity;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+
+import com.mapbox.mapboxsdk.maps.MapView;
+import com.mapbox.mapboxsdk.testapp.R;
+
+public class SingleActivity extends AppCompatActivity {
+ private MapView mapView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_single);
+
+ mapView = (MapView) findViewById(R.id.mapView);
+ mapView.onCreate(savedInstanceState);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ mapView.onStart();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ mapView.onResume();
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mapView.onPause();
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ mapView.onStop();
+ }
+
+ @Override
+ public void onLowMemory() {
+ super.onLowMemory();
+ mapView.onLowMemory();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mapView.onDestroy();
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ mapView.onSaveInstanceState(outState);
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/debug/java/com/mapbox/mapboxsdk/testapp/activity/SingleFragmentActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/java/com/mapbox/mapboxsdk/testapp/activity/SingleFragmentActivity.java
new file mode 100644
index 0000000000..823b80af10
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/java/com/mapbox/mapboxsdk/testapp/activity/SingleFragmentActivity.java
@@ -0,0 +1,36 @@
+package com.mapbox.mapboxsdk.testapp.activity;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v7.app.AppCompatActivity;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import com.mapbox.mapboxsdk.testapp.R;
+
+/**
+ * Used for testing fragments inside a fake activity.
+ */
+public class SingleFragmentActivity extends AppCompatActivity {
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ FrameLayout content = new FrameLayout(this);
+ content.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT));
+ content.setId(R.id.container);
+ setContentView(content);
+ }
+
+ public void setFragment(Fragment fragment) {
+ getSupportFragmentManager().beginTransaction()
+ .add(R.id.container, fragment, "TEST")
+ .commit();
+ }
+
+ public void replaceFragment(Fragment fragment) {
+ getSupportFragmentManager().beginTransaction()
+ .replace(R.id.container, fragment).commit();
+ }
+}
\ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/debug/res/layout/activity_single.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/res/layout/activity_single.xml
new file mode 100644
index 0000000000..d7dfcf2dd0
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/debug/res/layout/activity_single.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
--
cgit v1.2.1