summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-08-11 16:57:33 +0200
committerKonstantin Käfer <mail@kkaefer.com>2014-08-11 16:57:33 +0200
commit7a98ad4cf949dd1279719bf926bd08da0133210f (patch)
tree66ef1177038f1edefc08cc72a78cb49421b01e5c
parente39ae931b9890bbe23013049df132243af454c49 (diff)
parent225b5e01cbadc46727f77ccf185c711b5f6956a7 (diff)
downloadqtlocation-mapboxgl-7a98ad4cf949dd1279719bf926bd08da0133210f.tar.gz
Merge pull request #407 from mapbox/filesource
Use style.json directory as base path for loading sprite images
-rwxr-xr-xbin/build-style.js12
-rw-r--r--bin/style.js506
-rw-r--r--include/mbgl/map/map.hpp22
-rw-r--r--include/mbgl/map/sprite.hpp6
-rw-r--r--include/mbgl/text/glyph_store.hpp6
-rw-r--r--include/mbgl/util/filesource.hpp45
-rw-r--r--include/mbgl/util/uv.hpp14
-rw-r--r--linux/main.cpp12
-rw-r--r--linux/mapboxgl-app.gyp2
-rw-r--r--macosx/main.mm17
-rw-r--r--macosx/mapboxgl-app.gyp4
-rw-r--r--mapboxgl.gyp33
-rw-r--r--src/map/map.cpp34
-rw-r--r--src/map/sprite.cpp11
-rw-r--r--src/map/tile_data.cpp5
-rw-r--r--src/text/glyph_store.cpp9
-rw-r--r--src/util/filesource.cpp58
-rw-r--r--styles/bright/img/sprite.json2818
-rw-r--r--styles/bright/img/sprite.pngbin0 -> 118946 bytes
-rw-r--r--styles/bright/img/sprite@2x.json2818
-rw-r--r--styles/bright/img/sprite@2x.pngbin0 -> 272040 bytes
-rw-r--r--styles/bright/style.json1336
-rw-r--r--test/test.gyp2
23 files changed, 7181 insertions, 589 deletions
diff --git a/bin/build-style.js b/bin/build-style.js
deleted file mode 100755
index c69fcb8b40..0000000000
--- a/bin/build-style.js
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env node
-'use strict';
-
-var path = require('path');
-var fs = require('fs');
-var mkdirp = require('./mkdirp');
-var name = 'style';
-var data = JSON.stringify(require(path.join(process.cwd(), process.argv[2])));
-
-var out_path = path.join(process.argv[3], 'bin/style.min.js');
-mkdirp.sync(path.dirname(out_path));
-fs.writeFileSync(out_path, data);
diff --git a/bin/style.js b/bin/style.js
deleted file mode 100644
index 909276ac45..0000000000
--- a/bin/style.js
+++ /dev/null
@@ -1,506 +0,0 @@
-"use strict";
-
-module.exports = {
- "version": 4,
- "sprite": "https://www.mapbox.com/mapbox-gl-styles/sprites/sprite",
- "glyphs": "http://mapbox.s3.amazonaws.com/gl-glyphs-256/{fontstack}/{range}.pbf",
- "constants": {
- "@red": "#f00",
- "@land": "#eee",
- "@water": "#999",
- "@park": "#bda",
- "@road": "#fefefe",
- "@border": "#6d90ab",
- "@wood": "#33AA66",
- "@building": "#ddd",
- "@building_outline": "#ccc",
- "@text": "#000000",
- "@satellite_brightness_low": 0,
- "@satellite_brightness_high": 1,
- "@satellite_saturation": 0,
- "@satellite_spin": 0,
- "@satellite_contrast": 0,
- "@road_blur": 1,
- "@stroke_width": 0.25
- },
- "sources": {
- "mapbox": {
- "type": "vector",
- "url": "mapbox://mapbox.mapbox-streets-v5",
- "maxZoom": 14
- }
- },
- "layers": [{
- "id": "bg",
- "type": "background",
- "style": {
- "background-color": "@land",
- "transition-background-color": {
- "duration": 500
- }
- },
- "style.satellite": {
- "transition-fill-color": {
- "duration": 500,
- "delay": 500
- },
- "fill-opacity": 0,
- "fill-color": "rgba(255,0,0,0)"
- }
- }, {
- "id": "park",
- "source": "mapbox",
- "source-layer": "landuse",
- "filter": { "class": "park" },
- "type": "fill",
- "style": {
- "fill-color": "@park"
- },
- "style.satellite": {
- "transition-fill-color": {
- "duration": 500
- },
- "fill-color": "rgba(0,0,0,0)"
- }
- }, {
- "id": "wood",
- "source": "mapbox",
- "source-layer": "landuse",
- "filter": { "class": "wood" },
- "type": "fill",
- "style": {
- "fill-color": "@wood",
- "fill-opacity": 0.08
- }
- }, {
- "id": "water",
- "source": "mapbox",
- "source-layer": "water",
- "type": "fill",
- "style": {
- "fill-color": "@water"
- },
- "style.satellite": {
- "fill-opacity": 0
- }
- }, {
- "id": "waterway",
- "source": "mapbox",
- "source-layer": "waterway",
- "type": "line",
- "style": {
- "line-color": "@water",
- "line-width": {
- "base": 1.01,
- "stops": [[7, 0.5], [19, 6.5]]
- }
- }
- }, {
- // "id": "roads",
- // "layers": [{
- "id": "tunnel_large_casing",
- "source": "mapbox",
- "source-layer": "tunnel",
- "filter": { "class": ["motorway", "main"] },
- "type": "line",
- "style": {
- "line-color": "rgba(0,0,0,0.5)",
- "line-width": 1,
- "line-offset": {
- "stops": [[12.11458208048225, 1], [19, 93.2862864971161]]
- }
- }
- }, {
- "id": "tunnel_regular_casing",
- "source": "mapbox",
- "source-layer": "tunnel",
- "filter": { "class": ["street", "street_limited"] },
- "type": "line",
- "style": {
- "line-color": "rgba(0,0,0,0.5)",
- "line-width": 1,
- "line-offset": {
- "stops": [[11.637356828788917, 1], [19, 31.287358856201173]]
- }
- }
- }, {
- "id": "tunnel_large",
- "ref": "tunnel_large_casing",
- "style": {
- "line-color": "rgba(255,255,255,0.5)",
- "line-width": {
- "stops": [[12.11458208048225, 1], [19, 93.2862864971161]]
- }
- }
- }, {
- "id": "tunnel_regular",
- "ref": "tunnel_regular_casing",
- "style": {
- "line-color": "rgba(255,255,255,0.5)",
- "line-width": {
- "stops": [[14.11458208048225, 1], [19, 29.787358856201173]]
- }
- }
- }, {
- "id": "road_large_casing",
- "source": "mapbox",
- "source-layer": "road",
- "filter": { "class": ["motorway", "main"] },
- "type": "line",
- "render": {
- "line-cap": "round",
- "line-join": "bevel"
- },
- "style": {
- "line-color": "rgba(154,154,154,0.5)",
- "line-width": {
- "stops": [[12.751938909271168, 4], [19, 100.00060082197189]]
- },
- "line-opacity": {
- "base": 1.01,
- "stops": [[13, 0], [14, 1]]
- },
- "transition-line-width": {
- "duration": 500
- },
- "line-blur": "@road_blur"
- },
- "style.satellite": {
- "line-width": {
- "stops": [[13.751938909271168, 4], [19, 57.57177189826965]]
- },
- "transition-line-width": {
- "duration": 500,
- "delay": 1000
- }
- },
- "style.test": {
- "line-width": {
- "stops": [[11.751938909271168, 4], [19, 174.25105143845082]]
- },
- "line-color": "rgba(255,0,0,1)",
- "transition-line-width": {
- "duration": 500
- },
- "transition-line-color": {
- "duration": 2000,
- "delay": 500
- }
- }
- }, {
- "id": "road_regular_casing",
- "source": "mapbox",
- "source-layer": "road",
- "filter": { "class": "street" },
- "type": "line",
- "render": {
- "line-cap": "round",
- "line-join": "bevel"
- },
- "style": {
- "line-color": "rgba(154,154,154,0.5)",
- "line-width": {
- "stops": [[10.637356828788917, 1], [19, 54.377877998352055]]
- },
- "line-opacity": {
- "base": 1.01,
- "stops": [[14.5, 0], [15.5, 1]]
- },
- "line-blur": "@road_blur"
- },
- "style.satellite": {
- "transition-line-width": {
- "duration": 500,
- "delay": 1000
- },
- "line-width": {
- "stops": [[11.637356828788917, 1], [19, 31.287358856201173]]
- }
- }
- }, {
- "id": "road_limited",
- "source": "mapbox",
- "source-layer": "road",
- "filter": { "class": "street_limited" },
- "type": "line",
- "render": {
- "line-cap": "round",
- "line-join": "bevel",
- "line-round-limit": 0.7
- },
- "style": {
- "line-dasharray": [10, 2],
- "line-color": "@road",
- "line-blur": "@road_blur",
- "line-width": {
- "stops": [[13.11458208048225, 1], [19, 52.877877998352055]]
- }
- }
- }, {
- "id": "road_large",
- "ref": "road_large_casing",
- "style": {
- "line-color": "@road",
- "line-blur": "@road_blur",
- "line-width": {
- "stops": [[12.11458208048225, 1], [19, 93.2862864971161]]
- }
- },
- "style.satellite": {
- "transition-line-width": {
- "duration": 500,
- "delay": 1000
- },
- "line-width": {
- "stops": [[13.11458208048225, 1], [19, 52.877877998352055]]
- }
- }
- }, {
- "id": "road_regular",
- "ref": "road_regular_casing",
- "style": {
- "line-color": "@road",
- "line-blur": "@road_blur",
- "line-width": {
- "stops": [[13.11458208048225, 1], [19, 52.877877998352055]]
- }
- },
- "style.satellite": {
- "transition-line-width": {
- "duration": 500,
- "delay": 1000
- },
- "line-width": {
- "stops": [[14.11458208048225, 1], [19, 29.787358856201173]]
- }
- }
- }, {
- "id": "path",
- "source": "mapbox",
- "source-layer": "road",
- "filter": { "class": "path" },
- "type": "line",
- "render": {
- "line-cap": "round",
- "line-join": "bevel"
- },
- "style": {
- "line-color": "rgba(255,255,255,1)",
- "line-dasharray": [2, 2],
- "line-width": 2
- }
- }, {
- "id": "rail",
- "source": "mapbox",
- "source-layer": "road",
- "filter": { "class": "major_rail" },
- "type": "line",
- "render": {
- "line-cap": "round",
- "line-join": "bevel"
- },
- "style": {
- "line-color": "rgba(76,76,76,0.8)",
- "line-dasharray": [2, 1],
- "line-width": 3
- }
- }, {
- "id": "tunnel_rail",
- "source": "mapbox",
- "source-layer": "tunnel",
- "filter": { "class": ["minor_rail", "major_rail"] },
- "type": "line",
- "style": {
- "line-color": "rgba(76,76,76,0.3)",
- "line-dasharray": [2, 1],
- "line-width": 3
- }
- // }],
- // "type": "composite",
- // "style": {
- // "composite-opacity": 1,
- // "transition-composite-opacity": {
- // "duration": 500
- // }
- // },
- // "style.satellite": {
- // "transition-composite-opacity": {
- // "duration": 500,
- // "delay": 500
- // },
- // "composite-opacity": 0.5
- // }
- }, {
- "id": "building",
- "source": "mapbox",
- "source-layer": "building",
- "type": "fill",
- "style": {
- "fill-color": "@building",
- "transition-fill-opacity": {
- "duration": 500,
- "delay": 500
- },
- "fill-opacity": {
- "base": 1.01,
- "stops": [[13, 0], [14, 1]]
- },
- "fill-outline-color": "@building_outline"
- },
- "style.satellite": {
- "fill-opacity": 0,
- "transition-fill-opacity": {
- "duration": 500
- }
- }
- }, {
- "id": "borders",
- "source": "mapbox",
- "source-layer": "admin",
- "type": "line",
- "style": {
- "line-color": "rgba(0,0,0,0.3)",
- "line-width": 1
- }
- }, {
- "id": "bridge_large_casing",
- "source": "mapbox",
- "source-layer": "bridge",
- "filter": { "class": ["motorway", "main"] },
- "type": "line",
- "style": {
- "line-color": "rgba(0,0,0,0.4)",
- "line-width": {
- "stops": [[2.6468052936710817, 1.51], [19, 95.7862864971161]]
- }
- }
- }, {
- "id": "bridge_large",
- "ref": "bridge_large_casing",
- "style": {
- "line-color": "@road",
- "line-width": {
- "stops": [[12.11458208048225, 1], [19, 93.2862864971161]]
- }
- }
- }, {
- "id": "park_poi",
- "source": "mapbox",
- "source-layer": "poi_label",
- "filter": { "maki": "park" },
- "type": "symbol",
- "render": {
- "icon-image": "dot.sdf",
- "icon-allow-overlap": true,
- "icon-ignore-placement": true
- },
- "style": {
- "icon-color": "#8f8",
- "icon-halo-color": "#393",
- "icon-halo-width": 0,
- "icon-halo-blur": 5,
- "icon-opacity": 0,
- "icon-halo-opacity": 0.9,
- "icon-translate": [2, -1],
- "icon-size": 15
- }
- }, {
- "id": "country_label",
- "source": "mapbox",
- "source-layer": "country_label",
- "filter": { "$type": "Point" },
- "type": "symbol",
- "render": {
- "text-field": "{name}",
- "text-font": "Open Sans Regular, Arial Unicode MS Regular",
- "text-max-size": 16,
- "text-path": "horizontal",
- "text-padding": 10
- },
- "style": {
- "text-halo-color": "rgba(255,255,255,0.7)",
- "text-halo-width": "@stroke_width",
- "text-color": "@text"
- }
- }, {
- "id": "place_label",
- "source": "mapbox",
- "source-layer": "place_label",
- "filter": { "$type": "Point" },
- "type": "symbol",
- "render": {
- "text-field": "{name}",
- "text-font": "Open Sans Semibold, Arial Unicode MS Regular",
- "text-max-size": 18,
- "text-path": "horizontal",
- "text-max-width": 2
- },
- "style": {
- "text-halo-color": "rgba(255,255,255,0.7)",
- "text-halo-width": "@stroke_width",
- "text-color": "@text"
- }
- }, {
- "id": "road_label",
- "source": "mapbox",
- "source-layer": "road_label",
- "filter": { "$type": "LineString" },
- "type": "symbol",
- "min-zoom": 14,
- "render": {
- "symbol-placement": "line",
- "text-field": "{name}",
- "text-font": "Open Sans Regular, Arial Unicode MS Regular",
- "text-max-size": 12,
- "text-path": "curve",
- "text-min-distance": 250,
- "text-max-angle": 1.04
- },
- "style": {
- "text-color": "@text",
- "text-halo-color": "rgba(255,255,255,0.7)",
- "text-halo-width": "@stroke_width",
- "text-size": {
- "stops": [[4.770835839035499, 8.01], [15.477225251693334, 12]]
- }
- }
- }, {
- "id": "poi",
- "source": "mapbox",
- "source-layer": "poi_label",
- "type": "symbol",
- "min-zoom": 15,
- "render": {
- "icon-size": 12,
- "icon-image": "{maki}-12",
- "text-font": "Open Sans Regular, Arial Unicode MS Regular",
- "text-max-size": 10,
- "text-offset": [0, 0.8],
- "text-path": "horizontal",
- "text-max-width": 7,
- "text-optional": true,
- "text-vertical-align": "top",
- "text-field": "{name}"
- },
- "style": {
- "text-size": 10,
- "text-color": "#333",
- "text-halo-color": "#eee",
- "icon-rotate-anchor": "viewport"
- }
- }, {
- "id": "road_markers",
- "source": "mapbox",
- "source-layer": "road",
- "filter": { "oneway": 1, "$type": "LineString" },
- "type": "symbol",
- "min-zoom": 16,
- "render": {
- "symbol-placement": "line",
- "symbol-min-distance": 150,
- "icon-image": "triangle-stroked-12",
- "icon-rotate": 90
- }
- }
- ]
-};
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp
index 0a94fc7ed2..be01b456cc 100644
--- a/include/mbgl/map/map.hpp
+++ b/include/mbgl/map/map.hpp
@@ -27,6 +27,7 @@ class StyleLayer;
class StyleLayerGroup;
class StyleSource;
class Texturepool;
+class FileSource;
class View;
class Map : private util::noncopyable {
@@ -64,7 +65,8 @@ public:
void toggleClass(const std::string &name);
const std::vector<std::string> &getAppliedClasses() const;
void setDefaultTransitionDuration(uint64_t duration_milliseconds = 0);
- void setStyleJSON(std::string newStyleJSON);
+ void setStyleURL(const std::string &url);
+ void setStyleJSON(std::string newStyleJSON, const std::string &base = "");
std::string getStyleJSON() const;
void setAccessToken(std::string access_token);
std::string getAccessToken() const;
@@ -111,6 +113,7 @@ public:
public:
inline const TransformState &getState() const { return state; }
+ inline std::shared_ptr<FileSource> getFileSource() const { return fileSource; }
inline std::shared_ptr<Style> getStyle() const { return style; }
inline std::shared_ptr<GlyphAtlas> getGlyphAtlas() { return glyphAtlas; }
inline std::shared_ptr<GlyphStore> getGlyphStore() { return glyphStore; }
@@ -151,6 +154,14 @@ private:
void renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass);
private:
+ bool async = false;
+ std::shared_ptr<uv::loop> loop;
+ uv_thread_t thread;
+ uv_async_t *async_terminate = nullptr;
+ uv_async_t *async_render = nullptr;
+ uv_async_t *async_cleanup = nullptr;
+
+private:
// If cleared, the next time the render thread attempts to render the map, it will *actually*
// render the map.
std::atomic_flag is_clean = ATOMIC_FLAG_INIT;
@@ -170,6 +181,8 @@ private:
Transform transform;
TransformState state;
+ std::shared_ptr<FileSource> fileSource;
+
std::shared_ptr<Style> style;
std::shared_ptr<GlyphAtlas> glyphAtlas;
std::shared_ptr<GlyphStore> glyphStore;
@@ -189,13 +202,6 @@ private:
std::set<std::shared_ptr<StyleSource>> activeSources;
-private:
- bool async = false;
- std::shared_ptr<uv::loop> loop;
- uv_thread_t thread;
- uv_async_t *async_terminate = nullptr;
- uv_async_t *async_render = nullptr;
- uv_async_t *async_cleanup = nullptr;
};
}
diff --git a/include/mbgl/map/sprite.hpp b/include/mbgl/map/sprite.hpp
index 969f15c161..967f1d6614 100644
--- a/include/mbgl/map/sprite.hpp
+++ b/include/mbgl/map/sprite.hpp
@@ -14,7 +14,7 @@
namespace mbgl {
-class Map;
+class FileSource;
class SpritePosition {
public:
@@ -33,11 +33,11 @@ public:
class Sprite : public std::enable_shared_from_this<Sprite>, private util::noncopyable {
private:
struct Key {};
- void load();
+ void load(const std::shared_ptr<FileSource> &fileSource);
public:
Sprite(const Key &, const std::string& base_url, float pixelRatio);
- static std::shared_ptr<Sprite> Create(const std::string& base_url, float pixelRatio);
+ static std::shared_ptr<Sprite> Create(const std::string& base_url, float pixelRatio, const std::shared_ptr<FileSource> &fileSource);
const SpritePosition &getSpritePosition(const std::string& name) const;
diff --git a/include/mbgl/text/glyph_store.hpp b/include/mbgl/text/glyph_store.hpp
index fbfd0dde67..e0c0391c73 100644
--- a/include/mbgl/text/glyph_store.hpp
+++ b/include/mbgl/text/glyph_store.hpp
@@ -14,6 +14,7 @@
namespace mbgl {
+class FileSource;
class SDFGlyph {
public:
@@ -46,7 +47,7 @@ private:
class GlyphPBF {
public:
- GlyphPBF(const std::string &glyphURL, const std::string &fontStack, GlyphRange glyphRange);
+ GlyphPBF(const std::string &glyphURL, const std::string &fontStack, GlyphRange glyphRange, const std::shared_ptr<FileSource> &fileSource);
void parse(FontStack &stack);
@@ -62,7 +63,7 @@ private:
// Manages Glyphrange PBF loading.
class GlyphStore {
public:
- GlyphStore();
+ GlyphStore(const std::shared_ptr<FileSource> &fileSource);
// Block until all specified GlyphRanges of the specified font stack are loaded.
void waitForGlyphRanges(const std::string &fontStack, const std::set<GlyphRange> &glyphRanges);
@@ -81,6 +82,7 @@ public:
std::string glyphURL;
private:
+ const std::shared_ptr<FileSource> fileSource;
std::unordered_map<std::string, std::map<GlyphRange, std::unique_ptr<GlyphPBF>>> ranges;
std::unordered_map<std::string, std::unique_ptr<FontStack>> stacks;
std::mutex mtx;
diff --git a/include/mbgl/util/filesource.hpp b/include/mbgl/util/filesource.hpp
new file mode 100644
index 0000000000..0d339cbac7
--- /dev/null
+++ b/include/mbgl/util/filesource.hpp
@@ -0,0 +1,45 @@
+#ifndef MBGL_UTIL_FILESOURCE
+#define MBGL_UTIL_FILESOURCE
+
+#include <string>
+#include <memory>
+#include <functional>
+
+namespace uv {
+class loop;
+}
+
+namespace mbgl {
+
+namespace platform {
+struct Response;
+}
+
+enum class ResourceType : uint8_t {
+ Unknown,
+ Tile,
+ Glyphs,
+ Image,
+ JSON
+};
+
+class FileSource {
+public:
+ FileSource();
+
+ void setBase(const std::string &value);
+ const std::string &getBase() const;
+
+ void load(ResourceType type, const std::string &url, std::function<void(platform::Response *)> callback, const std::shared_ptr<uv::loop> loop = nullptr);
+
+private:
+ // Stores a URL that is used as a base for loading resources with relative path.
+ std::string base;
+
+ // Stores the absolute path to the cache directory.
+ const std::string cache;
+};
+
+}
+
+#endif
diff --git a/include/mbgl/util/uv.hpp b/include/mbgl/util/uv.hpp
index a11d9b19cf..518e007afe 100644
--- a/include/mbgl/util/uv.hpp
+++ b/include/mbgl/util/uv.hpp
@@ -16,9 +16,23 @@
#pragma clang diagnostic pop
#endif
+#include <string>
+
namespace uv {
+inline std::string cwd() {
+ size_t max = 0;
+ std::string dir;
+ do {
+ max += 256;
+ dir.resize(max);
+ uv_cwd(const_cast<char *>(dir.data()), &max);
+ } while (max == dir.size());
+ dir.resize(max - 1);
+ return dir;
+}
+
class loop {
public:
inline loop() {
diff --git a/linux/main.cpp b/linux/main.cpp
index d51d2c8846..b1241d64e0 100644
--- a/linux/main.cpp
+++ b/linux/main.cpp
@@ -45,15 +45,6 @@ int main(int argc, char *argv[]) {
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
- // read default stylesheet from disk
- std::ifstream stylefile("./style.min.js");
- if (!stylefile.good()) {
- fprintf(stderr, "Cannot read style file\n");
- return 1;
- }
- std::stringstream stylejson;
- stylejson << stylefile.rdbuf();
-
view = new GLFWView();
mbgl::Map map(*view);
@@ -72,7 +63,8 @@ int main(int argc, char *argv[]) {
}
// Load style
- map.setStyleJSON(stylejson.str());
+ const std::string style = std::string("file://") + uv::cwd() + std::string("/styles/bright/style.json");
+ map.setStyleURL(style);
int ret = view->run();
diff --git a/linux/mapboxgl-app.gyp b/linux/mapboxgl-app.gyp
index 1d09b5444b..7b703ed75c 100644
--- a/linux/mapboxgl-app.gyp
+++ b/linux/mapboxgl-app.gyp
@@ -53,7 +53,7 @@
],
'dependencies': [
'../mapboxgl.gyp:mapboxgl',
- '../mapboxgl.gyp:copy_default_stylesheet',
+ '../mapboxgl.gyp:copy_styles',
'../mapboxgl.gyp:copy_certificate_bundle',
],
},
diff --git a/macosx/main.mm b/macosx/main.mm
index c61c9decb6..9ecc307c05 100644
--- a/macosx/main.mm
+++ b/macosx/main.mm
@@ -73,14 +73,17 @@ int main() {
GLFWView view;
mbgl::Map map(view);
+ URLHandler *handler = [[URLHandler alloc] init];
+ [handler setMap:&map];
+ NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
+ [appleEventManager setEventHandler:handler andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
+
// Load settings
mbgl::Settings_NSUserDefaults settings;
map.setLonLatZoom(settings.longitude, settings.latitude, settings.zoom);
map.setBearing(settings.bearing);
map.setDebug(settings.debug);
- URLHandler *handler = [[URLHandler alloc] init];
- [handler setMap:&map];
// Set access token if present
NSString *accessToken = [[NSProcessInfo processInfo] environment][@"MAPBOX_ACCESS_TOKEN"];
@@ -88,15 +91,9 @@ int main() {
if (accessToken) map.setAccessToken([accessToken cStringUsingEncoding:[NSString defaultCStringEncoding]]);
// Load style
- NSString *path = [[NSBundle mainBundle] pathForResource:@"style.min" ofType:@"js"];
- NSString *json = [NSString stringWithContentsOfFile:path
- encoding:[NSString defaultCStringEncoding]
- error:nil];
- map.setStyleJSON((std::string)[json cStringUsingEncoding:[NSString defaultCStringEncoding]]);
-
- NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
- [appleEventManager setEventHandler:handler andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
+ const std::string path([[[NSBundle mainBundle] pathForResource:@"style" ofType:@"json" inDirectory:@"styles/bright"] UTF8String]);
+ map.setStyleURL(std::string("file://") + path);
int ret = view.run();
diff --git a/macosx/mapboxgl-app.gyp b/macosx/mapboxgl-app.gyp
index 59dfc66470..480dc2a114 100644
--- a/macosx/mapboxgl-app.gyp
+++ b/macosx/mapboxgl-app.gyp
@@ -23,7 +23,6 @@
'mac_bundle': 1,
'mac_bundle_resources': [
'Icon.icns',
- '<(SHARED_INTERMEDIATE_DIR)/bin/style.min.js'
],
'xcode_settings': {
'SDKROOT': 'macosx',
@@ -40,7 +39,8 @@
'CLANG_ENABLE_OBJC_ARC': 'YES'
},
'dependencies': [
- '../mapboxgl.gyp:mapboxgl'
+ '../mapboxgl.gyp:bundle_styles',
+ '../mapboxgl.gyp:mapboxgl',
]
}
]
diff --git a/mapboxgl.gyp b/mapboxgl.gyp
index 6585dca3bc..b7944d6a1e 100644
--- a/mapboxgl.gyp
+++ b/mapboxgl.gyp
@@ -34,37 +34,38 @@
}
},
{
- 'target_name': 'build_stylesheet',
+ 'target_name': 'bundle_styles',
'type': 'none',
'hard_dependency': 1,
'actions': [
{
- 'action_name': 'Build Stylesheet',
- 'inputs': [
- 'bin/style.js',
- ],
- 'outputs': [
- '<(SHARED_INTERMEDIATE_DIR)/bin/style.min.js'
- ],
- 'action': ['<@(node)', 'bin/build-style.js', '<@(_inputs)', '<(SHARED_INTERMEDIATE_DIR)']
+ 'action_name': 'Touch Stylesheet Directory',
+ 'inputs': ['styles'],
+ 'outputs': ['styles'],
+ 'action': ['touch', 'styles'], # required for xcode http://openradar.appspot.com/7232149
}
],
'direct_dependent_settings': {
- 'sources': [
- '<(SHARED_INTERMEDIATE_DIR)/bin/style.min.js'
+ 'mac_bundle_resources': [
+ 'styles',
],
}
},
{
- 'target_name': 'copy_default_stylesheet',
+ 'target_name': 'copy_styles',
'type': 'none',
'hard_dependency': 1,
- 'dependencies': [
- 'build_stylesheet'
+ 'actions': [
+ {
+ 'action_name': 'Touch Stylesheet Directory',
+ 'inputs': ['styles'],
+ 'outputs': ['styles'],
+ 'action': ['touch', 'styles'], # required for xcode http://openradar.appspot.com/7232149
+ }
],
'copies': [
{
- 'files': [ '<(SHARED_INTERMEDIATE_DIR)/bin/style.min.js' ],
+ 'files': [ 'styles' ],
'destination': '<(PRODUCT_DIR)'
}
]
@@ -86,7 +87,6 @@
'type': 'static_library',
'hard_dependency': 1,
'dependencies': [
- 'build_stylesheet',
'shaders',
],
'sources': [
@@ -154,7 +154,6 @@
'type': 'static_library',
'hard_dependency': 1,
'dependencies': [
- 'build_stylesheet',
'shaders',
],
'sources': [
diff --git a/src/map/map.cpp b/src/map/map.cpp
index b7a9db505b..ef7b9548bd 100644
--- a/src/map/map.cpp
+++ b/src/map/map.cpp
@@ -18,6 +18,8 @@
#include <mbgl/style/style_bucket.hpp>
#include <mbgl/util/texturepool.hpp>
#include <mbgl/geometry/sprite_atlas.hpp>
+#include <mbgl/util/filesource.hpp>
+#include <mbgl/platform/log.hpp>
#include <algorithm>
#include <memory>
@@ -29,15 +31,16 @@
using namespace mbgl;
Map::Map(View& view)
- : view(view),
+ : loop(std::make_shared<uv::loop>()),
+ view(view),
transform(view),
+ fileSource(std::make_shared<FileSource>()),
style(std::make_shared<Style>()),
glyphAtlas(std::make_shared<GlyphAtlas>(1024, 1024)),
- glyphStore(std::make_shared<GlyphStore>()),
+ glyphStore(std::make_shared<GlyphStore>(fileSource)),
spriteAtlas(std::make_shared<SpriteAtlas>(512, 512)),
texturepool(std::make_shared<Texturepool>()),
- painter(*this),
- loop(std::make_shared<uv::loop>()) {
+ painter(*this) {
view.initialize(this);
@@ -184,10 +187,29 @@ void Map::setup() {
painter.setup();
}
-void Map::setStyleJSON(std::string newStyleJSON) {
+void Map::setStyleURL(const std::string &url) {
+ fileSource->load(ResourceType::JSON, url, [&](platform::Response *res) {
+ if (res->code == 200) {
+ // Calculate the base
+ const size_t pos = url.rfind('/');
+ std::string base = "";
+ if (pos != std::string::npos) {
+ base = url.substr(0, pos + 1);
+ }
+
+ this->setStyleJSON(res->body, base);
+ } else {
+ Log::Error(Event::Setup, "loading style failed: %d (%s)", res->code, res->error_message.c_str());
+ }
+ }, loop);
+}
+
+
+void Map::setStyleJSON(std::string newStyleJSON, const std::string &base) {
styleJSON.swap(newStyleJSON);
sprite.reset();
style->loadJSON((const uint8_t *)styleJSON.c_str());
+ fileSource->setBase(base);
glyphStore->setURL(style->glyph_url);
update();
}
@@ -208,7 +230,7 @@ std::shared_ptr<Sprite> Map::getSprite() {
const float pixelRatio = state.getPixelRatio();
const std::string &sprite_url = style->getSpriteURL();
if (!sprite || sprite->pixelRatio != pixelRatio) {
- sprite = Sprite::Create(sprite_url, pixelRatio);
+ sprite = Sprite::Create(sprite_url, pixelRatio, fileSource);
}
return sprite;
diff --git a/src/map/sprite.cpp b/src/map/sprite.cpp
index 68453de52b..f396fec07d 100644
--- a/src/map/sprite.cpp
+++ b/src/map/sprite.cpp
@@ -5,6 +5,7 @@
#include <string>
#include <mbgl/platform/platform.hpp>
+#include <mbgl/util/filesource.hpp>
#include <mbgl/util/uv.hpp>
#include <mbgl/util/std.hpp>
@@ -20,9 +21,9 @@ SpritePosition::SpritePosition(uint16_t x, uint16_t y, uint16_t width, uint16_t
pixelRatio(pixelRatio) {
}
-std::shared_ptr<Sprite> Sprite::Create(const std::string& base_url, float pixelRatio) {
+std::shared_ptr<Sprite> Sprite::Create(const std::string& base_url, float pixelRatio, const std::shared_ptr<FileSource> &fileSource) {
std::shared_ptr<Sprite> sprite(std::make_shared<Sprite>(Key(), base_url, pixelRatio));
- sprite->load();
+ sprite->load(fileSource);
return sprite;
}
@@ -49,7 +50,7 @@ Sprite::operator bool() const {
// Note: This is a separate function that must be called exactly once after creation
// The reason this isn't part of the constructor is that calling shared_from_this() in
// the constructor fails.
-void Sprite::load() {
+void Sprite::load(const std::shared_ptr<FileSource> &fileSource) {
if (!valid) {
// Treat a non-existent sprite as a successfully loaded empty sprite.
loadedImage = true;
@@ -60,7 +61,7 @@ void Sprite::load() {
std::shared_ptr<Sprite> sprite = shared_from_this();
- platform::request_http(jsonURL, [sprite](platform::Response *res) {
+ fileSource->load(ResourceType::JSON, jsonURL, [sprite](platform::Response *res) {
if (res->code == 200) {
sprite->body.swap(res->body);
sprite->parseJSON();
@@ -73,7 +74,7 @@ void Sprite::load() {
}
});
- platform::request_http(spriteURL, [sprite](platform::Response *res) {
+ fileSource->load(ResourceType::Image, spriteURL, [sprite](platform::Response *res) {
if (res->code == 200) {
sprite->image.swap(res->body);
sprite->parseImage();
diff --git a/src/map/tile_data.cpp b/src/map/tile_data.cpp
index 57ad6944bf..a94eb00fbf 100644
--- a/src/map/tile_data.cpp
+++ b/src/map/tile_data.cpp
@@ -4,6 +4,7 @@
#include <mbgl/util/token.hpp>
#include <mbgl/util/string.hpp>
+#include <mbgl/util/filesource.hpp>
using namespace mbgl;
@@ -38,7 +39,7 @@ void TileData::request() {
// Note: Somehow this feels slower than the change to request_http()
std::weak_ptr<TileData> weak_tile = shared_from_this();
- req = platform::request_http(url, [weak_tile](platform::Response *res) {
+ map.getFileSource()->load(ResourceType::Tile, url, [weak_tile](platform::Response *res) {
std::shared_ptr<TileData> tile = weak_tile.lock();
if (!tile || tile->state == State::obsolete) {
// noop. Tile is obsolete and we're now just waiting for the refcount
@@ -55,7 +56,7 @@ void TileData::request() {
fprintf(stderr, "[%s] tile loading failed: %d, %s\n", tile->url.c_str(), res->code, res->error_message.c_str());
#endif
}
- }, map.getLoop());
+ });
}
void TileData::cancel() {
diff --git a/src/text/glyph_store.cpp b/src/text/glyph_store.cpp
index fe4f7de9c2..4b90b51c24 100644
--- a/src/text/glyph_store.cpp
+++ b/src/text/glyph_store.cpp
@@ -7,6 +7,7 @@
#include <mbgl/util/constants.hpp>
#include <mbgl/util/token.hpp>
#include <mbgl/util/math.hpp>
+#include <mbgl/util/filesource.hpp>
#include <mbgl/platform/platform.hpp>
#include <uv.h>
#include <algorithm>
@@ -135,7 +136,7 @@ void FontStack::lineWrap(Shaping &shaping, const float lineHeight, const float m
align(shaping, justify, horizontalAlign, verticalAlign, maxLineLength, lineHeight, line);
}
-GlyphPBF::GlyphPBF(const std::string &glyphURL, const std::string &fontStack, GlyphRange glyphRange)
+GlyphPBF::GlyphPBF(const std::string &glyphURL, const std::string &fontStack, GlyphRange glyphRange, const std::shared_ptr<FileSource> &fileSource)
: future(promise.get_future().share())
{
// Load the glyph set URL
@@ -152,7 +153,7 @@ GlyphPBF::GlyphPBF(const std::string &glyphURL, const std::string &fontStack, Gl
fprintf(stderr, "%s\n", url.c_str());
#endif
- platform::request_http(url, [&](platform::Response *res) {
+ fileSource->load(ResourceType::Glyphs, url, [&](platform::Response *res) {
if (res->code != 200) {
// Something went wrong with loading the glyph pbf. Pass on the error to the future listeners.
const std::string msg = util::sprintf<255>("[ERROR] failed to load glyphs (%d): %s\n", res->code, res->error_message.c_str());
@@ -226,7 +227,7 @@ void GlyphPBF::parse(FontStack &stack) {
data.clear();
}
-GlyphStore::GlyphStore() {}
+GlyphStore::GlyphStore(const std::shared_ptr<FileSource> &fileSource) : fileSource(fileSource) {}
void GlyphStore::setURL(const std::string &url) {
glyphURL = url;
@@ -269,7 +270,7 @@ std::shared_future<GlyphPBF &> GlyphStore::loadGlyphRange(const std::string &fon
auto range_it = rangeSets.find(range);
if (range_it == rangeSets.end()) {
// We don't have this glyph set yet for this font stack.
- range_it = rangeSets.emplace(range, std::make_unique<GlyphPBF>(glyphURL, fontStack, range)).first;
+ range_it = rangeSets.emplace(range, std::make_unique<GlyphPBF>(glyphURL, fontStack, range, fileSource)).first;
}
return range_it->second->getFuture();
diff --git a/src/util/filesource.cpp b/src/util/filesource.cpp
new file mode 100644
index 0000000000..2bbf146b0c
--- /dev/null
+++ b/src/util/filesource.cpp
@@ -0,0 +1,58 @@
+#include <mbgl/util/filesource.hpp>
+#include <mbgl/platform/platform.hpp>
+
+#include <fstream>
+#include <sstream>
+
+namespace mbgl {
+
+FileSource::FileSource() {}
+
+
+void FileSource::setBase(const std::string &value) {
+ base = value;
+}
+
+const std::string &FileSource::getBase() const {
+ return base;
+}
+
+void FileSource::load(ResourceType type, const std::string &url, std::function<void(platform::Response *)> callback, const std::shared_ptr<uv::loop> loop) {
+ // convert relative URLs to absolute URLs
+
+ const std::string absoluteURL = [&]() -> std::string {
+ const size_t separator = url.find("://");
+ if (separator == std::string::npos) {
+ // Relative URL.
+ return base + url;
+ } else {
+ return url;
+ }
+ }();
+
+ const size_t separator = absoluteURL.find("://");
+ const std::string protocol = separator != std::string::npos ? absoluteURL.substr(0, separator) : "";
+
+ if (protocol == "file") {
+ // load from disk
+ const std::string path = absoluteURL.substr(separator + 3);
+ std::ifstream file(path);
+
+ platform::Response response(callback);
+ if (!file.good()) {
+ response.error_message = "file not found (" + path + ")";
+ } else {
+ std::stringstream data;
+ data << file.rdbuf();
+ response.code = 200;
+ response.body = data.str();
+ }
+
+ callback(&response);
+ } else {
+ // load from the internet
+ platform::request_http(absoluteURL, callback, loop);
+ }
+}
+
+} \ No newline at end of file
diff --git a/styles/bright/img/sprite.json b/styles/bright/img/sprite.json
new file mode 100644
index 0000000000..d8fd539f42
--- /dev/null
+++ b/styles/bright/img/sprite.json
@@ -0,0 +1,2818 @@
+{
+ "marker-24": {
+ "x": 0,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "zoo-24": {
+ "x": 26,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "-24": {
+ "x": 0,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "wetland-24": {
+ "x": 26,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "water-24": {
+ "x": 52,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airfield-24": {
+ "x": 52,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "waste-basket-24": {
+ "x": 0,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "warehouse-24": {
+ "x": 26,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airport-24": {
+ "x": 52,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "village-24": {
+ "x": 78,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-stroked-24": {
+ "x": 78,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "alcohol-shop-24": {
+ "x": 78,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-24": {
+ "x": 0,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "town-hall-24": {
+ "x": 26,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "america-football-24": {
+ "x": 52,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "town-24": {
+ "x": 78,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "toilets-24": {
+ "x": 104,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "art-gallery-24": {
+ "x": 104,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "theatre-24": {
+ "x": 104,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "tennis-24": {
+ "x": 104,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bakery-24": {
+ "x": 0,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "telephone-24": {
+ "x": 26,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "swimming-24": {
+ "x": 52,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bank-24": {
+ "x": 78,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "suitcase-24": {
+ "x": 104,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "star-stroked-24": {
+ "x": 130,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bar-24": {
+ "x": 130,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "star-24": {
+ "x": 130,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "square-stroked-24": {
+ "x": 130,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "baseball-24": {
+ "x": 130,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "square-24": {
+ "x": 0,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "soccer-24": {
+ "x": 26,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "basketball-24": {
+ "x": 52,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "slaughterhouse-24": {
+ "x": 78,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "skiing-24": {
+ "x": 104,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "beer-24": {
+ "x": 130,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "shop-24": {
+ "x": 156,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "scooter-24": {
+ "x": 156,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bicycle-24": {
+ "x": 156,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "school-24": {
+ "x": 156,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rocket-24": {
+ "x": 156,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "building-24": {
+ "x": 156,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "roadblock-24": {
+ "x": 0,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "restaurant-24": {
+ "x": 26,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bus-24": {
+ "x": 52,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-muslim-24": {
+ "x": 78,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-jewish-24": {
+ "x": 104,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cafe-24": {
+ "x": 130,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-christian-24": {
+ "x": 156,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-underground-24": {
+ "x": 182,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "camera-24": {
+ "x": 182,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-metro-24": {
+ "x": 182,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-light-24": {
+ "x": 182,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "campsite-24": {
+ "x": 182,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-above-24": {
+ "x": 182,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-24": {
+ "x": 182,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "car-24": {
+ "x": 0,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "prison-24": {
+ "x": 26,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "post-24": {
+ "x": 52,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cemetery-24": {
+ "x": 78,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "polling-place-24": {
+ "x": 104,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "police-24": {
+ "x": 130,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "chemist-24": {
+ "x": 156,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "playground-24": {
+ "x": 182,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "place-of-worship-24": {
+ "x": 208,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cinema-24": {
+ "x": 208,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "pitch-24": {
+ "x": 208,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "pharmacy-24": {
+ "x": 208,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-24": {
+ "x": 208,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "parking-garage-24": {
+ "x": 208,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "parking-24": {
+ "x": 208,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-stroked-24": {
+ "x": 208,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "park2-24": {
+ "x": 0,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "park-24": {
+ "x": 26,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "city-24": {
+ "x": 52,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "oil-well-24": {
+ "x": 78,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "music-24": {
+ "x": 104,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "clothing-store-24": {
+ "x": 130,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "museum-24": {
+ "x": 156,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "monument-24": {
+ "x": 182,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "college-24": {
+ "x": 208,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mobilephone-24": {
+ "x": 234,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "minefield-24": {
+ "x": 234,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "commercial-24": {
+ "x": 234,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "marker-stroked-24": {
+ "x": 234,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "london-underground-24": {
+ "x": 234,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cricket-24": {
+ "x": 234,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "logging-24": {
+ "x": 234,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "lodging-24": {
+ "x": 234,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cross-24": {
+ "x": 234,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "lighthouse-24": {
+ "x": 0,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "library-24": {
+ "x": 26,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dam-24": {
+ "x": 52,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "laundry-24": {
+ "x": 78,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "land-use-24": {
+ "x": 104,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "danger-24": {
+ "x": 130,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "industrial-24": {
+ "x": 156,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hospital-24": {
+ "x": 182,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "disability-24": {
+ "x": 208,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "heliport-24": {
+ "x": 234,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "heart-24": {
+ "x": 260,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dog-park-24": {
+ "x": 260,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "harbor-24": {
+ "x": 260,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hairdresser-24": {
+ "x": 260,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "embassy-24": {
+ "x": 260,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "grocery-24": {
+ "x": 260,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "golf-24": {
+ "x": 260,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "emergency-telephone-24": {
+ "x": 260,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "garden-24": {
+ "x": 260,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fuel-24": {
+ "x": 260,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "entrance-24": {
+ "x": 0,
+ "y": 260,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fire-station-24": {
+ "x": 26,
+ "y": 260,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "ferry-24": {
+ "x": 52,
+ "y": 260,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "farm-24": {
+ "x": 78,
+ "y": 260,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fast-food-24": {
+ "x": 104,
+ "y": 260,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "police-18": {
+ "x": 130,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fast-food-18": {
+ "x": 150,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "farm-18": {
+ "x": 170,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fire-station-18": {
+ "x": 190,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fuel-18": {
+ "x": 210,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "entrance-18": {
+ "x": 230,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "garden-18": {
+ "x": 250,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "golf-18": {
+ "x": 286,
+ "y": 0,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "emergency-telephone-18": {
+ "x": 286,
+ "y": 20,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "grocery-18": {
+ "x": 286,
+ "y": 40,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hairdresser-18": {
+ "x": 286,
+ "y": 60,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "embassy-18": {
+ "x": 286,
+ "y": 80,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "harbor-18": {
+ "x": 286,
+ "y": 100,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "heart-18": {
+ "x": 286,
+ "y": 120,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dog-park-18": {
+ "x": 286,
+ "y": 140,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "heliport-18": {
+ "x": 286,
+ "y": 160,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hospital-18": {
+ "x": 286,
+ "y": 180,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "disability-18": {
+ "x": 286,
+ "y": 200,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "industrial-18": {
+ "x": 286,
+ "y": 220,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "land-use-18": {
+ "x": 286,
+ "y": 240,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "danger-18": {
+ "x": 286,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "laundry-18": {
+ "x": 0,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "library-18": {
+ "x": 20,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dam-18": {
+ "x": 40,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "lighthouse-18": {
+ "x": 60,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "lodging-18": {
+ "x": 80,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cross-18": {
+ "x": 100,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "logging-18": {
+ "x": 120,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "london-underground-18": {
+ "x": 140,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cricket-18": {
+ "x": 160,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "marker-18": {
+ "x": 180,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "-18": {
+ "x": 200,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "marker-stroked-18": {
+ "x": 220,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "minefield-18": {
+ "x": 240,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "commercial-18": {
+ "x": 260,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mobilephone-18": {
+ "x": 280,
+ "y": 286,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "monument-18": {
+ "x": 306,
+ "y": 0,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "college-18": {
+ "x": 306,
+ "y": 20,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "motorway_1": {
+ "x": 0,
+ "y": 306,
+ "width": 19,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "motorway_2": {
+ "x": 21,
+ "y": 306,
+ "width": 24,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "motorway_3": {
+ "x": 47,
+ "y": 306,
+ "width": 29,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "motorway_4": {
+ "x": 78,
+ "y": 306,
+ "width": 34,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "motorway_5": {
+ "x": 114,
+ "y": 306,
+ "width": 39,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "motorway_6": {
+ "x": 155,
+ "y": 306,
+ "width": 44,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "museum-18": {
+ "x": 306,
+ "y": 40,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "music-18": {
+ "x": 306,
+ "y": 60,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "clothing-store-18": {
+ "x": 306,
+ "y": 80,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "oil-well-18": {
+ "x": 306,
+ "y": 100,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "park-18": {
+ "x": 306,
+ "y": 120,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "city-18": {
+ "x": 306,
+ "y": 140,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "park2-18": {
+ "x": 306,
+ "y": 160,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "parking-18": {
+ "x": 306,
+ "y": 180,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-stroked-18": {
+ "x": 306,
+ "y": 200,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "parking-garage-18": {
+ "x": 306,
+ "y": 220,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "pharmacy-18": {
+ "x": 306,
+ "y": 240,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-18": {
+ "x": 306,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "pitch-18": {
+ "x": 306,
+ "y": 280,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "place-of-worship-18": {
+ "x": 201,
+ "y": 306,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cinema-18": {
+ "x": 221,
+ "y": 306,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "playground-18": {
+ "x": 241,
+ "y": 306,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "ferry-18": {
+ "x": 261,
+ "y": 306,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "chemist-18": {
+ "x": 281,
+ "y": 306,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "polling-place-18": {
+ "x": 301,
+ "y": 306,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "post-18": {
+ "x": 326,
+ "y": 0,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cemetery-18": {
+ "x": 326,
+ "y": 20,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "prison-18": {
+ "x": 326,
+ "y": 40,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-18": {
+ "x": 326,
+ "y": 60,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "car-18": {
+ "x": 326,
+ "y": 80,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-above-18": {
+ "x": 326,
+ "y": 100,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-light-18": {
+ "x": 326,
+ "y": 120,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "campsite-18": {
+ "x": 326,
+ "y": 140,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-metro-18": {
+ "x": 326,
+ "y": 160,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-underground-18": {
+ "x": 326,
+ "y": 180,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "camera-18": {
+ "x": 326,
+ "y": 200,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-christian-18": {
+ "x": 326,
+ "y": 220,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-jewish-18": {
+ "x": 326,
+ "y": 240,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cafe-18": {
+ "x": 326,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-muslim-18": {
+ "x": 326,
+ "y": 280,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "restaurant-18": {
+ "x": 326,
+ "y": 300,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bus-18": {
+ "x": 0,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "roadblock-18": {
+ "x": 20,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rocket-18": {
+ "x": 40,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "building-18": {
+ "x": 60,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "school-18": {
+ "x": 80,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "scooter-18": {
+ "x": 100,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bicycle-18": {
+ "x": 120,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "shop-18": {
+ "x": 140,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "skiing-18": {
+ "x": 160,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "beer-18": {
+ "x": 180,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "slaughterhouse-18": {
+ "x": 200,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "soccer-18": {
+ "x": 220,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "basketball-18": {
+ "x": 240,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "square-18": {
+ "x": 260,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "square-stroked-18": {
+ "x": 280,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "baseball-18": {
+ "x": 300,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "star-18": {
+ "x": 320,
+ "y": 326,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "star-stroked-18": {
+ "x": 346,
+ "y": 0,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bar-18": {
+ "x": 346,
+ "y": 20,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "suitcase-18": {
+ "x": 346,
+ "y": 40,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "swimming-18": {
+ "x": 346,
+ "y": 60,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bank-18": {
+ "x": 346,
+ "y": 80,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "telephone-18": {
+ "x": 346,
+ "y": 100,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "tennis-18": {
+ "x": 346,
+ "y": 120,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bakery-18": {
+ "x": 346,
+ "y": 140,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "theatre-18": {
+ "x": 346,
+ "y": 160,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "toilets-18": {
+ "x": 346,
+ "y": 180,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "art-gallery-18": {
+ "x": 346,
+ "y": 200,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "town-18": {
+ "x": 346,
+ "y": 220,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "town-hall-18": {
+ "x": 346,
+ "y": 240,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "america-football-18": {
+ "x": 346,
+ "y": 260,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-18": {
+ "x": 346,
+ "y": 280,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-stroked-18": {
+ "x": 346,
+ "y": 300,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "alcohol-shop-18": {
+ "x": 346,
+ "y": 320,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "village-18": {
+ "x": 0,
+ "y": 346,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "warehouse-18": {
+ "x": 20,
+ "y": 346,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airport-18": {
+ "x": 40,
+ "y": 346,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "waste-basket-18": {
+ "x": 60,
+ "y": 346,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "water-18": {
+ "x": 80,
+ "y": 346,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airfield-18": {
+ "x": 100,
+ "y": 346,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "zoo-18": {
+ "x": 120,
+ "y": 346,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "wetland-18": {
+ "x": 140,
+ "y": 346,
+ "width": 18,
+ "height": 18,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cricket-12": {
+ "x": 270,
+ "y": 260,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "prison-12": {
+ "x": 160,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "minefield-12": {
+ "x": 174,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cemetery-12": {
+ "x": 188,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-12": {
+ "x": 202,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fuel-12": {
+ "x": 216,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "grocery-12": {
+ "x": 230,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-above-12": {
+ "x": 244,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "mobilephone-12": {
+ "x": 258,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "car-12": {
+ "x": 272,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-light-12": {
+ "x": 286,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "industrial-12": {
+ "x": 300,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "commercial-12": {
+ "x": 314,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-metro-12": {
+ "x": 328,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "monument-12": {
+ "x": 342,
+ "y": 346,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "campsite-12": {
+ "x": 366,
+ "y": 0,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rail-underground-12": {
+ "x": 366,
+ "y": 14,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "ferry-12": {
+ "x": 366,
+ "y": 28,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "disability-12": {
+ "x": 366,
+ "y": 42,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-christian-12": {
+ "x": 366,
+ "y": 56,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "land-use-12": {
+ "x": 366,
+ "y": 70,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "camera-12": {
+ "x": 366,
+ "y": 84,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-jewish-12": {
+ "x": 366,
+ "y": 98,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "emergency-telephone-12": {
+ "x": 366,
+ "y": 112,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hairdresser-12": {
+ "x": 366,
+ "y": 126,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "religious-muslim-12": {
+ "x": 366,
+ "y": 140,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "laundry-12": {
+ "x": 366,
+ "y": 154,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cafe-12": {
+ "x": 366,
+ "y": 168,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "restaurant-12": {
+ "x": 366,
+ "y": 182,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fire-station-12": {
+ "x": 366,
+ "y": 196,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "danger-12": {
+ "x": 366,
+ "y": 210,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "roadblock-12": {
+ "x": 366,
+ "y": 224,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "museum-12": {
+ "x": 366,
+ "y": 238,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bus-12": {
+ "x": 366,
+ "y": 252,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "rocket-12": {
+ "x": 366,
+ "y": 266,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "library-12": {
+ "x": 366,
+ "y": 280,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "college-12": {
+ "x": 366,
+ "y": 294,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "school-12": {
+ "x": 366,
+ "y": 308,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "music-12": {
+ "x": 366,
+ "y": 322,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "building-12": {
+ "x": 366,
+ "y": 336,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "scooter-12": {
+ "x": 366,
+ "y": 350,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "garden-12": {
+ "x": 0,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "harbor-12": {
+ "x": 14,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "shop-12": {
+ "x": 28,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "oil-well-12": {
+ "x": 42,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bicycle-12": {
+ "x": 56,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "skiing-12": {
+ "x": 70,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "lighthouse-12": {
+ "x": 84,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "clothing-store-12": {
+ "x": 98,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "slaughterhouse-12": {
+ "x": 112,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "park-12": {
+ "x": 126,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "beer-12": {
+ "x": 140,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "soccer-12": {
+ "x": 154,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "-12": {
+ "x": 168,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dam-12": {
+ "x": 182,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "square-12": {
+ "x": 196,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "park2-12": {
+ "x": 210,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "basketball-12": {
+ "x": 224,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "square-stroked-12": {
+ "x": 238,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "lodging-12": {
+ "x": 252,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "city-12": {
+ "x": 266,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "star-12": {
+ "x": 280,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "parking-12": {
+ "x": 294,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "baseball-12": {
+ "x": 308,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "star-stroked-12": {
+ "x": 322,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "embassy-12": {
+ "x": 336,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "heart-12": {
+ "x": 350,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "suitcase-12": {
+ "x": 364,
+ "y": 366,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "parking-garage-12": {
+ "x": 380,
+ "y": 0,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bar-12": {
+ "x": 380,
+ "y": 14,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "swimming-12": {
+ "x": 380,
+ "y": 28,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "logging-12": {
+ "x": 380,
+ "y": 42,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-stroked-12": {
+ "x": 380,
+ "y": 56,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "telephone-12": {
+ "x": 380,
+ "y": 70,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "pharmacy-12": {
+ "x": 380,
+ "y": 84,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bank-12": {
+ "x": 380,
+ "y": 98,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "tennis-12": {
+ "x": 380,
+ "y": 112,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "entrance-12": {
+ "x": 380,
+ "y": 126,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cross-12": {
+ "x": 380,
+ "y": 140,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "theatre-12": {
+ "x": 380,
+ "y": 154,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "pitch-12": {
+ "x": 380,
+ "y": 168,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "bakery-12": {
+ "x": 380,
+ "y": 182,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "toilets-12": {
+ "x": 380,
+ "y": 196,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "london-underground-12": {
+ "x": 380,
+ "y": 210,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "circle-12": {
+ "x": 380,
+ "y": 224,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "town-12": {
+ "x": 380,
+ "y": 238,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "place-of-worship-12": {
+ "x": 380,
+ "y": 252,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "art-gallery-12": {
+ "x": 380,
+ "y": 266,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "town-hall-12": {
+ "x": 380,
+ "y": 280,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "golf-12": {
+ "x": 380,
+ "y": 294,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "heliport-12": {
+ "x": 380,
+ "y": 308,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-12": {
+ "x": 380,
+ "y": 322,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "playground-12": {
+ "x": 380,
+ "y": 336,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "america-football-12": {
+ "x": 380,
+ "y": 350,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "triangle-stroked-12": {
+ "x": 380,
+ "y": 364,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "marker-12": {
+ "x": 0,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "cinema-12": {
+ "x": 14,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "village-12": {
+ "x": 28,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "police-12": {
+ "x": 42,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "alcohol-shop-12": {
+ "x": 56,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "warehouse-12": {
+ "x": 70,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "farm-12": {
+ "x": 84,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "dog-park-12": {
+ "x": 98,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "waste-basket-12": {
+ "x": 112,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "polling-place-12": {
+ "x": 126,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airport-12": {
+ "x": 140,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "water-12": {
+ "x": 154,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "marker-stroked-12": {
+ "x": 168,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "fast-food-12": {
+ "x": 182,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "post-12": {
+ "x": 196,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "wetland-12": {
+ "x": 210,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "hospital-12": {
+ "x": 224,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "airfield-12": {
+ "x": 238,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "zoo-12": {
+ "x": 252,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "chemist-12": {
+ "x": 266,
+ "y": 380,
+ "width": 12,
+ "height": 12,
+ "pixelRatio": 1,
+ "sdf": false
+ },
+ "wave": {
+ "x": 280,
+ "y": 380,
+ "width": 16,
+ "height": 8,
+ "pixelRatio": 1,
+ "sdf": false
+ }
+} \ No newline at end of file
diff --git a/styles/bright/img/sprite.png b/styles/bright/img/sprite.png
new file mode 100644
index 0000000000..34ef6124b8
--- /dev/null
+++ b/styles/bright/img/sprite.png
Binary files differ
diff --git a/styles/bright/img/sprite@2x.json b/styles/bright/img/sprite@2x.json
new file mode 100644
index 0000000000..b15134a6a8
--- /dev/null
+++ b/styles/bright/img/sprite@2x.json
@@ -0,0 +1,2818 @@
+{
+ "marker-24": {
+ "x": 0,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "zoo-24": {
+ "x": 50,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "-24": {
+ "x": 0,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "wetland-24": {
+ "x": 50,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "water-24": {
+ "x": 100,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airfield-24": {
+ "x": 100,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "waste-basket-24": {
+ "x": 0,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "warehouse-24": {
+ "x": 50,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airport-24": {
+ "x": 100,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "village-24": {
+ "x": 150,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-stroked-24": {
+ "x": 150,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "alcohol-shop-24": {
+ "x": 150,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-24": {
+ "x": 0,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "town-hall-24": {
+ "x": 50,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "america-football-24": {
+ "x": 100,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "town-24": {
+ "x": 150,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "toilets-24": {
+ "x": 200,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "art-gallery-24": {
+ "x": 200,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "theatre-24": {
+ "x": 200,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "tennis-24": {
+ "x": 200,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bakery-24": {
+ "x": 0,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "telephone-24": {
+ "x": 50,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "swimming-24": {
+ "x": 100,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bank-24": {
+ "x": 150,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "suitcase-24": {
+ "x": 200,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "star-stroked-24": {
+ "x": 250,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bar-24": {
+ "x": 250,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "star-24": {
+ "x": 250,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "square-stroked-24": {
+ "x": 250,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "baseball-24": {
+ "x": 250,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "square-24": {
+ "x": 0,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "soccer-24": {
+ "x": 50,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "basketball-24": {
+ "x": 100,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "slaughterhouse-24": {
+ "x": 150,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "skiing-24": {
+ "x": 200,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "beer-24": {
+ "x": 250,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "shop-24": {
+ "x": 300,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "scooter-24": {
+ "x": 300,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bicycle-24": {
+ "x": 300,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "school-24": {
+ "x": 300,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rocket-24": {
+ "x": 300,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "building-24": {
+ "x": 300,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "roadblock-24": {
+ "x": 0,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "restaurant-24": {
+ "x": 50,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bus-24": {
+ "x": 100,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-muslim-24": {
+ "x": 150,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-jewish-24": {
+ "x": 200,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cafe-24": {
+ "x": 250,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-christian-24": {
+ "x": 300,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-underground-24": {
+ "x": 350,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "camera-24": {
+ "x": 350,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-metro-24": {
+ "x": 350,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-light-24": {
+ "x": 350,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "campsite-24": {
+ "x": 350,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-above-24": {
+ "x": 350,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-24": {
+ "x": 350,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "car-24": {
+ "x": 0,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "prison-24": {
+ "x": 50,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "post-24": {
+ "x": 100,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cemetery-24": {
+ "x": 150,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "polling-place-24": {
+ "x": 200,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "police-24": {
+ "x": 250,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "chemist-24": {
+ "x": 300,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "playground-24": {
+ "x": 350,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "place-of-worship-24": {
+ "x": 400,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cinema-24": {
+ "x": 400,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "pitch-24": {
+ "x": 400,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "pharmacy-24": {
+ "x": 400,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-24": {
+ "x": 400,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "parking-garage-24": {
+ "x": 400,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "parking-24": {
+ "x": 400,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-stroked-24": {
+ "x": 400,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "park2-24": {
+ "x": 0,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "park-24": {
+ "x": 50,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "city-24": {
+ "x": 100,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "oil-well-24": {
+ "x": 150,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "music-24": {
+ "x": 200,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "clothing-store-24": {
+ "x": 250,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "museum-24": {
+ "x": 300,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "monument-24": {
+ "x": 350,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "college-24": {
+ "x": 400,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mobilephone-24": {
+ "x": 450,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "minefield-24": {
+ "x": 450,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "commercial-24": {
+ "x": 450,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "marker-stroked-24": {
+ "x": 450,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "london-underground-24": {
+ "x": 450,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cricket-24": {
+ "x": 450,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "logging-24": {
+ "x": 450,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "lodging-24": {
+ "x": 450,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cross-24": {
+ "x": 450,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "lighthouse-24": {
+ "x": 0,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "library-24": {
+ "x": 50,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dam-24": {
+ "x": 100,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "laundry-24": {
+ "x": 150,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "land-use-24": {
+ "x": 200,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "danger-24": {
+ "x": 250,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "industrial-24": {
+ "x": 300,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hospital-24": {
+ "x": 350,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "disability-24": {
+ "x": 400,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "heliport-24": {
+ "x": 450,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "heart-24": {
+ "x": 500,
+ "y": 0,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dog-park-24": {
+ "x": 500,
+ "y": 50,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "harbor-24": {
+ "x": 500,
+ "y": 100,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hairdresser-24": {
+ "x": 500,
+ "y": 150,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "embassy-24": {
+ "x": 500,
+ "y": 200,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "grocery-24": {
+ "x": 500,
+ "y": 250,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "golf-24": {
+ "x": 500,
+ "y": 300,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "emergency-telephone-24": {
+ "x": 500,
+ "y": 350,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "garden-24": {
+ "x": 500,
+ "y": 400,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fuel-24": {
+ "x": 500,
+ "y": 450,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "entrance-24": {
+ "x": 0,
+ "y": 500,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fire-station-24": {
+ "x": 50,
+ "y": 500,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "ferry-24": {
+ "x": 100,
+ "y": 500,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "farm-24": {
+ "x": 150,
+ "y": 500,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fast-food-24": {
+ "x": 200,
+ "y": 500,
+ "width": 48,
+ "height": 48,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "police-18": {
+ "x": 250,
+ "y": 500,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fast-food-18": {
+ "x": 288,
+ "y": 500,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "farm-18": {
+ "x": 326,
+ "y": 500,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fire-station-18": {
+ "x": 364,
+ "y": 500,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fuel-18": {
+ "x": 402,
+ "y": 500,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "entrance-18": {
+ "x": 440,
+ "y": 500,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "garden-18": {
+ "x": 478,
+ "y": 500,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "golf-18": {
+ "x": 550,
+ "y": 0,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "emergency-telephone-18": {
+ "x": 550,
+ "y": 38,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "grocery-18": {
+ "x": 550,
+ "y": 76,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hairdresser-18": {
+ "x": 550,
+ "y": 114,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "embassy-18": {
+ "x": 550,
+ "y": 152,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "harbor-18": {
+ "x": 550,
+ "y": 190,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "heart-18": {
+ "x": 550,
+ "y": 228,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dog-park-18": {
+ "x": 550,
+ "y": 266,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "heliport-18": {
+ "x": 550,
+ "y": 304,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hospital-18": {
+ "x": 550,
+ "y": 342,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "disability-18": {
+ "x": 550,
+ "y": 380,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "industrial-18": {
+ "x": 550,
+ "y": 418,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "land-use-18": {
+ "x": 550,
+ "y": 456,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "danger-18": {
+ "x": 550,
+ "y": 494,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "laundry-18": {
+ "x": 0,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "library-18": {
+ "x": 38,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dam-18": {
+ "x": 76,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "lighthouse-18": {
+ "x": 114,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "lodging-18": {
+ "x": 152,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cross-18": {
+ "x": 190,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "logging-18": {
+ "x": 228,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "london-underground-18": {
+ "x": 266,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cricket-18": {
+ "x": 304,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "marker-18": {
+ "x": 342,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "-18": {
+ "x": 380,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "marker-stroked-18": {
+ "x": 418,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "minefield-18": {
+ "x": 456,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "commercial-18": {
+ "x": 494,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mobilephone-18": {
+ "x": 532,
+ "y": 550,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "monument-18": {
+ "x": 588,
+ "y": 0,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "college-18": {
+ "x": 588,
+ "y": 38,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "motorway_1": {
+ "x": 0,
+ "y": 588,
+ "width": 38,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "motorway_2": {
+ "x": 40,
+ "y": 588,
+ "width": 48,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "motorway_3": {
+ "x": 90,
+ "y": 588,
+ "width": 58,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "motorway_4": {
+ "x": 150,
+ "y": 588,
+ "width": 68,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "motorway_5": {
+ "x": 220,
+ "y": 588,
+ "width": 78,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "motorway_6": {
+ "x": 300,
+ "y": 588,
+ "width": 88,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "museum-18": {
+ "x": 588,
+ "y": 76,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "music-18": {
+ "x": 588,
+ "y": 114,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "clothing-store-18": {
+ "x": 588,
+ "y": 152,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "oil-well-18": {
+ "x": 588,
+ "y": 190,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "park-18": {
+ "x": 588,
+ "y": 228,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "city-18": {
+ "x": 588,
+ "y": 266,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "park2-18": {
+ "x": 588,
+ "y": 304,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "parking-18": {
+ "x": 588,
+ "y": 342,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-stroked-18": {
+ "x": 588,
+ "y": 380,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "parking-garage-18": {
+ "x": 588,
+ "y": 418,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "pharmacy-18": {
+ "x": 588,
+ "y": 456,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-18": {
+ "x": 588,
+ "y": 494,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "pitch-18": {
+ "x": 588,
+ "y": 532,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "place-of-worship-18": {
+ "x": 390,
+ "y": 588,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cinema-18": {
+ "x": 428,
+ "y": 588,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "playground-18": {
+ "x": 466,
+ "y": 588,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "ferry-18": {
+ "x": 504,
+ "y": 588,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "chemist-18": {
+ "x": 542,
+ "y": 588,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "polling-place-18": {
+ "x": 580,
+ "y": 588,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "post-18": {
+ "x": 626,
+ "y": 0,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cemetery-18": {
+ "x": 626,
+ "y": 38,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "prison-18": {
+ "x": 626,
+ "y": 76,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-18": {
+ "x": 626,
+ "y": 114,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "car-18": {
+ "x": 626,
+ "y": 152,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-above-18": {
+ "x": 626,
+ "y": 190,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-light-18": {
+ "x": 626,
+ "y": 228,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "campsite-18": {
+ "x": 626,
+ "y": 266,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-metro-18": {
+ "x": 626,
+ "y": 304,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-underground-18": {
+ "x": 626,
+ "y": 342,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "camera-18": {
+ "x": 626,
+ "y": 380,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-christian-18": {
+ "x": 626,
+ "y": 418,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-jewish-18": {
+ "x": 626,
+ "y": 456,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cafe-18": {
+ "x": 626,
+ "y": 494,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-muslim-18": {
+ "x": 626,
+ "y": 532,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "restaurant-18": {
+ "x": 626,
+ "y": 570,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bus-18": {
+ "x": 0,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "roadblock-18": {
+ "x": 38,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rocket-18": {
+ "x": 76,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "building-18": {
+ "x": 114,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "school-18": {
+ "x": 152,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "scooter-18": {
+ "x": 190,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bicycle-18": {
+ "x": 228,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "shop-18": {
+ "x": 266,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "skiing-18": {
+ "x": 304,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "beer-18": {
+ "x": 342,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "slaughterhouse-18": {
+ "x": 380,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "soccer-18": {
+ "x": 418,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "basketball-18": {
+ "x": 456,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "square-18": {
+ "x": 494,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "square-stroked-18": {
+ "x": 532,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "baseball-18": {
+ "x": 570,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "star-18": {
+ "x": 608,
+ "y": 626,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "star-stroked-18": {
+ "x": 664,
+ "y": 0,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bar-18": {
+ "x": 664,
+ "y": 38,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "suitcase-18": {
+ "x": 664,
+ "y": 76,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "swimming-18": {
+ "x": 664,
+ "y": 114,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bank-18": {
+ "x": 664,
+ "y": 152,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "telephone-18": {
+ "x": 664,
+ "y": 190,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "tennis-18": {
+ "x": 664,
+ "y": 228,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bakery-18": {
+ "x": 664,
+ "y": 266,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "theatre-18": {
+ "x": 664,
+ "y": 304,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "toilets-18": {
+ "x": 664,
+ "y": 342,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "art-gallery-18": {
+ "x": 664,
+ "y": 380,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "town-18": {
+ "x": 664,
+ "y": 418,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "town-hall-18": {
+ "x": 664,
+ "y": 456,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "america-football-18": {
+ "x": 664,
+ "y": 494,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-18": {
+ "x": 664,
+ "y": 532,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-stroked-18": {
+ "x": 664,
+ "y": 570,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "alcohol-shop-18": {
+ "x": 664,
+ "y": 608,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "village-18": {
+ "x": 0,
+ "y": 664,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "warehouse-18": {
+ "x": 38,
+ "y": 664,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airport-18": {
+ "x": 76,
+ "y": 664,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "waste-basket-18": {
+ "x": 114,
+ "y": 664,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "water-18": {
+ "x": 152,
+ "y": 664,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airfield-18": {
+ "x": 190,
+ "y": 664,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "zoo-18": {
+ "x": 228,
+ "y": 664,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "wetland-18": {
+ "x": 266,
+ "y": 664,
+ "width": 36,
+ "height": 36,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cricket-12": {
+ "x": 516,
+ "y": 500,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "prison-12": {
+ "x": 304,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "minefield-12": {
+ "x": 330,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cemetery-12": {
+ "x": 356,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-12": {
+ "x": 382,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fuel-12": {
+ "x": 408,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "grocery-12": {
+ "x": 434,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-above-12": {
+ "x": 460,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "mobilephone-12": {
+ "x": 486,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "car-12": {
+ "x": 512,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-light-12": {
+ "x": 538,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "industrial-12": {
+ "x": 564,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "commercial-12": {
+ "x": 590,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-metro-12": {
+ "x": 616,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "monument-12": {
+ "x": 642,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "campsite-12": {
+ "x": 668,
+ "y": 664,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rail-underground-12": {
+ "x": 702,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "ferry-12": {
+ "x": 702,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "disability-12": {
+ "x": 702,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-christian-12": {
+ "x": 702,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "land-use-12": {
+ "x": 702,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "camera-12": {
+ "x": 702,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-jewish-12": {
+ "x": 702,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "emergency-telephone-12": {
+ "x": 702,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hairdresser-12": {
+ "x": 702,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "religious-muslim-12": {
+ "x": 702,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "laundry-12": {
+ "x": 702,
+ "y": 260,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cafe-12": {
+ "x": 702,
+ "y": 286,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "restaurant-12": {
+ "x": 702,
+ "y": 312,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fire-station-12": {
+ "x": 702,
+ "y": 338,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "danger-12": {
+ "x": 702,
+ "y": 364,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "roadblock-12": {
+ "x": 702,
+ "y": 390,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "museum-12": {
+ "x": 702,
+ "y": 416,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bus-12": {
+ "x": 702,
+ "y": 442,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "rocket-12": {
+ "x": 702,
+ "y": 468,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "library-12": {
+ "x": 702,
+ "y": 494,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "college-12": {
+ "x": 702,
+ "y": 520,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "school-12": {
+ "x": 702,
+ "y": 546,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "music-12": {
+ "x": 702,
+ "y": 572,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "building-12": {
+ "x": 702,
+ "y": 598,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "scooter-12": {
+ "x": 702,
+ "y": 624,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "garden-12": {
+ "x": 702,
+ "y": 650,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "harbor-12": {
+ "x": 702,
+ "y": 676,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "shop-12": {
+ "x": 0,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "oil-well-12": {
+ "x": 26,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bicycle-12": {
+ "x": 52,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "skiing-12": {
+ "x": 78,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "lighthouse-12": {
+ "x": 104,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "clothing-store-12": {
+ "x": 130,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "slaughterhouse-12": {
+ "x": 156,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "park-12": {
+ "x": 182,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "beer-12": {
+ "x": 208,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "soccer-12": {
+ "x": 234,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "-12": {
+ "x": 260,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dam-12": {
+ "x": 286,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "square-12": {
+ "x": 312,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "park2-12": {
+ "x": 338,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "basketball-12": {
+ "x": 364,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "square-stroked-12": {
+ "x": 390,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "lodging-12": {
+ "x": 416,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "city-12": {
+ "x": 442,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "star-12": {
+ "x": 468,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "parking-12": {
+ "x": 494,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "baseball-12": {
+ "x": 520,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "star-stroked-12": {
+ "x": 546,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "embassy-12": {
+ "x": 572,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "heart-12": {
+ "x": 598,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "suitcase-12": {
+ "x": 624,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "parking-garage-12": {
+ "x": 650,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bar-12": {
+ "x": 676,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "swimming-12": {
+ "x": 702,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "logging-12": {
+ "x": 728,
+ "y": 0,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-stroked-12": {
+ "x": 728,
+ "y": 26,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "telephone-12": {
+ "x": 728,
+ "y": 52,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "pharmacy-12": {
+ "x": 728,
+ "y": 78,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bank-12": {
+ "x": 728,
+ "y": 104,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "tennis-12": {
+ "x": 728,
+ "y": 130,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "entrance-12": {
+ "x": 728,
+ "y": 156,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cross-12": {
+ "x": 728,
+ "y": 182,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "theatre-12": {
+ "x": 728,
+ "y": 208,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "pitch-12": {
+ "x": 728,
+ "y": 234,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "bakery-12": {
+ "x": 728,
+ "y": 260,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "toilets-12": {
+ "x": 728,
+ "y": 286,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "london-underground-12": {
+ "x": 728,
+ "y": 312,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "circle-12": {
+ "x": 728,
+ "y": 338,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "town-12": {
+ "x": 728,
+ "y": 364,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "place-of-worship-12": {
+ "x": 728,
+ "y": 390,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "art-gallery-12": {
+ "x": 728,
+ "y": 416,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "town-hall-12": {
+ "x": 728,
+ "y": 442,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "golf-12": {
+ "x": 728,
+ "y": 468,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "heliport-12": {
+ "x": 728,
+ "y": 494,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-12": {
+ "x": 728,
+ "y": 520,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "playground-12": {
+ "x": 728,
+ "y": 546,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "america-football-12": {
+ "x": 728,
+ "y": 572,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "triangle-stroked-12": {
+ "x": 728,
+ "y": 598,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "marker-12": {
+ "x": 728,
+ "y": 624,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "cinema-12": {
+ "x": 728,
+ "y": 650,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "village-12": {
+ "x": 728,
+ "y": 676,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "police-12": {
+ "x": 728,
+ "y": 702,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "alcohol-shop-12": {
+ "x": 0,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "warehouse-12": {
+ "x": 26,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "farm-12": {
+ "x": 52,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "dog-park-12": {
+ "x": 78,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "waste-basket-12": {
+ "x": 104,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "polling-place-12": {
+ "x": 130,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airport-12": {
+ "x": 156,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "water-12": {
+ "x": 182,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "marker-stroked-12": {
+ "x": 208,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "fast-food-12": {
+ "x": 234,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "post-12": {
+ "x": 260,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "wetland-12": {
+ "x": 286,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "hospital-12": {
+ "x": 312,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "airfield-12": {
+ "x": 338,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "zoo-12": {
+ "x": 364,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "chemist-12": {
+ "x": 390,
+ "y": 728,
+ "width": 24,
+ "height": 24,
+ "pixelRatio": 2,
+ "sdf": false
+ },
+ "wave": {
+ "x": 664,
+ "y": 646,
+ "width": 32,
+ "height": 16,
+ "pixelRatio": 2,
+ "sdf": false
+ }
+} \ No newline at end of file
diff --git a/styles/bright/img/sprite@2x.png b/styles/bright/img/sprite@2x.png
new file mode 100644
index 0000000000..ef7c1f45d1
--- /dev/null
+++ b/styles/bright/img/sprite@2x.png
Binary files differ
diff --git a/styles/bright/style.json b/styles/bright/style.json
new file mode 100644
index 0000000000..1ee81a499b
--- /dev/null
+++ b/styles/bright/style.json
@@ -0,0 +1,1336 @@
+{
+ "version": 4,
+ "sprite": "img/sprite",
+ "glyphs": "https://mapbox.s3.amazonaws.com/gl-glyphs-256/{fontstack}/{range}.pbf",
+ "constants": {
+ "@name": "{name_en}",
+ "@sans": "Open Sans Regular, Arial Unicode MS Regular",
+ "@sans_it": "Open Sans Italic, Arial Unicode MS Regular",
+ "@sans_md": "Open Sans Semibold, Arial Unicode MS Bold",
+ "@sans_bd": "Open Sans Bold, Arial Unicode MS Bold",
+ "@land": "#f8f4f0",
+ "@water": "#a0c8f0",
+ "@admin": "#446",
+ "@park": "#d8e8c8",
+ "@cemetary": "#e0e4dd",
+ "@hospital": "#fde",
+ "@school": "#f0e8f8",
+ "@wood": "#6a4",
+ "@building": "#f2eae2",
+ "@building_shadow": "#dfdbd7",
+ "@building_color_transition": {
+ "base": 1,
+ "stops": [[15.5, "#f2eae2"], [16, "#dfdbd7"]]
+ },
+ "@building_opacity": {"base": 1, "stops": [[15, 0], [16, 1]]},
+ "@aeroway": "#f0ede9",
+ "@motorway": "#fc8",
+ "@motorway_casing": "#e9ac77",
+ "@motorway_tunnel": "#ffdaa6",
+ "@main": "#fea",
+ "@main_tunnel": "#fff4c6",
+ "@street": "#fff",
+ "@street_limited": "#f3f3f3",
+ "@street_casing": "#cfcdca",
+ "@path": "#cba",
+ "@rail": "#bbb",
+ "@text": "#334",
+ "@text_halo": "rgba(255,255,255,0.8)",
+ "@marine_text": "#74aee9",
+ "@marine_text_halo": "rgba(255,255,255,0.7)",
+ "@poi_text": "#666",
+ "@poi_text_halo": "#ffffff",
+ "@maki": "#666",
+ "@point_translate": [0, -30],
+ "@tunnel_line_dasharray": [{
+ "base": 1.5, "stops": [[12, 6], [20, 9]]
+ }, {
+ "base": 1.5, "stops": [[12, 2], [20, 3]]
+ }],
+ "@motorway_width": {"base": 1.2, "stops": [[6.5, 0], [7, 0.5], [20, 18]]},
+ "@motorway_casing_width": {"base": 1.2, "stops": [[5, 0.4], [6, 0.6], [7, 1.5], [20, 22]]},
+ "@motorway_link_width": {"base": 1.2, "stops": [[12.5, 0], [13, 1.5], [20, 10]]},
+ "@motorway_link_casing_width": {"base": 1.2, "stops": [[12, 1], [13, 3], [20, 13]]},
+ "@main_width": {"base": 1.2, "stops": [[6.5, 0], [7, 0.5], [20, 14]]},
+ "@main_casing_width": {"base": 1.2, "stops": [[5, 0.1], [6, 0.2], [7, 1.5], [20, 18]]},
+ "@street_width": {"base": 1.2, "stops": [[13.5, 0], [14, 2.5], [20, 11.5]]},
+ "@street_casing_width": {"base": 1.2, "stops": [[12, 0.5], [13, 1], [14, 4], [20, 15]]},
+ "@street_casing_opacity": {"stops": [[12, 0], [12.5, 1]]},
+ "@service_casing_width": {"base": 1.2, "stops": [[15, 1], [16, 4], [20, 11]]},
+ "@service_width": {"base": 1.2, "stops": [[15.5, 0], [16, 2], [20, 7.5]]},
+ "@path_width": {"base": 1.2, "stops": [[15, 1.2], [20, 4]]},
+ "@path_line_dasharray": [{
+ "base": 1.2, "stops": [[15, 2], [20, 4]]
+ },{
+ "base": 1.2, "stops": [[15, 1], [20, 2]]
+ }],
+ "@rail_width": {"base": 1.4, "stops": [[14, 0.4], [15, 0.75], [20, 2]]},
+ "@rail_hatch_width": {"base": 1.4, "stops": [[14.5, 0], [15, 3], [20, 8]]},
+ "@rail_hatch_line_dasharray": [2, 30],
+ "@admin_level_3_width": {
+ "base": 1,
+ "stops": [[4, 0.4], [5, 1], [12, 3]]
+ },
+ "@admin_level_2_width": {
+ "base": 1,
+ "stops": [[4, 1.4], [5, 2], [12, 8]]
+ }
+ },
+ "sources": {
+ "mapbox": {
+ "type": "vector",
+ "url": "mapbox://mapbox.mapbox-streets-v6-dev",
+ "maxZoom": 15
+ }
+ },
+ "layers": [{
+ "id": "background",
+ "style": {
+ "background-color": "@land"
+ },
+ "type": "background"
+ }, {
+ "id": "landuse_park",
+ "source": "mapbox",
+ "source-layer": "landuse",
+ "filter": { "class": "park" },
+ "style": {
+ "fill-color": "@park"
+ },
+ "type": "fill"
+ }, {
+ "id": "landuse_cemetary",
+ "source": "mapbox",
+ "source-layer": "landuse",
+ "filter": { "class": "cemetary" },
+ "style": {
+ "fill-color": "@cemetary"
+ },
+ "type": "fill"
+ }, {
+ "id": "landuse_hospital",
+ "source": "mapbox",
+ "source-layer": "landuse",
+ "filter": { "class": "hospital" },
+ "style": {
+ "fill-color": "@hospital"
+ },
+ "type": "fill"
+ }, {
+ "id": "landuse_school",
+ "source": "mapbox",
+ "source-layer": "landuse",
+ "filter": { "class": "school" },
+ "style": {
+ "fill-color": "@school"
+ },
+ "type": "fill"
+ }, {
+ "id": "landuse_wood",
+ "source": "mapbox",
+ "source-layer": "landuse",
+ "filter": { "class": "wood" },
+ "style": {
+ "fill-color": "@wood",
+ "fill-opacity": 0.1
+ },
+ "type": "fill"
+ }, {
+ "id": "waterway",
+ "source": "mapbox",
+ "source-layer": "waterway",
+ "filter": {
+ "class": {
+ "!=": ["river", "stream", "canal"]
+ }
+ },
+ "render": {
+ "line-cap": "round"
+ },
+ "style": {
+ "line-color": "@water",
+ "line-width": {
+ "base": 1.3,
+ "stops": [[13, 0.5], [20, 2]]
+ }
+ },
+ "type": "line"
+ }, {
+ "id": "waterway_river",
+ "source": "mapbox",
+ "source-layer": "waterway",
+ "filter": { "class": "river" },
+ "render": {
+ "line-cap": "round"
+ },
+ "style": {
+ "line-color": "@water",
+ "line-width": {
+ "base": 1.2,
+ "stops": [[11, 0.5], [20, 6]]
+ }
+ },
+ "type": "line"
+ }, {
+ "id": "waterway_stream_canal",
+ "source": "mapbox",
+ "source-layer": "waterway",
+ "filter": { "class": ["stream", "canal"] },
+ "render": {
+ "line-cap": "round"
+ },
+ "style": {
+ "line-color": "@water",
+ "line-width": {
+ "base": 1.3,
+ "stops": [[13, 0.5], [20, 6]]
+ }
+ },
+ "type": "line"
+ }, {
+ "id": "water",
+ "source": "mapbox",
+ "source-layer": "water",
+ "style": {
+ "fill-color": "@water"
+ },
+ "type": "fill"
+ }, {
+ "id": "water_offset",
+ "source": "mapbox",
+ "source-layer": "water",
+ "type": "fill",
+ "style": {
+ "fill-color": "white",
+ "fill-opacity": 0.3,
+ "fill-translate": [0, 2.5]
+ }
+ }, {
+ "id": "water_pattern",
+ "ref": "water",
+ "style": {
+ "fill-image": "wave",
+ "fill-translate": [0, 2.5]
+ }
+ }, {
+ "id": "aeroway_fill",
+ "source": "mapbox",
+ "source-layer": "aeroway",
+ "min-zoom": 11,
+ "filter": {
+ "$type": "Polygon"
+ },
+ "style": {
+ "fill-color": "@aeroway",
+ "fill-opacity": 0.7
+ },
+ "type": "fill"
+ }, {
+ "id": "aeroway_runway",
+ "source": "mapbox",
+ "source-layer": "aeroway",
+ "min-zoom": 11,
+ "filter": {
+ "$type": "LineString",
+ "type": "runway" },
+ "style": {
+ "line-color": "@aeroway",
+ "line-width": {
+ "base": 1.2,
+ "stops": [[11, 3], [20, 16]]
+ }
+ },
+ "type": "line"
+ }, {
+ "id": "aeroway_taxiway",
+ "source": "mapbox",
+ "source-layer": "aeroway",
+ "min-zoom": 11,
+ "filter": {
+ "$type": "LineString",
+ "type": "taxiway" },
+ "style": {
+ "line-color": "@aeroway",
+ "line-width": {
+ "base": 1.2,
+ "stops": [[11, 0.5], [20, 6]]
+ }
+ },
+ "type": "line"
+ }, {
+ "id": "building",
+ "source": "mapbox",
+ "source-layer": "building",
+ "style": {
+ "fill-color": "@building_color_transition"
+ },
+ "type": "fill"
+ }, {
+ "id": "building_top",
+ "ref": "building",
+ "style": {
+ "fill-color": "@building",
+ "fill-opacity": "@building_opacity",
+ "fill-translate": [{
+ "base": 1,
+ "stops": [[15, 0], [16, -2] ]
+ }, {
+ "base": 1,
+ "stops": [[15, 0], [16, -2] ]
+ }],
+ "fill-outline-color": "@building_shadow"
+ }
+ }, {
+ "id": "tunnel_motorway_link_casing",
+ "source": "mapbox",
+ "source-layer": "tunnel",
+ "filter": { "class": "motorway_link" },
+ "render": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@motorway_casing",
+ "line-dasharray": "@tunnel_line_dasharray",
+ "line-width": "@motorway_link_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "tunnel_service_casing",
+ "source": "mapbox",
+ "source-layer": "tunnel",
+ "filter": { "class": "service" },
+ "render": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@street_casing",
+ "line-dasharray": "@tunnel_line_dasharray",
+ "line-width": "@service_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "tunnel_street_casing",
+ "source": "mapbox",
+ "source-layer": "tunnel",
+ "filter": { "class": ["street", "street_limited"] },
+ "render": {
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@street_casing",
+ "line-dasharray": [7, 2],
+ "line-width": "@street_casing_width",
+ "line-opacity": "@street_casing_opacity"
+ },
+ "type": "line"
+ }, {
+ "id": "tunnel_main_casing",
+ "source": "mapbox",
+ "source-layer": "tunnel",
+ "filter": { "class": "main" },
+ "render": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@motorway_casing",
+ "line-dasharray": "@tunnel_line_dasharray",
+ "line-width": "@main_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "tunnel_motorway_casing",
+ "source": "mapbox",
+ "source-layer": "tunnel",
+ "filter": { "class": "motorway" },
+ "render": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@motorway_casing",
+ "line-dasharray": "@tunnel_line_dasharray",
+ "line-width": "@motorway_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "tunnel_path",
+ "source": "mapbox",
+ "source-layer": "tunnel",
+ "filter": { "class": "path" },
+ "type": "line",
+ "style": {
+ "line-color": "@path",
+ "line-dasharray": "@path_line_dasharray",
+ "line-width": "@path_width"
+ }
+ }, {
+ "id": "tunnel_motorway_link",
+ "ref": "tunnel_motorway_link_casing",
+ "style": {
+ "line-color": "@motorway",
+ "line-width": "@motorway_link_width"
+ }
+ }, {
+ "id": "tunnel_service",
+ "ref": "tunnel_service_casing",
+ "style": {
+ "line-color": "@street",
+ "line-width": "@service_width"
+ }
+ }, {
+ "id": "tunnel_street",
+ "ref": "tunnel_street_casing",
+ "style": {
+ "line-color": "@street",
+ "line-width": "@street_width"
+ }
+ }, {
+ "id": "tunnel_main",
+ "ref": "tunnel_main_casing",
+ "style": {
+ "line-color": "@main_tunnel",
+ "line-width": "@main_width"
+ }
+ }, {
+ "id": "tunnel_motorway",
+ "ref": "tunnel_motorway_casing",
+ "style": {
+ "line-color": "@motorway_tunnel",
+ "line-width": "@motorway_width"
+ }
+ }, {
+ "id": "tunnel_major_rail",
+ "source": "mapbox",
+ "source-layer": "tunnel",
+ "filter": { "class": "major_rail" },
+ "style": {
+ "line-color": "@rail",
+ "line-width": "@rail_width"
+ },
+ "type": "line"
+ }, {
+ "id": "tunnel_major_rail_hatching",
+ "ref": "tunnel_major_rail",
+ "style": {
+ "line-color": "@rail",
+ "line-dasharray": "@rail_hatch_line_dasharray",
+ "line-width": "@rail_hatch_width"
+ }
+ }, {
+ "id": "road_motorway_link_casing",
+ "source": "mapbox",
+ "source-layer": "road",
+ "min-zoom": 12,
+ "filter": { "class": "motorway_link" },
+ "render": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@motorway_casing",
+ "line-width": "@motorway_link_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "road_service_casing",
+ "source": "mapbox",
+ "source-layer": "road",
+ "filter": { "class": "service" },
+ "render": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@street_casing",
+ "line-width": "@service_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "road_street_casing",
+ "source": "mapbox",
+ "source-layer": "road",
+ "filter": { "class": ["street", "street_limited"], "$type": "LineString" },
+ "render": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@street_casing",
+ "line-width": "@street_casing_width",
+ "line-opacity": "@street_casing_opacity"
+ },
+ "type": "line"
+ }, {
+ "id": "road_main_casing",
+ "source": "mapbox",
+ "source-layer": "road",
+ "filter": { "class": "main" },
+ "render": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@motorway_casing",
+ "line-width": "@main_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "road_motorway_casing",
+ "source": "mapbox",
+ "source-layer": "road",
+ "min-zoom": 5,
+ "filter": { "class": "motorway" },
+ "render": {
+ "line-cap": "round",
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@motorway_casing",
+ "line-width": "@motorway_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "road_path",
+ "source": "mapbox",
+ "source-layer": "road",
+ "filter": { "class": "path" },
+ "style": {
+ "line-color": "@path",
+ "line-dasharray": "@path_line_dasharray",
+ "line-width": "@path_width"
+ },
+ "type": "line"
+ }, {
+ "id": "road_motorway_link",
+ "ref": "road_motorway_link_casing",
+ "style": {
+ "line-color": "@motorway",
+ "line-width": "@motorway_link_width"
+ }
+ }, {
+ "id": "road_service",
+ "ref": "road_service_casing",
+ "style": {
+ "line-color": "@street",
+ "line-width": "@service_width"
+ }
+ }, {
+ "id": "road_street",
+ "ref": "road_street_casing",
+ "style": {
+ "line-color": "@street",
+ "line-width": "@street_width"
+ }
+ }, {
+ "id": "road_main",
+ "ref": "road_main_casing",
+ "style": {
+ "line-color": "@main",
+ "line-width": "@main_width"
+ }
+ }, {
+ "id": "road_motorway",
+ "ref": "road_motorway_casing",
+ "style": {
+ "line-color": "@motorway",
+ "line-width": "@motorway_width"
+ },
+ "type": "line"
+ }, {
+ "id": "road_major_rail",
+ "source": "mapbox",
+ "source-layer": "road",
+ "filter": { "class": "major_rail" },
+ "style": {
+ "line-color": "@rail",
+ "line-width": "@rail_width"
+ },
+ "type": "line"
+ }, {
+ "id": "road_major_rail_hatching",
+ "ref": "road_major_rail",
+ "style": {
+ "line-color": "@rail",
+ "line-dasharray": "@rail_hatch_line_dasharray",
+ "line-width": "@rail_hatch_width"
+ }
+ }, {
+ "id": "bridge_motorway_link_casing",
+ "source": "mapbox",
+ "source-layer": "bridge",
+ "filter": { "class": "motorway_link" },
+ "render": {
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@motorway_casing",
+ "line-width": "@motorway_link_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "bridge_motorway_casing",
+ "source": "mapbox",
+ "source-layer": "bridge",
+ "filter": { "class": "motorway" },
+ "render": {
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@motorway_casing",
+ "line-width": "@motorway_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "bridge_service_casing",
+ "source": "mapbox",
+ "source-layer": "bridge",
+ "filter": { "class": "service" },
+ "render": {
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@street_casing",
+ "line-width": "@service_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "bridge_street_casing",
+ "source": "mapbox",
+ "source-layer": "bridge",
+ "filter": { "class": ["street", "street_limited"] },
+ "render": {
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@street_casing",
+ "line-width": "@street_casing_width",
+ "line-opacity": "@street_casing_opacity"
+ },
+ "type": "line"
+ }, {
+ "id": "bridge_main_casing",
+ "source": "mapbox",
+ "source-layer": "bridge",
+ "filter": { "class": "main" },
+ "render": {
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@motorway_casing",
+ "line-width": "@main_casing_width"
+ },
+ "type": "line"
+ }, {
+ "id": "bridge_path",
+ "source": "mapbox",
+ "source-layer": "bridge",
+ "filter": { "class": "path" },
+ "style": {
+ "line-color": "@path",
+ "line-dasharray": "@path_line_dasharray",
+ "line-width": "@path_width"
+ },
+ "type": "line"
+ }, {
+ "id": "bridge_motorway_link",
+ "ref": "bridge_motorway_link_casing",
+ "style": {
+ "line-color": "@motorway",
+ "line-width": "@motorway_link_width"
+ }
+ }, {
+ "id": "bridge_service",
+ "ref": "bridge_service_casing",
+ "style": {
+ "line-color": "@street",
+ "line-width": "@service_width"
+ }
+ }, {
+ "id": "bridge_street",
+ "ref": "bridge_street_casing",
+ "style": {
+ "line-color": "@street",
+ "line-width": "@street_width"
+ }
+ }, {
+ "id": "bridge_main",
+ "ref": "bridge_main_casing",
+ "style": {
+ "line-color": "@main",
+ "line-width": "@main_width"
+ }
+ }, {
+ "id": "bridge_motorway",
+ "ref": "bridge_motorway_casing",
+ "style": {
+ "line-color": "@motorway",
+ "line-width": "@motorway_width"
+ }
+ }, {
+ "id": "bridge_major_rail",
+ "source": "mapbox",
+ "source-layer": "bridge",
+ "filter": { "class": "major_rail" },
+ "style": {
+ "line-color": "@rail",
+ "line-width": "@rail_width"
+ },
+ "type": "line"
+ }, {
+ "id": "bridge_major_rail_hatching",
+ "ref": "bridge_major_rail",
+ "style": {
+ "line-color": "@rail",
+ "line-dasharray": "@rail_hatch_line_dasharray",
+ "line-width": "@rail_hatch_width"
+ }
+ }, {
+ "id": "admin",
+ "type": "composite",
+ "style": {
+ "composite-opacity": 0.5
+ },
+ "layers": [{
+ "id": "admin_level_3",
+ "source": "mapbox",
+ "source-layer": "admin",
+ "filter": {
+ "admin_level": {">=": 3},
+ "maritime": 0
+ },
+ "render": {
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@admin",
+ "line-dasharray": [10, 3],
+ "line-width": "@admin_level_3_width"
+ },
+ "type": "line"
+ }, {
+ "id": "admin_level_2",
+ "source": "mapbox",
+ "source-layer": "admin",
+ "filter": {
+ "admin_level": 2,
+ "disputed": 0,
+ "maritime": 0
+ },
+ "render": {
+ "line-cap": "round"
+ },
+ "style": {
+ "line-color": "@admin",
+ "line-width": "@admin_level_2_width"
+ },
+ "type": "line"
+ }, {
+ "id": "admin_level_2_disputed",
+ "source": "mapbox",
+ "source-layer": "admin",
+ "filter": {
+ "admin_level": 2,
+ "disputed": 1,
+ "maritime": 0
+ },
+ "render": {
+ "line-cap": "round"
+ },
+ "style": {
+ "line-color": "@admin",
+ "line-dasharray": [4, 4],
+ "line-width": "@admin_level_2_width"
+ },
+ "type": "line"
+ }, {
+ "id": "admin_level_3_maritime",
+ "source": "mapbox",
+ "source-layer": "admin",
+ "filter": {
+ "admin_level": {">=": 3},
+ "maritime": 1
+ },
+ "render": {
+ "line-join": "round"
+ },
+ "style": {
+ "line-color": "@water",
+ "line-dasharray": [10, 3],
+ "line-width": "@admin_level_3_width"
+ },
+ "type": "line"
+ }, {
+ "id": "admin_level_2_maritime",
+ "source": "mapbox",
+ "source-layer": "admin",
+ "filter": {
+ "admin_level": 2,
+ "maritime": 1
+ },
+ "render": {
+ "line-cap": "round"
+ },
+ "style": {
+ "line-color": "@water",
+ "line-width": "@admin_level_2_width"
+ },
+ "type": "line"
+ }]
+ }, {
+ "id": "country_label_line",
+ "source": "mapbox",
+ "source-layer": "country_label_line",
+ "style": {
+ "line-color": "@text",
+ "line-opacity": 0.5
+ },
+ "type": "line"
+ }, {
+ "id": "country_label_1",
+ "source": "mapbox",
+ "source-layer": "country_label",
+ "filter": {
+ "scalerank": 1
+ },
+ "render": {
+ "text-font": "@sans_bd",
+ "text-field": "@name",
+ "text-max-width": 6.25,
+ "text-transform": "uppercase",
+ "text-max-size": 17
+ },
+ "style": {
+ "text-color": "@text",
+ "text-halo-color": "@text_halo",
+ "text-halo-width": 2,
+ "text-halo-blur": 1,
+ "text-size": {
+ "stops": [[2, 13], [4, 17]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "country_label_2",
+ "source": "mapbox",
+ "source-layer": "country_label",
+ "filter": {
+ "scalerank": 2
+ },
+ "render": {
+ "text-font": "@sans_bd",
+ "text-field": "{name_en}",
+ "text-max-width": 6.25,
+ "text-transform": "uppercase",
+ "text-max-size": 17
+ },
+ "style": {
+ "text-color": "@text",
+ "text-halo-color": "@text_halo",
+ "text-halo-width": 2,
+ "text-halo-blur": 1,
+ "text-size": {
+ "stops": [[3, 13], [5, 17]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "country_label_3",
+ "source": "mapbox",
+ "source-layer": "country_label",
+ "filter": {
+ "scalerank": 3
+ },
+ "render": {
+ "text-font": "@sans_bd",
+ "text-field": "@name",
+ "text-max-width": 6.25,
+ "text-transform": "uppercase",
+ "text-max-size": 17
+ },
+ "style": {
+ "text-color": "@text",
+ "text-halo-color": "@text_halo",
+ "text-halo-width": 2,
+ "text-halo-blur": 1,
+ "text-size": {
+ "stops": [[4, 13], [7, 17]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "country_label_4",
+ "source": "mapbox",
+ "source-layer": "country_label",
+ "filter": {
+ "scalerank": {">=": 4}
+ },
+ "render": {
+ "text-font": "@sans_bd",
+ "text-field": "@name",
+ "text-max-width": 6.25,
+ "text-transform": "uppercase",
+ "text-max-size": 15
+ },
+ "style": {
+ "text-color": "@text",
+ "text-halo-color": "@text_halo",
+ "text-halo-width": 2,
+ "text-halo-blur": 1,
+ "text-size": {
+ "stops": [[5, 13], [6, 15]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "marine_label_point_1",
+ "source": "mapbox",
+ "source-layer": "marine_label",
+ "filter": {"labelrank": 1, "$type": "Point"},
+ "render": {
+ "text-font": "@sans_it",
+ "text-field": "@name",
+ "text-max-size": 22,
+ "text-max-width": 5,
+ "text-letter-spacing": 0.2,
+ "text-line-height": 1.6,
+ "symbol-placement": "point",
+ "text-offset": [0, 2.4]
+ },
+ "style": {
+ "text-color": "@marine_text",
+ "text-halo-color": "@marine_text_halo",
+ "text-halo-width": 0.75,
+ "text-halo-blur": 0.75,
+ "text-size": {
+ "stops": [[3, 18], [4, 22]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "marine_label_line_1",
+ "source": "mapbox",
+ "source-layer": "marine_label",
+ "filter": {"labelrank": 1, "$type": "LineString"},
+ "render": {
+ "text-font": "@sans_it",
+ "text-field": "@name",
+ "text-max-size": 14,
+ "text-letter-spacing": 0.2,
+ "symbol-placement": "line"
+ },
+ "style": {
+ "text-color": "@marine_text",
+ "text-halo-color": "@marine_text_halo",
+ "text-halo-width": 0.75,
+ "text-halo-blur": 0.75,
+ "text-size": {
+ "stops": [[3, 18], [4, 22]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "marine_label_point_2",
+ "source": "mapbox",
+ "source-layer": "marine_label",
+ "filter": {"labelrank": 2, "$type": "Point"},
+ "render": {
+ "text-font": "@sans_it",
+ "text-field": "@name",
+ "text-max-size": 16,
+ "text-max-width": 5,
+ "text-letter-spacing": 0.2,
+ "symbol-placement": "point"
+ },
+ "style": {
+ "text-color": "@marine_text",
+ "text-halo-color": "@marine_text_halo",
+ "text-halo-width": 0.75,
+ "text-halo-blur": 0.75,
+ "text-size": {
+ "stops": [[3, 14], [4, 16]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "marine_label_line_2",
+ "source": "mapbox",
+ "source-layer": "marine_label",
+ "filter": {"labelrank": 2, "$type": "LineString"},
+ "render": {
+ "text-font": "@sans_it",
+ "text-field": "@name",
+ "text-max-size": 16,
+ "text-letter-spacing": 0.2,
+ "symbol-placement": "line"
+ },
+ "style": {
+ "text-color": "@marine_text",
+ "text-halo-color": "@marine_text_halo",
+ "text-halo-width": 0.75,
+ "text-halo-blur": 0.75,
+ "text-size": {
+ "stops": [[3, 14], [4, 16]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "marine_label_3",
+ "source": "mapbox",
+ "source-layer": "marine_label",
+ "filter": {"labelrank": 3, "$type": "Point"},
+ "render": {
+ "text-font": "@sans_it",
+ "text-field": "@name",
+ "text-max-size": 14,
+ "text-max-width": 5,
+ "text-letter-spacing": 0.2,
+ "symbol-placement": "point"
+ },
+ "style": {
+ "text-color": "@marine_text",
+ "text-halo-color": "@marine_text_halo",
+ "text-halo-width": 0.75,
+ "text-halo-blur": 0.75,
+ "text-size": {
+ "stops": [[3, 11], [4, 14]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "marine_label_line_3",
+ "source": "mapbox",
+ "source-layer": "marine_label",
+ "filter": {"labelrank": 3, "$type": "LineString"},
+ "render": {
+ "text-font": "@sans_it",
+ "text-field": "@name",
+ "text-max-size": 14,
+ "text-letter-spacing": 0.2,
+ "symbol-placement": "line"
+ },
+ "style": {
+ "text-color": "@marine_text",
+ "text-halo-color": "@marine_text_halo",
+ "text-halo-width": 0.75,
+ "text-halo-blur": 0.75,
+ "text-size": {
+ "stops": [[3, 11], [4, 14]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "marine_label_4",
+ "source": "mapbox",
+ "source-layer": "marine_label",
+ "filter": {"labelrank": {">=": 4}, "$type": "Point"},
+ "render": {
+ "text-font": "@sans_it",
+ "text-field": "@name",
+ "text-max-size": 12,
+ "text-max-width": 6,
+ "text-letter-spacing": 0.2,
+ "symbol-placement": "point"
+ },
+ "style": {
+ "text-color": "@marine_text",
+ "text-halo-color": "@marine_text_halo",
+ "text-halo-width": 0.75,
+ "text-halo-blur": 0.75,
+ "text-size": {
+ "stops": [[3, 11], [4, 12]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "marine_label_line_4",
+ "source": "mapbox",
+ "source-layer": "marine_label",
+ "filter": {"labelrank": {">=": 4}, "$type": "LineString"},
+ "render": {
+ "text-font": "@sans_it",
+ "text-field": "@name",
+ "text-max-size": 12,
+ "text-letter-spacing": 0.2,
+ "symbol-placement": "line"
+ },
+ "style": {
+ "text-color": "@marine_text",
+ "text-halo-color": "@marine_text_halo",
+ "text-halo-width": 0.75,
+ "text-halo-blur": 0.75,
+ "text-size": {
+ "stops": [[3, 11], [4, 12]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "place_label_city",
+ "source": "mapbox",
+ "source-layer": "place_label",
+ "filter": { "type": "city" },
+ "render": {
+ "text-font": "@sans_md",
+ "text-field": "@name",
+ "text-max-size": 24,
+ "text-max-width": 8
+ },
+ "style": {
+ "text-color": "#333",
+ "text-halo-color": "@text_halo",
+ "text-halo-width": 1.2,
+ "text-size": {
+ "base": 1.2,
+ "stops": [[7, 14], [11, 24]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "place_label_town",
+ "source": "mapbox",
+ "source-layer": "place_label",
+ "filter": { "type": "town" },
+ "render": {
+ "text-font": "@sans",
+ "text-field": "@name",
+ "text-max-size": 24,
+ "text-max-width": 8
+ },
+ "style": {
+ "text-color": "#333",
+ "text-halo-color": "@text_halo",
+ "text-halo-width": 1.2,
+ "text-size": {
+ "base": 1.2,
+ "stops": [[10, 14], [15, 24]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "place_label_village",
+ "source": "mapbox",
+ "source-layer": "place_label",
+ "filter": { "type": "village" },
+ "render": {
+ "text-font": "@sans",
+ "text-field": "@name",
+ "text-max-size": 22,
+ "text-max-width": 8
+ },
+ "style": {
+ "text-color": "#333",
+ "text-halo-color": "@text_halo",
+ "text-halo-width": 1.2,
+ "text-size": {
+ "base": 1.2,
+ "stops": [[10, 12], [15, 22]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "road_label_highway_shields",
+ "source": "mapbox",
+ "source-layer": "road_label",
+ "filter": {"class": "motorway", "reflen": [1,2,3,4,5,6]},
+ "render": {
+ "symbol-placement": "line",
+ "symbol-min-distance": 500,
+ "icon-image": "motorway_{reflen}",
+ "icon-max-size": 1,
+ "text-field": "{ref}",
+ "text-font": "@sans_bd",
+ "text-max-size": 11,
+ "text-rotation-alignment": "viewport",
+ "icon-rotation-alignment": "viewport"
+ },
+ "style": {
+ "text-color": "#765",
+ "text-size": 11
+ },
+ "type": "symbol"
+ }, {
+ "id": "road_label",
+ "source": "mapbox",
+ "source-layer": "road_label",
+ "filter": { "$type": "LineString" },
+ "render": {
+ "text-font": "@sans",
+ "text-field": "@name",
+ "text-max-size": 13,
+ "symbol-placement": "line"
+ },
+ "style": {
+ "text-color": "#765",
+ "text-halo-color": "#fff",
+ "text-halo-width": 1,
+ "text-halo-blur": 0.5,
+ "text-size": {
+ "stops": [[13, 12], [14, 13]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "place_label_other",
+ "source": "mapbox",
+ "source-layer": "place_label",
+ "filter": { "type": ["hamlet", "suburb", "neighbourhood"] },
+ "render": {
+ "text-font": "@sans_bd",
+ "text-transform": "uppercase",
+ "text-letter-spacing": 0.1,
+ "text-field": "@name",
+ "text-max-size": 14,
+ "text-max-width": 9
+ },
+ "style": {
+ "text-color": "#633",
+ "text-halo-color": "@text_halo",
+ "text-halo-width": 1.2,
+ "text-size": {
+ "base": 1.2,
+ "stops": [[12, 10], [15, 14]]
+ }
+ },
+ "type": "symbol"
+ }, {
+ "id": "poi_label_1",
+ "source": "mapbox",
+ "source-layer": "poi_label",
+ "filter": { "$type": "Point", "scalerank": 1 },
+ "render": {
+ "icon-image": "{maki}-12",
+ "text-font": "@sans_md",
+ "text-field": "@name",
+ "text-max-size": 12,
+ "text-max-width": 9,
+ "text-padding": 2,
+ "text-offset": [0, 0.6],
+ "text-vertical-align": "top"
+ },
+ "style": {
+ "text-color": "@poi_text",
+ "text-size": 12,
+ "text-halo-color": "@poi_text_halo",
+ "text-halo-width": 1,
+ "text-halo-blur": 0.5
+ },
+ "min-zoom": 13,
+ "type": "symbol"
+ }, {
+ "id": "poi_label_2",
+ "source": "mapbox",
+ "source-layer": "poi_label",
+ "filter": { "$type": "Point", "scalerank": 2 },
+ "render": {
+ "icon-image": "{maki}-12",
+ "text-font": "@sans_md",
+ "text-field": "@name",
+ "text-max-size": 12,
+ "text-max-width": 9,
+ "text-padding": 2,
+ "text-offset": [0, 0.6],
+ "text-vertical-align": "top"
+ },
+ "style": {
+ "text-color": "@poi_text",
+ "text-size": 12,
+ "text-halo-color": "@poi_text_halo",
+ "text-halo-width": 1,
+ "text-halo-blur": 0.5
+ },
+ "min-zoom": 14,
+ "type": "symbol"
+ }, {
+ "id": "poi_label_3",
+ "source": "mapbox",
+ "source-layer": "poi_label",
+ "filter": { "$type": "Point", "scalerank": 3 },
+ "render": {
+ "icon-image": "{maki}-12",
+ "text-font": "@sans_md",
+ "text-field": "@name",
+ "text-max-size": 12,
+ "text-max-width": 9,
+ "text-padding": 2,
+ "text-offset": [0, 0.6],
+ "text-vertical-align": "top"
+ },
+ "style": {
+ "text-color": "@poi_text",
+ "text-size": 12,
+ "text-halo-color": "@poi_text_halo",
+ "text-halo-width": 1,
+ "text-halo-blur": 0.5
+ },
+ "min-zoom": 15,
+ "type": "symbol"
+ }, {
+ "id": "poi_label_4",
+ "source": "mapbox",
+ "source-layer": "poi_label",
+ "filter": { "$type": "Point", "scalerank": 4 },
+ "render": {
+ "icon-image": "{maki}-12",
+ "text-font": "@sans_md",
+ "text-field": "@name",
+ "text-max-size": 12,
+ "text-max-width": 9,
+ "text-padding": 2,
+ "text-offset": [0, 0.6],
+ "text-vertical-align": "top"
+ },
+ "style": {
+ "text-color": "@poi_text",
+ "text-size": 12,
+ "text-halo-color": "@poi_text_halo",
+ "text-halo-width": 1,
+ "text-halo-blur": 0.5
+ },
+ "min-zoom": 16,
+ "type": "symbol"
+ }, {
+ "id": "poi_label_other",
+ "source": "mapbox",
+ "source-layer": "poi_label",
+ "filter": { "$type": "Point", "scalerank": {">=": 5} },
+ "render": {
+ "icon-image": "{maki}-12",
+ "text-font": "@sans_md",
+ "text-field": "@name",
+ "text-max-size": 12,
+ "text-max-width": 9,
+ "text-padding": 2,
+ "text-offset": [0, 0.6],
+ "text-vertical-align": "top"
+ },
+ "style": {
+ "text-color": "@poi_text",
+ "text-size": 12,
+ "text-halo-color": "@poi_text_halo",
+ "text-halo-width": 1,
+ "text-halo-blur": 0.5
+ },
+ "min-zoom": 17,
+ "type": "symbol"
+ }, {
+ "id": "water_label",
+ "source": "mapbox",
+ "source-layer": "water_label",
+ "filter": { "$type": "Point" },
+ "render": {
+ "text-font": "@sans_it",
+ "text-field": "@name",
+ "text-max-size": 12,
+ "text-max-width": 5
+ },
+ "style": {
+ "text-size": 12,
+ "text-color": "@marine_text",
+ "text-halo-width": 1.5,
+ "text-halo-color": "@marine_text_halo"
+ },
+ "type": "symbol"
+ }]
+} \ No newline at end of file
diff --git a/test/test.gyp b/test/test.gyp
index 93260caa6b..f73c94bf02 100644
--- a/test/test.gyp
+++ b/test/test.gyp
@@ -189,8 +189,8 @@
"dependencies": [
"../deps/gtest/gtest.gyp:gtest",
"../mapboxgl.gyp:mapboxgl",
+ '../mapboxgl.gyp:bundle_styles',
"link_gl",
- '../mapboxgl.gyp:copy_default_stylesheet',
]
},
{