@minmaps-dev/mm-web-sdk 1.0.0-rc.4 → 1.0.0-rc.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,13 +6,18 @@
6
6
  "author": "Hospital Mapping Team",
7
7
  "version": "7.1.0"
8
8
  },
9
- "sprite": "http://localhost:4000/sprites/sprite",
10
- "glyphs": "https://demotiles.maplibre.org/font/{fontstack}/{range}.pbf",
9
+ "sprite": "https://martin-dev.purpleground-b373fa6d.eastus.azurecontainerapps.io/sprite/badged",
10
+ "glyphs": "https://martin-dev.purpleground-b373fa6d.eastus.azurecontainerapps.io/font/{fontstack}/{range}.pbf",
11
+ "light": {
12
+ "anchor": "viewport",
13
+ "color": "#fff4e8",
14
+ "intensity": 0.35,
15
+ "position": [1.5, 210, 20]
16
+ },
11
17
  "sources": {
12
- "osm-tiles": {
13
- "type": "raster",
14
- "tiles": ["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],
15
- "tileSize": 256,
18
+ "protomaps": {
19
+ "type": "vector",
20
+ "url": "https://martin-dev.purpleground-b373fa6d.eastus.azurecontainerapps.io/usa",
16
21
  "attribution": "© OpenStreetMap contributors"
17
22
  },
18
23
  "indoor-data": {
@@ -23,20 +28,28 @@
23
28
  "type": "geojson",
24
29
  "data": { "type": "FeatureCollection", "features": [] }
25
30
  },
26
- "accessibility-data": {
31
+ "route-data": {
32
+ "type": "geojson",
33
+ "data": { "type": "FeatureCollection", "features": [] },
34
+ "lineMetrics": true
35
+ },
36
+ "route-endpoints": {
27
37
  "type": "geojson",
28
38
  "data": { "type": "FeatureCollection", "features": [] }
29
39
  },
30
- "unit-walls": {
40
+ "route-end-data": {
31
41
  "type": "geojson",
32
42
  "data": { "type": "FeatureCollection", "features": [] }
33
43
  },
34
- "route-data": {
44
+ "poi-highlight-data": {
35
45
  "type": "geojson",
36
- "data": { "type": "FeatureCollection", "features": [] },
37
- "lineMetrics": true
46
+ "data": { "type": "FeatureCollection", "features": [] }
38
47
  },
39
- "route-endpoints": {
48
+ "map-labels-data": {
49
+ "type": "geojson",
50
+ "data": { "type": "FeatureCollection", "features": [] }
51
+ },
52
+ "route-active-step": {
40
53
  "type": "geojson",
41
54
  "data": { "type": "FeatureCollection", "features": [] }
42
55
  }
@@ -46,882 +59,2127 @@
46
59
  "id": "background",
47
60
  "type": "background",
48
61
  "paint": {
49
- "background-color": "#F5F5F5"
50
- }
51
- },
52
- {
53
- "id": "osm",
54
- "type": "raster",
55
- "source": "osm-tiles",
56
- "minzoom": 0,
57
- "paint": {
58
- "raster-opacity": [
59
- "interpolate",
60
- ["linear"],
61
- ["zoom"],
62
- 14,
63
- 0.8,
64
- 16,
65
- 0.6,
66
- 18,
67
- 0.4
68
- ]
62
+ "background-color": "#f0f0f0"
69
63
  }
70
64
  },
71
-
72
65
  {
73
- "id": "pattern-water",
66
+ "id": "basemap-earth",
74
67
  "type": "fill",
75
- "source": "indoor-data",
76
- "minzoom": 16.5,
77
- "filter": ["==", ["get", "featureType"], "Pattern-Water"],
68
+ "source": "protomaps",
69
+ "source-layer": "earth",
78
70
  "paint": {
79
- "fill-color": "#5DADE2",
80
- "fill-opacity": 0.6
71
+ "fill-color": "#EAE2D0"
81
72
  }
82
73
  },
83
74
  {
84
- "id": "pattern-grass",
75
+ "id": "basemap-landuse-park",
85
76
  "type": "fill",
86
- "source": "indoor-data",
87
- "minzoom": 16.5,
88
- "filter": ["==", ["get", "featureType"], "Pattern-Grass"],
77
+ "source": "protomaps",
78
+ "source-layer": "landuse",
79
+ "filter": [
80
+ "in",
81
+ ["get", "kind"],
82
+ ["literal", ["park", "forest", "wood", "nature_reserve", "grass", "garden", "playground", "cemetery", "golf_course", "pitch", "recreation_ground", "village_green", "meadow", "scrub"]]
83
+ ],
89
84
  "paint": {
90
- "fill-color": "#7CB342",
91
- "fill-opacity": 0.5
85
+ "fill-color": "#cbe0b6"
92
86
  }
93
87
  },
94
88
  {
95
- "id": "pattern-trees",
89
+ "id": "basemap-landuse-coastal",
96
90
  "type": "fill",
97
- "source": "indoor-data",
98
- "minzoom": 16.5,
99
- "filter": ["==", ["get", "featureType"], "Pattern-Trees"],
91
+ "source": "protomaps",
92
+ "source-layer": "landuse",
93
+ "filter": [
94
+ "in",
95
+ ["get", "kind"],
96
+ ["literal", ["beach", "sand", "wetland"]]
97
+ ],
100
98
  "paint": {
101
- "fill-color": "#4CAF50",
102
- "fill-opacity": 0.4
99
+ "fill-color": [
100
+ "match",
101
+ ["get", "kind"],
102
+ ["beach", "sand"], "#e9ddba",
103
+ "wetland", "#cdd8bf",
104
+ "#e9ddba"
105
+ ]
103
106
  }
104
107
  },
105
108
  {
106
- "id": "pattern-pavement",
109
+ "id": "basemap-landuse-builtup",
107
110
  "type": "fill",
108
- "source": "indoor-data",
109
- "minzoom": 16.5,
110
- "filter": ["==", ["get", "featureType"], "Pattern-Pavement"],
111
+ "source": "protomaps",
112
+ "source-layer": "landuse",
113
+ "filter": [
114
+ "in",
115
+ ["get", "kind"],
116
+ [
117
+ "literal",
118
+ [
119
+ "hospital", "clinic", "healthcare",
120
+ "university", "college", "school",
121
+ "parking",
122
+ "retail", "commercial",
123
+ "industrial", "railway",
124
+ "military"
125
+ ]
126
+ ]
127
+ ],
111
128
  "paint": {
112
- "fill-color": "#E0E0E0",
113
- "fill-opacity": 0.6
129
+ "fill-color": [
130
+ "match",
131
+ ["get", "kind"],
132
+ ["hospital", "clinic", "healthcare"], "#ecdcd8",
133
+ ["university", "college", "school"], "#e6ddc6",
134
+ "parking", "#dad7d0",
135
+ ["retail", "commercial"], "#ece2d2",
136
+ ["industrial", "railway"], "#ddd7cc",
137
+ "military", "#ddd7cc",
138
+ "#eae2d0"
139
+ ]
114
140
  }
115
141
  },
116
-
117
142
  {
118
- "id": "pattern-outdoor-terrace",
143
+ "id": "basemap-water",
119
144
  "type": "fill",
120
- "source": "indoor-data",
121
- "minzoom": 16.5,
122
- "filter": ["==", ["get", "featureType"], "Pattern-OutdoorTerrace"],
145
+ "source": "protomaps",
146
+ "source-layer": "water",
123
147
  "paint": {
124
- "fill-color": "#8D6E63",
125
- "fill-opacity": 0.3
148
+ "fill-color": "#c2dbf2"
126
149
  }
127
150
  },
128
-
129
151
  {
130
- "id": "parking-lots",
152
+ "id": "basemap-buildings",
131
153
  "type": "fill",
132
- "source": "indoor-data",
133
- "filter": ["==", ["get", "featureType"], "Parking-Lots"],
154
+ "source": "protomaps",
155
+ "source-layer": "buildings",
156
+ "minzoom": 14,
134
157
  "paint": {
135
- "fill-color": "#BDBDBD",
136
- "fill-opacity": 0.6
158
+ "fill-color": "#d6cdb8",
159
+ "fill-outline-color": "#c3b89e",
160
+ "fill-opacity": [
161
+ "interpolate",
162
+ ["linear"],
163
+ ["zoom"],
164
+ 14, 0.0,
165
+ 15, 0.85,
166
+ 18, 0.92
167
+ ]
137
168
  }
138
169
  },
139
170
  {
140
- "id": "parking-lots-outline",
171
+ "id": "basemap-rail",
141
172
  "type": "line",
142
- "source": "indoor-data",
143
- "filter": ["==", ["get", "featureType"], "Parking-Lots"],
144
- "paint": {
145
- "line-color": "#757575",
146
- "line-width": 1,
147
- "line-dasharray": [3, 2]
148
- }
149
- },
150
-
151
- {
152
- "id": "boundary-fill",
153
- "type": "fill",
154
- "source": "indoor-data",
155
- "minzoom": 16.5,
156
- "filter": ["==", ["get", "featureType"], "Boundary"],
157
- "paint": {
158
- "fill-color": "#FAF3E2",
159
- "fill-opacity": 1
160
- }
161
- },
162
- {
163
- "id": "building-roof-fill",
164
- "type": "fill",
165
- "source": "indoor-data",
166
- "minzoom": 16.5,
167
- "filter": ["==", ["get", "featureType"], "Boundary"],
173
+ "source": "protomaps",
174
+ "source-layer": "roads",
175
+ "minzoom": 13,
176
+ "filter": ["==", ["get", "kind"], "rail"],
168
177
  "paint": {
169
- "fill-color": "#162e51",
170
- "fill-opacity": 1
178
+ "line-color": "#a8a29a",
179
+ "line-width": [
180
+ "interpolate",
181
+ ["linear"],
182
+ ["zoom"],
183
+ 13, 1.1,
184
+ 16, 2.2,
185
+ 19, 4
186
+ ],
187
+ "line-dasharray": [2, 2]
171
188
  }
172
189
  },
173
190
  {
174
- "id": "corridors-fill",
175
- "type": "fill",
176
- "source": "indoor-data",
177
- "minzoom": 16.5,
191
+ "id": "basemap-roads-tunnel",
192
+ "type": "line",
193
+ "source": "protomaps",
194
+ "source-layer": "roads",
195
+ "minzoom": 13,
178
196
  "filter": [
179
- "any",
180
- ["==", ["get", "featureType"], "Corridors"],
181
- ["==", ["get", "featureType"], "Corridor"]
197
+ "all",
198
+ ["to-boolean", ["get", "is_tunnel"]],
199
+ ["in", ["get", "kind"], ["literal", ["minor_road", "major_road", "medium_road", "highway", "path"]]]
182
200
  ],
183
201
  "paint": {
184
- "fill-color": "#F0E6D1"
202
+ "line-color": "#e8e2d4",
203
+ "line-width": ["interpolate", ["linear"], ["zoom"], 13, 1.0, 16, 3.2, 19, 8],
204
+ "line-dasharray": [3, 2],
205
+ "line-opacity": 0.85
185
206
  }
186
207
  },
187
-
188
208
  {
189
- "id": "accessible-routes",
209
+ "id": "basemap-roads-minor-casing",
190
210
  "type": "line",
191
- "source": "accessibility-data",
192
- "minzoom": 16.5,
193
- "filter": ["==", ["get", "accessible"], true],
211
+ "source": "protomaps",
212
+ "source-layer": "roads",
213
+ "minzoom": 13,
214
+ "filter": [
215
+ "all",
216
+ ["!", ["to-boolean", ["get", "is_tunnel"]]],
217
+ ["in", ["get", "kind"], ["literal", ["minor_road", "service", "other"]]],
218
+ ["!", ["in", ["get", "kind_detail"], ["literal", ["footway", "sidewalk", "path", "steps", "cycleway", "crossing", "track", "pier", "pedestrian"]]]]
219
+ ],
220
+ "layout": { "line-cap": "round", "line-join": "round" },
194
221
  "paint": {
195
- "line-color": "#2E7D32",
222
+ "line-color": "#d3cab4",
196
223
  "line-width": [
197
224
  "interpolate",
198
225
  ["linear"],
199
226
  ["zoom"],
200
- 15,
201
- 2,
202
- 18,
203
- 3,
204
- 20,
205
- 4
206
- ],
207
- "line-dasharray": [0.5, 1],
208
- "line-opacity": 0.7
227
+ 13, ["*", 2.6, ["match", ["get", "kind_detail"], "service", 0.6, "residential", 1.0, "unclassified", 0.85, 0.8]],
228
+ 16, ["*", 6.8, ["match", ["get", "kind_detail"], "service", 0.6, "residential", 1.0, "unclassified", 0.85, 0.8]],
229
+ 19, ["*", 14, ["match", ["get", "kind_detail"], "service", 0.6, "residential", 1.0, "unclassified", 0.85, 0.8]]
230
+ ]
209
231
  }
210
232
  },
211
-
212
233
  {
213
- "id": "units-fill",
214
- "type": "fill",
215
- "source": "indoor-data",
216
- "minzoom": 16.5,
217
- "filter": ["==", ["get", "featureType"], "Units"],
234
+ "id": "basemap-roads-minor",
235
+ "type": "line",
236
+ "source": "protomaps",
237
+ "source-layer": "roads",
238
+ "minzoom": 13,
239
+ "filter": [
240
+ "all",
241
+ ["!", ["to-boolean", ["get", "is_tunnel"]]],
242
+ ["in", ["get", "kind"], ["literal", ["minor_road", "path", "service", "other"]]]
243
+ ],
244
+ "layout": { "line-cap": "round", "line-join": "round" },
218
245
  "paint": {
219
- "fill-color": [
220
- "case",
221
- ["has", "category"],
222
- [
223
- "match",
224
- ["get", "category"],
225
- "healthcare",
226
- "#7C3AED",
227
- "emergency",
228
- "#DC2626",
229
- "diagnostic",
230
- "#0EA5E9",
231
- "surgical",
232
- "#7C3AED",
233
- "retail",
234
- "#FF6B6B",
235
- "fnb",
236
- "#FFA500",
237
- "admin",
238
- "#A29BFE",
239
- "amenities",
240
- "#48C9B0",
241
- "staff",
242
- "#74B9FF",
243
- "security",
244
- "#1A7A96",
245
- "waiting",
246
- "#E1BEE7",
247
- "#8ecae6"
248
- ],
249
- "#8ecae6"
246
+ "line-color": [
247
+ "match",
248
+ ["get", "kind_detail"],
249
+ ["footway", "sidewalk", "path", "steps", "cycleway", "crossing", "track", "pier", "pedestrian"], "#ece8e0",
250
+ "service", "#f6f3ec",
251
+ "#FFFFFF"
250
252
  ],
251
- "fill-opacity": [
253
+ "line-width": [
252
254
  "interpolate",
253
255
  ["linear"],
254
256
  ["zoom"],
255
- 15,
256
- 0.85,
257
- 17,
258
- 0.92,
259
- 19,
260
- 0.95
257
+ 13, ["*", 1.2, ["match", ["get", "kind_detail"], "service", 0.6, "residential", 1.0, "unclassified", 0.85, ["footway", "sidewalk", "path", "steps", "cycleway", "crossing", "track", "pier", "pedestrian"], 0.5, 0.8]],
258
+ 16, ["*", 4.0, ["match", ["get", "kind_detail"], "service", 0.6, "residential", 1.0, "unclassified", 0.85, ["footway", "sidewalk", "path", "steps", "cycleway", "crossing", "track", "pier", "pedestrian"], 0.5, 0.8]],
259
+ 19, ["*", 9.5, ["match", ["get", "kind_detail"], "service", 0.6, "residential", 1.0, "unclassified", 0.85, ["footway", "sidewalk", "path", "steps", "cycleway", "crossing", "track", "pier", "pedestrian"], 0.5, 0.8]]
261
260
  ]
262
261
  }
263
262
  },
264
263
  {
265
- "id": "units-outline-2d",
264
+ "id": "basemap-roads-major-casing",
266
265
  "type": "line",
267
- "source": "indoor-data",
268
- "minzoom": 16.5,
269
- "filter": ["==", ["get", "featureType"], "Units"],
270
- "layout": {
271
- "visibility": "none",
272
- "line-join": "round",
273
- "line-cap": "round"
274
- },
275
- "paint": {
276
- "line-color": "#162e51",
277
- "line-opacity": 0.9,
278
- "line-width": ["interpolate", ["linear"], ["zoom"], 16, 0.8, 18, 1.4, 20, 2.2]
279
- }
280
- },
281
- {
282
- "id": "backofhouse-fill",
283
- "type": "fill",
284
- "source": "indoor-data",
285
- "minzoom": 16.5,
286
- "filter": ["==", ["get", "featureType"], "Back-of-house"],
266
+ "source": "protomaps",
267
+ "source-layer": "roads",
268
+ "minzoom": 10,
269
+ "filter": [
270
+ "all",
271
+ ["!", ["to-boolean", ["get", "is_tunnel"]]],
272
+ ["in", ["get", "kind"], ["literal", ["highway", "major_road", "medium_road"]]]
273
+ ],
274
+ "layout": { "line-cap": "round", "line-join": "round" },
287
275
  "paint": {
288
- "fill-color": "#D6D6CC",
289
- "fill-opacity": 0.7
276
+ "line-color": [
277
+ "match",
278
+ ["get", "kind_detail"],
279
+ ["motorway", "trunk", "motorway_link", "trunk_link", "primary", "primary_link"], "#d79a2a",
280
+ "#e0bc72"
281
+ ],
282
+ "line-width": [
283
+ "interpolate",
284
+ ["linear"],
285
+ ["zoom"],
286
+ 10, ["*", 2.0, ["match", ["get", "kind_detail"], ["motorway", "trunk"], 1.5, ["primary", "primary_link"], 1.3, ["secondary", "secondary_link"], 1.05, ["tertiary", "tertiary_link"], 0.85, 0.95]],
287
+ 14, ["*", 5.6, ["match", ["get", "kind_detail"], ["motorway", "trunk"], 1.5, ["primary", "primary_link"], 1.3, ["secondary", "secondary_link"], 1.05, ["tertiary", "tertiary_link"], 0.85, 0.95]],
288
+ 18, ["*", 15, ["match", ["get", "kind_detail"], ["motorway", "trunk"], 1.5, ["primary", "primary_link"], 1.3, ["secondary", "secondary_link"], 1.05, ["tertiary", "tertiary_link"], 0.85, 0.95]]
289
+ ]
290
290
  }
291
291
  },
292
-
293
292
  {
294
- "id": "backofhouse-pattern",
293
+ "id": "basemap-roads-major",
295
294
  "type": "line",
296
- "source": "indoor-data",
297
- "minzoom": 16.5,
298
- "filter": ["==", ["get", "featureType"], "Back-of-house"],
295
+ "source": "protomaps",
296
+ "source-layer": "roads",
297
+ "minzoom": 10,
298
+ "filter": [
299
+ "all",
300
+ ["!", ["to-boolean", ["get", "is_tunnel"]]],
301
+ ["in", ["get", "kind"], ["literal", ["highway", "major_road", "medium_road"]]]
302
+ ],
303
+ "layout": { "line-cap": "round", "line-join": "round" },
299
304
  "paint": {
300
- "line-color": "#90A4AE",
301
- "line-width": 0.5,
302
- "line-opacity": 0.4
305
+ "line-color": [
306
+ "match",
307
+ ["get", "kind_detail"],
308
+ ["motorway", "trunk", "motorway_link", "trunk_link"], "#e8bf6a",
309
+ ["primary", "primary_link"], "#ecc97e",
310
+ "#efd699"
311
+ ],
312
+ "line-width": [
313
+ "interpolate",
314
+ ["linear"],
315
+ ["zoom"],
316
+ 10, ["*", 1.0, ["match", ["get", "kind_detail"], ["motorway", "trunk"], 1.5, ["primary", "primary_link"], 1.3, ["secondary", "secondary_link"], 1.05, ["tertiary", "tertiary_link"], 0.85, 0.95]],
317
+ 14, ["*", 3.4, ["match", ["get", "kind_detail"], ["motorway", "trunk"], 1.5, ["primary", "primary_link"], 1.3, ["secondary", "secondary_link"], 1.05, ["tertiary", "tertiary_link"], 0.85, 0.95]],
318
+ 18, ["*", 11, ["match", ["get", "kind_detail"], ["motorway", "trunk"], 1.5, ["primary", "primary_link"], 1.3, ["secondary", "secondary_link"], 1.05, ["tertiary", "tertiary_link"], 0.85, 0.95]]
319
+ ]
303
320
  }
304
321
  },
305
322
  {
306
- "id": "backofhouse-outline-2d",
323
+ "id": "basemap-roads-bridge-casing",
307
324
  "type": "line",
308
- "source": "indoor-data",
309
- "minzoom": 16.5,
310
- "filter": ["==", ["get", "featureType"], "Back-of-house"],
311
- "layout": {
312
- "line-join": "round",
313
- "line-cap": "round"
314
- },
325
+ "source": "protomaps",
326
+ "source-layer": "roads",
327
+ "minzoom": 13,
328
+ "filter": [
329
+ "all",
330
+ ["to-boolean", ["get", "is_bridge"]],
331
+ ["in", ["get", "kind"], ["literal", ["highway", "major_road", "medium_road"]]]
332
+ ],
333
+ "layout": { "line-cap": "butt" },
315
334
  "paint": {
316
- "line-color": "#7B8D93",
317
- "line-width": [
335
+ "line-color": "#b7ad97",
336
+ "line-gap-width": [
318
337
  "interpolate",
319
338
  ["linear"],
320
339
  ["zoom"],
321
- 16,
322
- 0.6,
323
- 18,
324
- 1.0,
325
- 20,
326
- 1.4
340
+ 10, ["*", 1.0, ["match", ["get", "kind_detail"], ["motorway", "trunk"], 1.5, ["primary", "primary_link"], 1.3, ["secondary", "secondary_link"], 1.05, ["tertiary", "tertiary_link"], 0.85, 0.95]],
341
+ 14, ["*", 3.4, ["match", ["get", "kind_detail"], ["motorway", "trunk"], 1.5, ["primary", "primary_link"], 1.3, ["secondary", "secondary_link"], 1.05, ["tertiary", "tertiary_link"], 0.85, 0.95]],
342
+ 18, ["*", 11, ["match", ["get", "kind_detail"], ["motorway", "trunk"], 1.5, ["primary", "primary_link"], 1.3, ["secondary", "secondary_link"], 1.05, ["tertiary", "tertiary_link"], 0.85, 0.95]]
327
343
  ],
328
- "line-opacity": 0.9
344
+ "line-width": ["interpolate", ["linear"], ["zoom"], 13, 0.9, 16, 1.5, 19, 2.4]
329
345
  }
330
346
  },
331
347
 
332
348
  {
333
- "id": "restrooms-fill",
334
- "type": "fill",
335
- "source": "indoor-data",
336
- "minzoom": 16.5,
337
- "filter": ["==", ["get", "featureType"], "Restrooms"],
338
- "paint": {
339
- "fill-color": "#5B8468",
340
- "fill-opacity": 1
349
+ "id": "basemap-road-shields",
350
+ "type": "symbol",
351
+ "source": "protomaps",
352
+ "source-layer": "roads",
353
+ "minzoom": 13,
354
+ "filter": [
355
+ "all",
356
+ ["!", ["to-boolean", ["get", "is_tunnel"]]],
357
+ ["any", ["has", "shield_text"], ["has", "ref"]]
358
+ ],
359
+ "layout": {
360
+ "symbol-placement": "line",
361
+ "symbol-spacing": 240,
362
+ "symbol-sort-key": 5,
363
+ "icon-image": [
364
+ "concat",
365
+ "mm-shield:",
366
+ [
367
+ "let",
368
+ "st", ["upcase", ["coalesce", ["get", "shield_text"], ["get", "ref"], ""]],
369
+ [
370
+ "case",
371
+ ["any",
372
+ ["==", ["get", "network"], "US:I"],
373
+ ["all",
374
+ ["==", ["slice", ["var", "st"], 0, 1], "I"],
375
+ ["in", ["slice", ["var", "st"], 1, 2], "0123456789"]
376
+ ]
377
+ ], "i",
378
+ ["==", ["get", "network"], "US:US"], "us",
379
+ ["==", ["slice", ["var", "st"], 0, 2], "US"], "us",
380
+ ["==", ["slice", ["var", "st"], 0, 2], "CR"], "cr",
381
+ "st"
382
+ ]
383
+ ],
384
+ ":",
385
+ [
386
+ "let",
387
+ "n", [
388
+ "let",
389
+ "rf", ["upcase", ["coalesce", ["get", "ref"], ["get", "shield_text"], ""]],
390
+ [
391
+ "case",
392
+ [">=", ["index-of", " ", ["var", "rf"]], 0],
393
+ ["slice", ["var", "rf"], ["+", ["index-of", " ", ["var", "rf"]], 1]],
394
+ ["var", "rf"]
395
+ ]
396
+ ],
397
+ [
398
+ "case",
399
+ [">=", ["index-of", ";", ["var", "n"]], 0],
400
+ ["slice", ["var", "n"], 0, ["index-of", ";", ["var", "n"]]],
401
+ ["var", "n"]
402
+ ]
403
+ ]
404
+ ],
405
+ "icon-size": ["interpolate", ["linear"], ["zoom"], 13, 0.72, 16, 0.88, 19, 1.0],
406
+ "icon-rotation-alignment": "viewport",
407
+ "icon-pitch-alignment": "viewport",
408
+ "icon-allow-overlap": false,
409
+ "icon-padding": 4
341
410
  }
342
411
  },
412
+
343
413
  {
344
- "id": "restrooms-outline-2d",
345
- "type": "line",
346
- "source": "indoor-data",
347
- "minzoom": 16.5,
348
- "filter": ["==", ["get", "featureType"], "Restrooms"],
414
+ "id": "basemap-street-labels",
415
+ "type": "symbol",
416
+ "source": "protomaps",
417
+ "source-layer": "roads",
418
+ "minzoom": 13,
419
+ "filter": [
420
+ "all",
421
+ ["has", "name"],
422
+ [
423
+ "in",
424
+ ["get", "kind"],
425
+ ["literal", ["highway", "major_road", "medium_road", "minor_road"]]
426
+ ]
427
+ ],
349
428
  "layout": {
350
- "line-join": "round",
351
- "line-cap": "round"
352
- },
353
- "paint": {
354
- "line-color": "#3F5D4A",
355
- "line-width": [
429
+ "symbol-placement": "line",
430
+ "symbol-spacing": 330,
431
+ "text-field": ["coalesce", ["get", "name:en"], ["get", "name"]],
432
+ "text-font": [
433
+ "match",
434
+ ["get", "kind"],
435
+ ["highway", "major_road"], ["literal", ["Noto Sans Bold"]],
436
+ ["literal", ["Noto Sans Regular"]]
437
+ ],
438
+ "text-size": [
356
439
  "interpolate",
357
440
  ["linear"],
358
441
  ["zoom"],
359
- 16,
360
- 0.6,
361
- 18,
362
- 1.0,
363
- 20,
364
- 1.4
442
+ 13, ["*", 10.5, ["match", ["get", "kind"], "highway", 1.12, "major_road", 1.06, "minor_road", 0.94, 1.0]],
443
+ 16, ["*", 13.0, ["match", ["get", "kind"], "highway", 1.12, "major_road", 1.06, "minor_road", 0.94, 1.0]],
444
+ 19, ["*", 16.0, ["match", ["get", "kind"], "highway", 1.12, "major_road", 1.06, "minor_road", 0.94, 1.0]]
365
445
  ],
366
- "line-opacity": 0.9
367
- }
368
- },
369
-
370
- {
371
- "id": "obstacles-fill",
372
- "type": "fill",
373
- "source": "indoor-data",
374
- "minzoom": 16.5,
375
- "filter": ["==", ["get", "featureType"], "Obstacles"],
446
+ "text-letter-spacing": 0.04,
447
+ "text-max-angle": 40,
448
+ "text-padding": 3,
449
+ "text-rotation-alignment": "map",
450
+ "text-pitch-alignment": "viewport",
451
+ "symbol-sort-key": [
452
+ "match",
453
+ ["get", "kind"],
454
+ "highway", 0,
455
+ "major_road", 1,
456
+ "medium_road", 2,
457
+ "minor_road", 3,
458
+ 4
459
+ ]
460
+ },
376
461
  "paint": {
377
- "fill-color": "#E8E9ED",
378
- "fill-opacity": 0.85
462
+ "text-color": [
463
+ "match",
464
+ ["get", "kind"],
465
+ ["highway", "major_road"], "#463f32",
466
+ "#5b5346"
467
+ ],
468
+ "text-halo-color": "#fffffe",
469
+ "text-halo-width": 1.9,
470
+ "text-halo-blur": 0.3
379
471
  }
380
472
  },
381
473
  {
382
- "id": "obstacles-outline-2d",
383
- "type": "line",
384
- "source": "indoor-data",
385
- "minzoom": 16.5,
386
- "filter": ["==", ["get", "featureType"], "Obstacles"],
474
+ "id": "basemap-poi-marine",
475
+ "type": "symbol",
476
+ "source": "protomaps",
477
+ "source-layer": "pois",
478
+ "minzoom": 13,
479
+ "filter": [
480
+ "in",
481
+ ["get", "kind"],
482
+ ["literal", ["marina", "ferry_terminal", "ferry", "ferry_stop"]]
483
+ ],
387
484
  "layout": {
388
- "line-join": "round",
389
- "line-cap": "round"
485
+ "symbol-sort-key": 20,
486
+ "icon-image": [
487
+ "match",
488
+ ["get", "kind"],
489
+ "marina", "material-anchor",
490
+ ["ferry_terminal", "ferry", "ferry_stop"], "material-directions_boat",
491
+ "material-anchor"
492
+ ],
493
+ "icon-size": ["interpolate", ["linear"], ["zoom"], 13, 0.5, 16, 0.68, 19, 0.82],
494
+ "icon-allow-overlap": false,
495
+ "icon-optional": false,
496
+ "icon-padding": 4,
497
+ "icon-rotation-alignment": "viewport",
498
+ "icon-pitch-alignment": "viewport",
499
+ "text-field": ["coalesce", ["get", "name:en"], ["get", "name"]],
500
+ "text-font": ["Noto Sans Bold"],
501
+ "text-size": ["interpolate", ["linear"], ["zoom"], 15.5, 0, 16.5, 11.5, 19, 13.5],
502
+ "text-offset": [0, 1.8],
503
+ "text-anchor": "top",
504
+ "text-optional": true,
505
+ "text-padding": 4,
506
+ "text-rotation-alignment": "viewport"
390
507
  },
391
508
  "paint": {
392
- "line-color": "#B0B1B5",
393
- "line-width": [
394
- "interpolate",
395
- ["linear"],
396
- ["zoom"],
397
- 16,
398
- 0.5,
399
- 18,
400
- 0.9,
401
- 20,
402
- 1.2
403
- ],
404
- "line-opacity": 0.9
509
+ "text-color": "#4a5560",
510
+ "text-halo-color": "#fffffe",
511
+ "text-halo-width": 1.9,
512
+ "text-halo-blur": 0.3
405
513
  }
406
514
  },
407
-
408
515
  {
409
- "id": "escalators-stairs-elevators",
410
- "type": "fill",
411
- "source": "indoor-data",
412
- "minzoom": 16.5,
516
+ "id": "basemap-poi-civic",
517
+ "type": "symbol",
518
+ "source": "protomaps",
519
+ "source-layer": "pois",
520
+ "minzoom": 13,
413
521
  "filter": [
414
522
  "in",
415
- ["get", "featureType"],
416
- ["literal", ["Escalators", "Stairs", "Elevators"]]
523
+ ["get", "kind"],
524
+ ["literal", ["place_of_worship", "fire_station", "post_office", "library", "townhall", "school"]]
417
525
  ],
526
+ "layout": {
527
+ "symbol-sort-key": 25,
528
+ "icon-image": [
529
+ "match",
530
+ ["get", "kind"],
531
+ "place_of_worship", [
532
+ "match",
533
+ ["get", "kind_detail"],
534
+ "christian", "material-church",
535
+ "jewish", "material-synagogue",
536
+ "muslim", "material-mosque",
537
+ "buddhist", "material-temple_buddhist",
538
+ "hindu", "material-temple_hindu",
539
+ "material-church"
540
+ ],
541
+ "fire_station", "material-local_fire_department",
542
+ "post_office", "material-local_post_office",
543
+ "library", "material-local_library",
544
+ "townhall", "material-account_balance",
545
+ "school", "material-school",
546
+ "hospital", "material-local_hospital",
547
+ "material-account_balance"
548
+ ],
549
+ "icon-size": ["interpolate", ["linear"], ["zoom"], 13, 0.5, 16, 0.68, 19, 0.82],
550
+ "icon-allow-overlap": false,
551
+ "icon-optional": false,
552
+ "icon-padding": 4,
553
+ "icon-rotation-alignment": "viewport",
554
+ "icon-pitch-alignment": "viewport",
555
+ "text-field": ["coalesce", ["get", "name:en"], ["get", "name"]],
556
+ "text-font": ["Noto Sans Bold"],
557
+ "text-size": ["interpolate", ["linear"], ["zoom"], 15.5, 0, 16.5, 11.5, 19, 13.5],
558
+ "text-offset": [0, 1.8],
559
+ "text-anchor": "top",
560
+ "text-optional": true,
561
+ "text-padding": 4,
562
+ "text-rotation-alignment": "viewport"
563
+ },
418
564
  "paint": {
419
- "fill-color": "#6A8799",
420
- "fill-opacity": 1
565
+ "text-color": "#4a5560",
566
+ "text-halo-color": "#fffffe",
567
+ "text-halo-width": 1.9,
568
+ "text-halo-blur": 0.3
421
569
  }
422
570
  },
423
571
  {
424
- "id": "escalators-stairs-elevators-outline-2d",
425
- "type": "line",
426
- "source": "indoor-data",
427
- "minzoom": 16.5,
572
+ "id": "basemap-park-labels",
573
+ "type": "symbol",
574
+ "source": "protomaps",
575
+ "source-layer": "pois",
576
+ "minzoom": 12,
428
577
  "filter": [
429
- "in",
430
- ["get", "featureType"],
431
- ["literal", ["Escalators", "Stairs", "Elevators"]]
578
+ "all",
579
+ ["has", "name"],
580
+ [
581
+ "in",
582
+ ["get", "kind"],
583
+ ["literal", ["park", "nature_reserve", "garden", "recreation_ground", "dog_park", "golf_course", "protected_area"]]
584
+ ]
432
585
  ],
433
586
  "layout": {
434
- "line-join": "round",
435
- "line-cap": "round"
587
+ "symbol-sort-key": 30,
588
+ "text-field": ["coalesce", ["get", "name:en"], ["get", "name"]],
589
+ "text-font": ["Noto Sans Bold"],
590
+ "text-size": ["interpolate", ["linear"], ["zoom"], 12, 11, 15, 13.5, 18, 16],
591
+ "text-max-width": 8,
592
+ "text-letter-spacing": 0.03,
593
+ "text-padding": 4,
594
+ "text-anchor": "center",
595
+ "text-rotation-alignment": "viewport",
596
+ "text-pitch-alignment": "viewport",
597
+ "text-optional": true
436
598
  },
437
599
  "paint": {
438
- "line-color": "#455A64",
439
- "line-width": [
440
- "interpolate",
441
- ["linear"],
442
- ["zoom"],
443
- 16,
444
- 0.6,
445
- 18,
446
- 1.0,
447
- 20,
448
- 1.4
449
- ],
450
- "line-opacity": 0.9
600
+ "text-color": "#3d6b2f",
601
+ "text-halo-color": "#fffffe",
602
+ "text-halo-width": 1.9,
603
+ "text-halo-blur": 0.3
451
604
  }
452
605
  },
453
-
454
606
  {
455
- "id": "exits-doors",
456
- "type": "fill",
457
- "source": "indoor-data",
458
- "minzoom": 16.5,
459
- "filter": [
460
- "in",
461
- ["get", "featureType"],
462
- ["literal", ["Exits", "Doors", "Exit", "Door"]]
463
- ],
607
+ "id": "basemap-water-labels",
608
+ "type": "symbol",
609
+ "source": "protomaps",
610
+ "source-layer": "water",
611
+ "minzoom": 12,
612
+ "filter": ["has", "name"],
613
+ "layout": {
614
+ "symbol-sort-key": 28,
615
+ "text-field": ["coalesce", ["get", "name:en"], ["get", "name"]],
616
+ "text-font": ["Noto Sans Italic"],
617
+ "text-size": ["interpolate", ["linear"], ["zoom"], 12, 11, 15, 13, 18, 15],
618
+ "text-max-width": 8,
619
+ "text-letter-spacing": 0.04,
620
+ "text-padding": 4,
621
+ "text-anchor": "center",
622
+ "text-rotation-alignment": "viewport",
623
+ "text-pitch-alignment": "viewport",
624
+ "text-optional": true
625
+ },
464
626
  "paint": {
465
- "fill-color": "#4CAF50",
466
- "fill-opacity": 0.6
627
+ "text-color": "#4a7396",
628
+ "text-halo-color": "#fffffe",
629
+ "text-halo-width": 1.7,
630
+ "text-halo-blur": 0.3
467
631
  }
468
632
  },
469
633
 
470
634
  {
471
- "id": "kiosks-fill",
635
+ "id": "pattern-water",
472
636
  "type": "fill",
473
637
  "source": "indoor-data",
474
638
  "minzoom": 16.5,
475
- "filter": ["==", ["get", "featureType"], "Kiosks"],
639
+ "filter": ["==", ["get", "featureType"], "Pattern-Water"],
476
640
  "paint": {
477
- "fill-color": "#9C27B0",
478
- "fill-opacity": 0.7
641
+ "fill-color": "#cfe1ec"
642
+
479
643
  }
480
644
  },
481
-
482
645
  {
483
- "id": "pattern-lounge",
646
+ "id": "pattern-outdoor-terrace",
484
647
  "type": "fill",
485
648
  "source": "indoor-data",
486
649
  "minzoom": 16.5,
487
- "filter": ["==", ["get", "featureType"], "Pattern-Lounge"],
650
+ "filter": ["==", ["get", "featureType"], "Pattern-OutdoorTerrace"],
488
651
  "paint": {
489
- "fill-color": "#CE93D8",
490
- "fill-opacity": 0.5
652
+ "fill-color": "#cabfb6",
653
+ "fill-opacity": 0.3
491
654
  }
492
655
  },
493
656
 
494
657
  {
495
- "id": "pattern-indoor-foodcourt",
658
+ "id": "parking-lots",
496
659
  "type": "fill",
497
660
  "source": "indoor-data",
498
- "minzoom": 16.5,
499
- "filter": ["==", ["get", "featureType"], "Pattern-IndoorFoodcourt"],
661
+
662
+ "filter": ["==", ["get", "featureType"], "Parking-Lots"],
500
663
  "paint": {
501
- "fill-color": "#FFCC80",
502
- "fill-opacity": 0.6
664
+ "fill-color": "#adadad",
665
+ "fill-opacity": 0.5
503
666
  }
504
667
  },
505
-
506
668
  {
507
- "id": "corridors-outline",
669
+ "id": "parking-lots-outline",
508
670
  "type": "line",
509
671
  "source": "indoor-data",
510
672
  "minzoom": 16.5,
511
- "filter": [
512
- "any",
513
- ["==", ["get", "featureType"], "Corridors"],
514
- ["==", ["get", "featureType"], "Corridor"]
515
- ],
673
+ "filter": ["==", ["get", "featureType"], "Parking-Lots"],
516
674
  "paint": {
517
- "line-color": "#BCAAA4",
518
- "line-width": [
519
- "interpolate",
520
- ["linear"],
521
- ["zoom"],
522
- 15,
523
- 0.5,
524
- 18,
525
- 1,
526
- 20,
527
- 1.5
528
- ]
675
+ "line-color": "#b0b0ad",
676
+ "line-width": 1,
677
+ "line-dasharray": [3, 2]
529
678
  }
530
679
  },
531
-
532
680
  {
533
- "id": "boundary-outline",
534
- "type": "line",
681
+ "id": "boundary-fill",
682
+ "type": "fill",
535
683
  "source": "indoor-data",
536
- "minzoom": 16.5,
537
684
  "filter": ["==", ["get", "featureType"], "Boundary"],
538
685
  "paint": {
539
- "line-color": "#263238",
540
- "line-width": [
541
- "interpolate",
542
- ["linear"],
543
- ["zoom"],
544
- 12,
545
- 2,
546
- 15,
547
- 2.5,
548
- 18,
549
- 3,
550
- 20,
551
- 3.5
552
- ],
553
- "line-opacity": [
554
- "interpolate",
555
- ["linear"],
556
- ["zoom"],
557
- 12,
558
- 0.7,
559
- 17,
560
- 0.85,
561
- 18,
562
- 1
563
- ]
686
+ "fill-color": "#162e51",
687
+ "fill-opacity": 1
564
688
  }
565
689
  },
566
690
  {
567
- "id": "building-roof-outline",
568
- "type": "line",
691
+ "id": "building-roof-fill",
692
+ "type": "fill",
569
693
  "source": "indoor-data",
570
- "minzoom": 16.5,
694
+ "minzoom": 15.8,
571
695
  "filter": ["==", ["get", "featureType"], "Boundary"],
572
- "layout": {
573
- "line-join": "round",
574
- "line-cap": "round"
575
- },
576
696
  "paint": {
577
- "line-color": "#face00",
578
- "line-width": [
697
+ "fill-color": "#162e51",
698
+ "fill-opacity": [
579
699
  "interpolate",
580
700
  ["linear"],
581
701
  ["zoom"],
582
- 15,
583
- 1.6,
584
- 18,
585
- 2.4,
586
- 20,
587
- 3.2
588
- ],
589
- "line-opacity": 0.95
702
+ 15.8, 1,
703
+ 16.5, 0
704
+ ]
590
705
  }
591
706
  },
592
707
  {
593
- "id": "interior-parking-lots",
708
+ "id": "pattern-pavement",
594
709
  "type": "fill",
595
710
  "source": "indoor-data",
596
711
  "minzoom": 16.5,
597
- "filter": ["==", ["get", "featureType"], "Interior-ParkingLots"],
712
+ "filter": ["==", ["get", "featureType"], "Pattern-Pavement"],
598
713
  "paint": {
599
- "fill-color": "#757575",
600
- "fill-opacity": 0.8
714
+ "fill-color": "#adadad"
601
715
  }
602
- },
716
+ },
603
717
  {
604
- "id": "interior-parking-lots-outline",
605
- "type": "line",
718
+ "id": "corridors-fill",
719
+ "type": "fill",
606
720
  "source": "indoor-data",
607
721
  "minzoom": 16.5,
608
- "filter": ["==", ["get", "featureType"], "Interior-ParkingLots"],
722
+ "filter": [
723
+ "any",
724
+ ["==", ["get", "featureType"], "Corridors"],
725
+ ["==", ["get", "featureType"], "Corridor"]
726
+ ],
609
727
  "paint": {
610
- "line-color": "#616161",
611
- "line-width": 1.5
728
+ "fill-color": "#f0f0f0"
612
729
  }
613
730
  },
614
731
  {
615
- "id": "building-extrusion",
616
- "type": "fill-extrusion",
732
+ "id": "pattern-grass",
733
+ "type": "fill",
617
734
  "source": "indoor-data",
618
- "filter": ["==", ["get", "featureType"], "Boundary"],
619
- "maxzoom": 16.5,
735
+
736
+ "filter": ["==", ["get", "featureType"], "Pattern-Grass"],
620
737
  "paint": {
621
- "fill-extrusion-color": "#162e51",
622
- "fill-extrusion-height": 15,
623
- "fill-extrusion-base": 0,
624
- "fill-extrusion-opacity": 1
738
+ "fill-color": "#B6D0AE",
739
+ "fill-opacity": 1
625
740
  }
626
- },
627
-
741
+ },
628
742
  {
629
- "id": "units-wall-extrusion",
630
- "type": "fill-extrusion",
631
- "source": "unit-walls",
743
+ "id": "pattern-trees",
744
+ "type": "fill",
745
+ "source": "indoor-data",
632
746
  "minzoom": 16.5,
633
- "filter": [
634
- "all",
635
- ["==", ["get", "featureType"], "UnitWalls"],
636
- ["!", ["has", "custom_height"]]
637
- ],
747
+ "filter": ["==", ["get", "featureType"], "Pattern-Trees"],
638
748
  "paint": {
639
- "fill-extrusion-color": [
640
- "case",
641
- ["has", "category"],
642
- [
643
- "match",
644
- ["get", "category"],
645
- "healthcare",
646
- "#5B2DB8",
647
- "emergency",
648
- "#B91C1C",
649
- "diagnostic",
650
- "#0C7FAB",
651
- "surgical",
652
- "#5B2DB8",
653
- "retail",
654
- "#CC5555",
655
- "fnb",
656
- "#CC8400",
657
- "admin",
658
- "#7B73CC",
659
- "amenities",
660
- "#3A9B88",
661
- "staff",
662
- "#5C96CC",
663
- "security",
664
- "#135C75",
665
- "waiting",
666
- "#B894C2",
667
- "#eeeeee"
668
- ],
669
- "#eeeeee"
670
- ],
671
- "fill-extrusion-height": [
672
- "interpolate",
673
- ["linear"],
674
- ["zoom"],
675
- 15.5,
676
- 0,
677
- 16.5,
678
- 2,
679
- 17.5,
680
- 3,
681
- 18.2,
682
- 3.2
749
+ "fill-color": "#7D9F64",
750
+ "fill-opacity": 1
751
+ }
752
+ },
753
+ {
754
+ "id": "custom-artLayer-5-fill",
755
+ "type": "fill",
756
+ "source": "indoor-data",
757
+ "minzoom": 16.5,
758
+ "filter": ["==", ["get", "featureType"], "CustomArtLayer-5"],
759
+ "paint": {
760
+ "fill-color": "#DDE9F0",
761
+ "fill-opacity": 0.8
762
+ }
763
+ },
764
+ {
765
+ "id": "custom-artLayer-4-fill",
766
+ "type": "fill",
767
+ "source": "indoor-data",
768
+ "minzoom": 16.5,
769
+ "filter": ["==", ["get", "featureType"], "CustomArtLayer-4"],
770
+ "paint": {
771
+ "fill-color": "#D1D1D1"
772
+ }
773
+ },
774
+ {
775
+ "id": "custom-artLayer-2-fill",
776
+ "type": "fill",
777
+ "source": "indoor-data",
778
+ "minzoom": 16.5,
779
+ "filter": ["==", ["get", "featureType"], "CustomArtLayer-2"],
780
+ "paint": {
781
+ "fill-color": "#B7C3CB"
782
+ }
783
+ },
784
+ {
785
+ "id": "custom-artLayer-1-fill",
786
+ "type": "fill",
787
+ "source": "indoor-data",
788
+ "minzoom": 16.5,
789
+ "filter": ["==", ["get", "featureType"], "CustomArtLayer-1"],
790
+ "paint": {
791
+ "fill-color": "#B7C3CB"
792
+ }
793
+ },
794
+ {
795
+ "id": "units-fill",
796
+ "type": "fill",
797
+ "source": "indoor-data",
798
+ "minzoom": 16.5,
799
+ "filter": ["==", ["get", "featureType"], "Units"],
800
+ "paint": {
801
+ "fill-color": ["coalesce", ["get", "zoneColor"], "#f7f8fa"],
802
+ "fill-color-transition": { "duration": 350 },
803
+ "fill-opacity": [
804
+ "interpolate",
805
+ ["linear"],
806
+ ["zoom"],
807
+ 15,
808
+ 0.85,
809
+ 17,
810
+ 0.92,
811
+ 19,
812
+ 1
813
+ ]
814
+ }
815
+ },
816
+ {
817
+ "id": "units-outline-2d",
818
+ "type": "line",
819
+ "source": "indoor-data",
820
+ "minzoom": 16.5,
821
+ "filter": ["==", ["get", "featureType"], "Units"],
822
+ "layout": {
823
+ "visibility": "visible",
824
+ "line-join": "round",
825
+ "line-cap": "round"
826
+ },
827
+ "paint": {
828
+ "line-color": "#ffffff",
829
+ "line-opacity": 0.9,
830
+ "line-width": ["interpolate", ["linear"], ["zoom"], 16, 0.8, 18, 1.4, 20, 2.2]
831
+ }
832
+ },
833
+ {
834
+ "id": "backofhouse-fill",
835
+ "type": "fill",
836
+ "source": "indoor-data",
837
+ "minzoom": 16.5,
838
+ "filter": ["==", ["get", "featureType"], "Back-of-house"],
839
+ "paint": {
840
+ "fill-color": "#e6e6e2",
841
+ "fill-opacity": 1
842
+ }
843
+ },
844
+
845
+ {
846
+ "id": "backofhouse-outline-2d",
847
+ "type": "line",
848
+ "source": "indoor-data",
849
+ "minzoom": 16.5,
850
+ "filter": ["==", ["get", "featureType"], "Back-of-house"],
851
+ "layout": {
852
+ "line-join": "round",
853
+ "line-cap": "round"
854
+ },
855
+ "paint": {
856
+ "line-color": "#121213",
857
+ "line-width": [
858
+ "interpolate",
859
+ ["linear"],
860
+ ["zoom"],
861
+ 16,
862
+ 0.6,
863
+ 18,
864
+ 1.0,
865
+ 20,
866
+ 1.4
683
867
  ],
684
- "fill-extrusion-base": 0,
685
- "fill-extrusion-vertical-gradient": false,
686
- "fill-extrusion-opacity": 0.9
868
+ "line-opacity": 1
687
869
  }
688
870
  },
689
871
 
690
872
  {
691
- "id": "units-wall-custom-extrusion",
692
- "type": "fill-extrusion",
693
- "source": "unit-walls",
873
+ "id": "restrooms-fill",
874
+ "type": "fill",
875
+ "source": "indoor-data",
694
876
  "minzoom": 16.5,
695
- "filter": ["has", "custom_height"],
877
+ "filter": ["==", ["get", "featureType"], "Restrooms"],
696
878
  "paint": {
697
- "fill-extrusion-color": [
698
- "case",
699
- ["has", "category"],
700
- [
701
- "match",
702
- ["get", "category"],
703
- "healthcare",
704
- "#5B2DB8",
705
- "emergency",
706
- "#B91C1C",
707
- "diagnostic",
708
- "#0C7FAB",
709
- "surgical",
710
- "#5B2DB8",
711
- "retail",
712
- "#CC5555",
713
- "fnb",
714
- "#CC8400",
715
- "admin",
716
- "#7B73CC",
717
- "amenities",
718
- "#3A9B88",
719
- "staff",
720
- "#5C96CC",
721
- "security",
722
- "#135C75",
723
- "waiting",
724
- "#B894C2",
725
- "#FDFAF2"
726
- ],
727
- "#FDFAF2"
879
+ "fill-color": "#5f9070",
880
+ "fill-opacity": 1
881
+ }
882
+ },
883
+ {
884
+ "id": "restrooms-outline-2d",
885
+ "type": "line",
886
+ "source": "indoor-data",
887
+ "minzoom": 16.5,
888
+ "filter": ["==", ["get", "featureType"], "Restrooms"],
889
+ "layout": {
890
+ "line-join": "round",
891
+ "line-cap": "round"
892
+ },
893
+ "paint": {
894
+ "line-color": "#ffffff",
895
+ "line-width": [
896
+ "interpolate",
897
+ ["linear"],
898
+ ["zoom"],
899
+ 16,
900
+ 0.6,
901
+ 18,
902
+ 1.0,
903
+ 20,
904
+ 1.4
728
905
  ],
729
- "fill-extrusion-height": ["to-number", ["get", "custom_height"]],
730
- "fill-extrusion-base": 0,
731
- "fill-extrusion-vertical-gradient": false,
732
- "fill-extrusion-opacity": 0.95
906
+ "line-opacity": 0.9
733
907
  }
734
908
  },
735
909
 
736
910
  {
737
- "id": "corridors-extrusion",
738
- "type": "fill-extrusion",
911
+ "id": "obstacles-fill",
912
+ "type": "fill",
739
913
  "source": "indoor-data",
740
914
  "minzoom": 16.5,
741
- "filter": [
742
- "any",
743
- ["==", ["get", "featureType"], "Corridors"],
744
- ["==", ["get", "featureType"], "Corridor"]
745
- ],
915
+ "filter": ["==", ["get", "featureType"], "Obstacles"],
916
+ "paint": {
917
+ "fill-color": "#e8e9ed",
918
+ "fill-opacity": 1,
919
+ "fill-outline-color": "#7f7f7f"
920
+ }
921
+ },
922
+ {
923
+ "id": "obstacles-outline-2d",
924
+ "type": "line",
925
+ "source": "indoor-data",
926
+ "minzoom": 16.5,
927
+ "filter": ["==", ["get", "featureType"], "Obstacles"],
746
928
  "layout": {
747
- "visibility": "none"
929
+ "line-join": "round",
930
+ "line-cap": "round"
748
931
  },
749
932
  "paint": {
750
- "fill-extrusion-color": "#FFF8E1",
751
- "fill-extrusion-height": ["step", ["zoom"], 0, 18, 3.2],
752
- "fill-extrusion-base": 0,
753
- "fill-extrusion-opacity": ["step", ["zoom"], 0, 18, 0.85]
933
+ "line-color": "#7f7f7f",
934
+ "line-width": [
935
+ "interpolate",
936
+ ["linear"],
937
+ ["zoom"],
938
+ 16,
939
+ 0.5,
940
+ 18,
941
+ 0.9,
942
+ 20,
943
+ 1.2
944
+ ],
945
+ "line-opacity": 1
754
946
  }
755
947
  },
756
948
 
757
949
  {
758
- "id": "backofhouse-extrusion",
759
- "type": "fill-extrusion",
950
+ "id": "escalators-stairs-elevators",
951
+ "type": "fill",
760
952
  "source": "indoor-data",
761
953
  "minzoom": 16.5,
762
- "filter": ["==", ["get", "featureType"], "Back-of-house"],
954
+ "filter": [
955
+ "in",
956
+ ["get", "featureType"],
957
+ ["literal", ["Escalators", "Stairs", "Elevators"]]
958
+ ],
763
959
  "paint": {
764
- "fill-extrusion-color": "#D6D6CC",
765
- "fill-extrusion-height": [
960
+ "fill-color": "#a9aeb1",
961
+ "fill-opacity": 1,
962
+ "fill-outline-color": "#053851"
963
+ }
964
+ },
965
+ {
966
+ "id": "escalators-stairs-elevators-outline-2d",
967
+ "type": "line",
968
+ "source": "indoor-data",
969
+ "minzoom": 16.5,
970
+ "filter": [
971
+ "in",
972
+ ["get", "featureType"],
973
+ ["literal", ["Escalators", "Stairs", "Elevators"]]
974
+ ],
975
+ "layout": {
976
+ "line-join": "round",
977
+ "line-cap": "round"
978
+ },
979
+ "paint": {
980
+ "line-color": "#4A4C4D",
981
+ "line-width": [
766
982
  "interpolate",
767
983
  ["linear"],
768
984
  ["zoom"],
769
- 15.5,
770
- 0,
771
- 16.5,
772
- 2,
773
- 17.5,
774
- 3,
775
- 18.2,
776
- 3.2
985
+ 16,
986
+ 1,
987
+ 18,
988
+ 1.5,
989
+ 20,
990
+ 4
777
991
  ],
778
- "fill-extrusion-base": 0,
779
- "fill-extrusion-opacity": 1
992
+ "line-opacity": 1
780
993
  }
781
994
  },
782
995
 
996
+
783
997
  {
784
- "id": "restrooms-extrusion",
785
- "type": "fill-extrusion",
998
+ "id": "kiosks-fill",
999
+ "type": "fill",
786
1000
  "source": "indoor-data",
787
1001
  "minzoom": 16.5,
788
- "filter": ["==", ["get", "featureType"], "Restrooms"],
1002
+ "filter": ["==", ["get", "featureType"], "Kiosks"],
789
1003
  "paint": {
790
- "fill-extrusion-color": "#5B8468",
791
- "fill-extrusion-height": [
1004
+ "fill-color": "#ffe396",
1005
+ "fill-opacity": 0.7
1006
+ }
1007
+ },
1008
+
1009
+ {
1010
+ "id": "pattern-lounge",
1011
+ "type": "fill",
1012
+ "source": "indoor-data",
1013
+ "minzoom": 16.5,
1014
+ "filter": ["==", ["get", "featureType"], "Pattern-Lounge"],
1015
+ "paint": {
1016
+ "fill-color": "#ddd2e0",
1017
+ "fill-opacity": 1
1018
+ }
1019
+ },
1020
+
1021
+ {
1022
+ "id": "pattern-indoor-foodcourt",
1023
+ "type": "fill",
1024
+ "source": "indoor-data",
1025
+ "minzoom": 16.5,
1026
+ "filter": ["==", ["get", "featureType"], "Pattern-Indoor-FoodCourt-Seating"],
1027
+ "paint": {
1028
+ "fill-color": "#f3e4c4",
1029
+ "fill-opacity": 1
1030
+ }
1031
+ },
1032
+
1033
+ {
1034
+ "id": "corridors-outline",
1035
+ "type": "line",
1036
+ "source": "indoor-data",
1037
+ "minzoom": 16.5,
1038
+ "filter": [
1039
+ "any",
1040
+ ["==", ["get", "featureType"], "Corridors"],
1041
+ ["==", ["get", "featureType"], "Corridor"]
1042
+ ],
1043
+ "paint": {
1044
+ "line-color": "#343a40",
1045
+ "line-width": [
792
1046
  "interpolate",
793
1047
  ["linear"],
794
1048
  ["zoom"],
795
- 15.5,
796
- 0,
797
- 16.5,
798
- 2,
799
- 17.5,
800
- 3,
1049
+ 15,
1050
+ 0.5,
1051
+ 18,
1052
+ 1,
1053
+ 20,
1054
+ 1.5
1055
+ ]
1056
+ }
1057
+ },
1058
+
1059
+ {
1060
+ "id": "boundary-outline",
1061
+ "type": "line",
1062
+ "source": "indoor-data",
1063
+ "minzoom": 16.5,
1064
+ "filter": ["==", ["get", "featureType"], "Boundary"],
1065
+ "paint": {
1066
+ "line-color": "#9aa4b0",
1067
+ "line-width": [
1068
+ "interpolate",
1069
+ ["linear"],
1070
+ ["zoom"],
1071
+ 12,
1072
+ 1.5,
1073
+ 15,
1074
+ 1.8,
1075
+ 18,
1076
+ 2,
1077
+ 20,
1078
+ 2.2
1079
+ ],
1080
+ "line-opacity": [
1081
+ "interpolate",
1082
+ ["linear"],
1083
+ ["zoom"],
1084
+ 12,
1085
+ 0.4,
1086
+ 17,
1087
+ 0.5,
1088
+ 18,
1089
+ 0.55
1090
+ ]
1091
+ }
1092
+ },
1093
+ {
1094
+ "id": "building-roof-outline",
1095
+ "type": "line",
1096
+ "source": "indoor-data",
1097
+ "minzoom": 16.5,
1098
+ "filter": ["==", ["get", "featureType"], "Boundary"],
1099
+ "layout": {
1100
+ "line-join": "round",
1101
+ "line-cap": "round"
1102
+ },
1103
+ "paint": {
1104
+ "line-color": "#162e51",
1105
+ "line-width": [
1106
+ "interpolate",
1107
+ ["linear"],
1108
+ ["zoom"],
1109
+ 15,
1110
+ 1.5,
1111
+ 18,
1112
+ 2,
1113
+ 20,
1114
+ 2.5
1115
+ ],
1116
+ "line-opacity": 0.55
1117
+ }
1118
+ },
1119
+ {
1120
+ "id": "interior-parking-lots",
1121
+ "type": "fill",
1122
+ "source": "indoor-data",
1123
+ "minzoom": 16.5,
1124
+ "filter": ["==", ["get", "featureType"], "Interior-ParkingLots"],
1125
+ "paint": {
1126
+ "fill-color": "#757575",
1127
+ "fill-opacity": 1
1128
+ }
1129
+ },
1130
+ {
1131
+ "id": "interior-parking-lots-outline",
1132
+ "type": "line",
1133
+ "source": "indoor-data",
1134
+ "minzoom": 16.5,
1135
+ "filter": ["==", ["get", "featureType"], "Interior-ParkingLots"],
1136
+ "paint": {
1137
+ "line-color": "#616161",
1138
+ "line-width": 1.5
1139
+ }
1140
+ },
1141
+ {
1142
+ "id": "building-extrusion",
1143
+ "type": "fill-extrusion",
1144
+ "source": "indoor-data",
1145
+ "filter": ["==", ["get", "featureType"], "Boundary"],
1146
+ "paint": {
1147
+ "fill-extrusion-color": "#162e51",
1148
+ "fill-extrusion-height": [
1149
+ "interpolate",
1150
+ ["linear"],
1151
+ ["zoom"],
1152
+ 15.8, 15,
1153
+ 16.5, 0
1154
+ ],
1155
+ "fill-extrusion-base": 0,
1156
+ "fill-extrusion-opacity": [
1157
+ "interpolate",
1158
+ ["linear"],
1159
+ ["zoom"],
1160
+ 15.8, 1,
1161
+ 16.5, 0
1162
+ ]
1163
+ }
1164
+ },
1165
+ {
1166
+ "id": "units-3d-extrusion",
1167
+ "type": "fill-extrusion",
1168
+ "source": "indoor-data",
1169
+ "minzoom": 16.5,
1170
+ "filter": ["==", ["get", "featureType"], "UnitBlock"],
1171
+ "paint": {
1172
+ "fill-extrusion-color": [
1173
+ "coalesce",
1174
+ ["get", "zoneColor"],
1175
+ [
1176
+ "match",
1177
+ ["get", "category"],
1178
+ "healthcare", "#73b3e7",
1179
+ "surgical", "#73b3e7",
1180
+ "waiting", "#73b3e7",
1181
+ "diagnostic", "#97d4ea",
1182
+ "amenities", "#97d4ea",
1183
+ "emergency", "#f2938c",
1184
+ "retail", "#fee685",
1185
+ "fnb", "#fee685",
1186
+ "admin", "#dfe1e2",
1187
+ "staff", "#dfe1e2",
1188
+ "security", "#dfe1e2",
1189
+ "#e8ecf1"
1190
+ ]
1191
+ ],
1192
+ "fill-extrusion-color-transition": { "duration": 350 },
1193
+ "fill-extrusion-height": [
1194
+ "interpolate",
1195
+ ["linear"],
1196
+ ["zoom"],
1197
+ 16.5, 0,
1198
+ 18, 2.2
1199
+ ],
1200
+ "fill-extrusion-base": 0,
1201
+ "fill-extrusion-vertical-gradient": true,
1202
+ "fill-extrusion-opacity": 1
1203
+ }
1204
+ },
1205
+ {
1206
+ "id": "unit-highlight-fill",
1207
+ "type": "fill",
1208
+ "source": "poi-highlight-data",
1209
+ "minzoom": 16.5,
1210
+ "filter": ["==", ["geometry-type"], "Polygon"],
1211
+ "paint": {
1212
+ "fill-color": [
1213
+ "coalesce",
1214
+ ["get", "zoneColor"],
1215
+ [
1216
+ "match",
1217
+ ["get", "category"],
1218
+ "healthcare", "#73b3e7",
1219
+ "surgical", "#73b3e7",
1220
+ "waiting", "#73b3e7",
1221
+ "diagnostic", "#97d4ea",
1222
+ "amenities", "#97d4ea",
1223
+ "emergency", "#f2938c",
1224
+ "retail", "#fee685",
1225
+ "fnb", "#fee685",
1226
+ "admin", "#dfe1e2",
1227
+ "staff", "#dfe1e2",
1228
+ "security", "#dfe1e2",
1229
+ "#005ea2"
1230
+ ]
1231
+ ],
1232
+ "fill-color-transition": { "duration": 350 },
1233
+ "fill-opacity": [
1234
+ "interpolate",
1235
+ ["linear"],
1236
+ ["zoom"],
1237
+ 15,
1238
+ 0.85,
1239
+ 17,
1240
+ 0.92,
1241
+ 19,
1242
+ 0.95
1243
+ ]
1244
+ }
1245
+ },
1246
+ {
1247
+ "id": "unit-highlight-block",
1248
+ "type": "fill-extrusion",
1249
+ "source": "poi-highlight-data",
1250
+ "minzoom": 16.5,
1251
+ "filter": ["==", ["geometry-type"], "Polygon"],
1252
+ "paint": {
1253
+ "fill-extrusion-color": [
1254
+ "coalesce",
1255
+ ["get", "zoneColor"],
1256
+ [
1257
+ "match",
1258
+ ["get", "category"],
1259
+ "healthcare", "#73b3e7",
1260
+ "surgical", "#73b3e7",
1261
+ "waiting", "#73b3e7",
1262
+ "diagnostic", "#97d4ea",
1263
+ "amenities", "#97d4ea",
1264
+ "emergency", "#f2938c",
1265
+ "retail", "#fee685",
1266
+ "fnb", "#fee685",
1267
+ "admin", "#dfe1e2",
1268
+ "staff", "#dfe1e2",
1269
+ "security", "#dfe1e2",
1270
+ "#005ea2"
1271
+ ]
1272
+ ],
1273
+ "fill-extrusion-color-transition": { "duration": 350 },
1274
+ "fill-extrusion-height": [
1275
+ "interpolate",
1276
+ ["linear"],
1277
+ ["zoom"],
1278
+ 16.5, 0,
1279
+ 18, 2.6
1280
+ ],
1281
+ "fill-extrusion-base": 0,
1282
+ "fill-extrusion-vertical-gradient": true,
1283
+ "fill-extrusion-opacity": 1
1284
+ }
1285
+ },
1286
+
1287
+
1288
+
1289
+
1290
+ {
1291
+ "id": "backofhouse-extrusion",
1292
+ "type": "fill-extrusion",
1293
+ "source": "indoor-data",
1294
+ "minzoom": 16.5,
1295
+ "filter": ["==", ["get", "featureType"], "Back-of-houseBlock"],
1296
+ "paint": {
1297
+ "fill-extrusion-color": "#e6e6e2",
1298
+ "fill-extrusion-height": [
1299
+ "interpolate",
1300
+ ["linear"],
1301
+ ["zoom"],
1302
+ 15.5,
1303
+ 0,
1304
+ 16.5,
1305
+ 1,
1306
+ 17.5,
1307
+ 1.4,
1308
+ 18.2,
1309
+ 1.6
1310
+ ],
1311
+ "fill-extrusion-base": 0,
1312
+ "fill-extrusion-opacity": 1
1313
+ }
1314
+ },
1315
+
1316
+ {
1317
+ "id": "restrooms-extrusion",
1318
+ "type": "fill-extrusion",
1319
+ "source": "indoor-data",
1320
+ "minzoom": 16.5,
1321
+ "filter": ["==", ["get", "featureType"], "RestroomsBlock"],
1322
+ "paint": {
1323
+ "fill-extrusion-color": "#5f9070",
1324
+ "fill-extrusion-height": [
1325
+ "interpolate",
1326
+ ["linear"],
1327
+ ["zoom"],
1328
+ 15.5,
1329
+ 0,
1330
+ 16.5,
1331
+ 1,
1332
+ 17.5,
1333
+ 1.4,
1334
+ 18.2,
1335
+ 1.6
1336
+ ],
1337
+ "fill-extrusion-base": 0,
1338
+ "fill-extrusion-opacity": 0.95
1339
+ }
1340
+ },
1341
+
1342
+ {
1343
+ "id": "obstacles-extrusion",
1344
+ "type": "fill-extrusion",
1345
+ "source": "indoor-data",
1346
+ "minzoom": 16.5,
1347
+ "filter": ["==", ["get", "featureType"], "ObstaclesBlock"],
1348
+ "paint": {
1349
+ "fill-extrusion-color": "#E8E9ED",
1350
+ "fill-extrusion-height": [
1351
+ "interpolate",
1352
+ ["linear"],
1353
+ ["zoom"],
1354
+ 15.5,
1355
+ 0,
1356
+ 16.5,
1357
+ 0.4,
1358
+ 17.5,
1359
+ 0.6,
801
1360
  18.2,
802
- 3.2
1361
+ 0.8
1362
+ ],
1363
+ "fill-extrusion-base": 0,
1364
+ "fill-extrusion-opacity": 1
1365
+ }
1366
+ },
1367
+
1368
+ {
1369
+ "id": "escalators-stairs-elevators-extrusion",
1370
+ "type": "fill-extrusion",
1371
+ "source": "indoor-data",
1372
+ "minzoom": 16.5,
1373
+ "filter": [
1374
+ "in",
1375
+ ["get", "featureType"],
1376
+ ["literal", ["EscalatorsBlock", "StairsBlock", "ElevatorsBlock"]]
1377
+ ],
1378
+ "paint": {
1379
+ "fill-extrusion-color": "#a9aeb1",
1380
+ "fill-extrusion-height": [
1381
+ "interpolate",
1382
+ ["linear"],
1383
+ ["zoom"],
1384
+ 15.5,
1385
+ 0,
1386
+ 16.5,
1387
+ 1,
1388
+ 17.5,
1389
+ 1.4,
1390
+ 18.2,
1391
+ 1.6
1392
+ ],
1393
+ "fill-extrusion-base": 0,
1394
+ "fill-extrusion-vertical-gradient": true,
1395
+ "fill-extrusion-opacity": 0.9
1396
+ }
1397
+ },
1398
+
1399
+ {
1400
+ "id": "interior-parking-extrusion",
1401
+ "type": "fill-extrusion",
1402
+ "source": "indoor-data",
1403
+ "minzoom": 16.5,
1404
+ "filter": ["==", ["get", "featureType"], "Interior-ParkingLots"],
1405
+ "paint": {
1406
+ "fill-extrusion-color": "#757575",
1407
+ "fill-extrusion-height": [
1408
+ "interpolate",
1409
+ ["linear"],
1410
+ ["zoom"],
1411
+ 15,
1412
+ 0,
1413
+ 16,
1414
+ 1,
1415
+ 17,
1416
+ 1.4,
1417
+ 18,
1418
+ 1.6
1419
+ ],
1420
+ "fill-extrusion-base": 0,
1421
+ "fill-extrusion-opacity": 0.85
1422
+ }
1423
+ },
1424
+ {
1425
+ "id": "map-labels",
1426
+ "type": "symbol",
1427
+ "source": "map-labels-data",
1428
+ "minzoom": 15.5,
1429
+ "filter": ["!", ["in", "Building", ["get", "name"]]],
1430
+ "layout": {
1431
+ "symbol-sort-key": 10,
1432
+ "text-field": ["get", "name"],
1433
+ "text-size": [
1434
+ "interpolate", ["linear"], ["zoom"],
1435
+ 15.5, 12,
1436
+ 16.5, 15,
1437
+ 18, 18,
1438
+ 20, 20
1439
+ ],
1440
+ "text-font": ["Noto Sans Bold"],
1441
+ "text-letter-spacing": 0.04,
1442
+ "text-max-width": 10,
1443
+ "text-anchor": "center",
1444
+ "text-rotate": ["get", "rotation"],
1445
+ "text-rotation-alignment": "viewport",
1446
+ "text-allow-overlap": false,
1447
+ "text-padding": 4
1448
+ },
1449
+ "paint": {
1450
+ "text-color": "#3d4551",
1451
+ "text-halo-color": "#FFFFFF",
1452
+ "text-halo-width": 1.4,
1453
+ "text-halo-blur": 0.5
1454
+ }
1455
+ },
1456
+ {
1457
+ "id": "map-labels-buildings",
1458
+ "type": "symbol",
1459
+ "source": "map-labels-data",
1460
+ "minzoom": 17,
1461
+ "filter": [
1462
+ "all",
1463
+ ["in", "Building", ["get", "name"]]
1464
+ ],
1465
+ "layout": {
1466
+ "symbol-sort-key": 10,
1467
+ "icon-image": "map-label-bg",
1468
+ "icon-text-fit": "both",
1469
+ "icon-text-fit-padding": [2, 2, 2, 2],
1470
+ "icon-allow-overlap": false,
1471
+ "icon-ignore-placement": false,
1472
+ "text-field": [
1473
+ "format",
1474
+ "\uea40", {"text-font": ["literal", ["Material Icons"]]},
1475
+
1476
+ ["slice", ["get", "name"], ["+", ["index-of", "Building", ["get", "name"]], 9]], {}
1477
+ ],
1478
+ "text-size": [
1479
+ "interpolate", ["linear"], ["zoom"],
1480
+ 15.5, 14,
1481
+ 16.5, 16,
1482
+ 18, 18,
1483
+ 20, 20
1484
+ ],
1485
+ "text-font": ["Noto Sans Bold"],
1486
+ "text-letter-spacing": 0.04,
1487
+ "text-max-width": 10,
1488
+ "text-anchor": "center",
1489
+
1490
+ "text-rotation-alignment": "viewport",
1491
+ "text-allow-overlap": false,
1492
+ "text-padding": 4
1493
+ },
1494
+ "paint": {
1495
+ "text-color": "#fffffe"
1496
+ }
1497
+ },
1498
+
1499
+ {
1500
+ "id": "poi-entrance-exit-icons",
1501
+ "type": "symbol",
1502
+ "source": "poi-data",
1503
+ "filter": ["==", ["get", "amenityCategory"], "entrance"],
1504
+ "minzoom": 15,
1505
+ "layout": {
1506
+ "symbol-sort-key": ["get", "rank"],
1507
+ "icon-image": ["get", "iconId"],
1508
+ "icon-size": [
1509
+ "interpolate", ["exponential", 1.3], ["zoom"],
1510
+ 15, 0.3,
1511
+ 16, 0.5,
1512
+ 18, 0.6,
1513
+ 20, 0.75,
1514
+ 22, 0.9
1515
+ ],
1516
+ "icon-optional": false,
1517
+ "icon-rotation-alignment": "viewport",
1518
+ "icon-pitch-alignment": "viewport",
1519
+ "icon-allow-overlap":true,
1520
+ "text-field": ["get", "name"],
1521
+ "text-size": [
1522
+ "interpolate", ["linear"], ["zoom"],
1523
+ 16, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 17],
1524
+ 19, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 19],
1525
+ 20, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 22]
1526
+ ],
1527
+
1528
+ "text-anchor": "top",
1529
+ "text-optional": true,
1530
+ "text-padding": 2,
1531
+ "text-font": ["Noto Sans Bold"],
1532
+ "text-rotation-alignment": "viewport"
1533
+ },
1534
+ "paint": {
1535
+ "text-color": "#242930",
1536
+ "text-halo-color": "#FFFFFF",
1537
+ "text-halo-width": 1.5,
1538
+ "text-halo-blur": 1,
1539
+ "icon-translate": [0, -20],
1540
+ "icon-translate-anchor": "viewport"
1541
+ }
1542
+ },
1543
+ {
1544
+ "id": "poi-parking-icons",
1545
+ "type": "symbol",
1546
+ "source": "poi-data",
1547
+ "filter": ["==", ["get", "amenityCategory"], "parking"],
1548
+ "minzoom": 14,
1549
+ "layout": {
1550
+ "symbol-sort-key": ["get", "rank"],
1551
+ "icon-image": ["get", "iconId"],
1552
+ "icon-size": [
1553
+ "interpolate", ["exponential", 1.3], ["zoom"],
1554
+ 15, 0.3,
1555
+ 16, 0.5,
1556
+ 18, 0.6,
1557
+ 20, 0.75,
1558
+ 22, 0.9
1559
+ ],
1560
+ "icon-allow-overlap": true,
1561
+ "icon-optional": false,
1562
+ "icon-rotation-alignment": "viewport",
1563
+ "icon-pitch-alignment": "viewport",
1564
+
1565
+ "text-field": ["get", "name"],
1566
+ "text-size": [
1567
+ "interpolate", ["linear"], ["zoom"],
1568
+ 16, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 17],
1569
+ 19, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 19],
1570
+ 20, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 22]
1571
+ ],
1572
+ "text-offset": [0, 1.3],
1573
+ "text-anchor": "top",
1574
+ "text-optional": true,
1575
+ "text-padding": 4,
1576
+ "text-font": ["Noto Sans Bold"],
1577
+ "text-rotation-alignment": "viewport"
1578
+ },
1579
+ "paint": {
1580
+ "text-color": "#242930",
1581
+ "text-halo-color": "#FFFFFF",
1582
+ "text-halo-width": 1.5,
1583
+ "text-halo-blur": 1,
1584
+ "icon-translate": [0, -20],
1585
+ "icon-translate-anchor": "viewport"
1586
+ }
1587
+ },
1588
+ {
1589
+ "id": "poi-bus-icons",
1590
+ "type": "symbol",
1591
+ "source": "poi-data",
1592
+ "filter": ["==", ["get", "amenityCategory"], "bus"],
1593
+ "minzoom": 14,
1594
+ "layout": {
1595
+ "symbol-sort-key": ["get", "rank"],
1596
+ "icon-image": ["get", "iconId"],
1597
+ "icon-size": [
1598
+ "interpolate", ["exponential", 1.3], ["zoom"],
1599
+ 15, 0.3,
1600
+ 16, 0.5,
1601
+ 18, 0.6,
1602
+ 20, 0.75,
1603
+ 22, 0.9
1604
+ ],
1605
+ "icon-allow-overlap": false,
1606
+ "icon-padding": [
1607
+ "interpolate", ["linear"], ["zoom"],
1608
+ 15, 8,
1609
+ 17, 4,
1610
+ 19, 2
1611
+ ],
1612
+ "icon-optional": false,
1613
+ "icon-rotation-alignment": "viewport",
1614
+ "icon-pitch-alignment": "viewport",
1615
+
1616
+ "text-field": ["get", "name"],
1617
+ "text-size": [
1618
+ "interpolate", ["linear"], ["zoom"],
1619
+ 16, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 17],
1620
+ 19, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 19],
1621
+ 20, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 22]
1622
+ ],
1623
+ "text-offset": [0, 1.3],
1624
+ "text-anchor": "top",
1625
+ "text-optional": true,
1626
+ "text-padding": 4,
1627
+ "text-font": ["Noto Sans Bold"],
1628
+ "text-rotation-alignment": "viewport"
1629
+ },
1630
+ "paint": {
1631
+ "text-color": "#242930",
1632
+ "text-halo-color": "#FFFFFF",
1633
+ "text-halo-width": 1.5,
1634
+ "text-halo-blur": 1,
1635
+ "icon-translate": [0, -20],
1636
+ "icon-translate-anchor": "viewport"
1637
+ }
1638
+ },
1639
+ {
1640
+ "id": "poi-connector-icons",
1641
+ "type": "symbol",
1642
+ "source": "poi-data",
1643
+ "filter": ["==", ["get", "amenityCategory"], "connector"],
1644
+ "minzoom": 16.5,
1645
+ "layout": {
1646
+ "symbol-sort-key": ["get", "rank"],
1647
+ "icon-image": ["get", "iconId"],
1648
+ "icon-size": [
1649
+ "interpolate", ["exponential", 1.3], ["zoom"],
1650
+ 15, 0.3,
1651
+ 16, 0.5,
1652
+ 18, 0.6,
1653
+ 20, 0.75,
1654
+ 22, 0.9
1655
+ ],
1656
+ "icon-allow-overlap": false,
1657
+ "icon-padding": [
1658
+ "interpolate", ["linear"], ["zoom"],
1659
+ 15, 8,
1660
+ 17, 4,
1661
+ 19, 2
1662
+ ],
1663
+ "icon-optional": false,
1664
+ "icon-rotation-alignment": "viewport",
1665
+ "icon-pitch-alignment": "viewport",
1666
+
1667
+ "text-field": ["get", "name"],
1668
+ "text-size": [
1669
+ "interpolate", ["linear"], ["zoom"],
1670
+ 16, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 17],
1671
+ 19, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 19],
1672
+ 20, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 22]
1673
+ ],
1674
+ "text-offset": [0, 1.3],
1675
+ "text-anchor": "top",
1676
+ "text-optional": true,
1677
+ "text-padding": 4,
1678
+ "text-font": ["Noto Sans Bold"],
1679
+ "text-rotation-alignment": "viewport"
1680
+ },
1681
+ "paint": {
1682
+ "text-color": "#242930",
1683
+ "text-halo-color": "#FFFFFF",
1684
+ "text-halo-width": 1.5,
1685
+ "text-halo-blur": 1,
1686
+ "icon-translate": [0, -20],
1687
+ "icon-translate-anchor": "viewport"
1688
+ }
1689
+ },
1690
+ {
1691
+ "id": "poi-information-icons",
1692
+ "type": "symbol",
1693
+ "source": "poi-data",
1694
+ "filter": ["==", ["get", "amenityCategory"], "information"],
1695
+ "minzoom": 16.5,
1696
+ "layout": {
1697
+ "symbol-sort-key": ["get", "rank"],
1698
+ "icon-image": ["get", "iconId"],
1699
+ "icon-size": [
1700
+ "interpolate", ["exponential", 1.3], ["zoom"],
1701
+ 15, 0.3,
1702
+ 16, 0.5,
1703
+ 18, 0.6,
1704
+ 20, 0.75,
1705
+ 22, 0.9
1706
+ ],
1707
+ "icon-allow-overlap": false,
1708
+ "icon-padding": [
1709
+ "interpolate", ["linear"], ["zoom"],
1710
+ 15, 8,
1711
+ 17, 4,
1712
+ 19, 2
1713
+ ],
1714
+ "icon-optional": false,
1715
+ "icon-rotation-alignment": "viewport",
1716
+ "icon-pitch-alignment": "viewport",
1717
+
1718
+ "text-field": ["get", "name"],
1719
+ "text-size": [
1720
+ "interpolate", ["linear"], ["zoom"],
1721
+ 16, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 17],
1722
+ 19, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 19],
1723
+ 20, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 22]
1724
+ ],
1725
+ "text-offset": [0, 1.3],
1726
+ "text-anchor": "top",
1727
+ "text-optional": true,
1728
+ "text-padding": 4,
1729
+ "text-font": ["Noto Sans Bold"],
1730
+ "text-rotation-alignment": "viewport"
1731
+ },
1732
+ "paint": {
1733
+ "text-color": "#242930",
1734
+ "text-halo-color": "#FFFFFF",
1735
+ "text-halo-width": 1.5,
1736
+ "text-halo-blur": 1,
1737
+ "icon-translate": [0, -20],
1738
+ "icon-translate-anchor": "viewport"
1739
+ }
1740
+ },
1741
+ {
1742
+ "id": "poi-other-amenity-icons",
1743
+ "type": "symbol",
1744
+ "source": "poi-data",
1745
+ "filter": [
1746
+ "all",
1747
+ ["==", ["get", "amenityCategory"], "other"],
1748
+ ["<=", ["get", "rank"], ["step", ["zoom"], 0, 17, 2, 18, 3]]
1749
+ ],
1750
+ "minzoom": 16.5,
1751
+ "layout": {
1752
+ "symbol-sort-key": ["get", "rank"],
1753
+ "icon-image": ["get", "iconId"],
1754
+ "icon-size": [
1755
+ "interpolate", ["exponential", 1.3], ["zoom"],
1756
+ 15, 0.3,
1757
+ 16, 0.5,
1758
+ 18, 0.6,
1759
+ 20, 0.75,
1760
+ 22, 0.9
1761
+ ],
1762
+ "icon-allow-overlap": false,
1763
+ "icon-padding": [
1764
+ "interpolate", ["linear"], ["zoom"],
1765
+ 15, 8,
1766
+ 17, 4,
1767
+ 19, 2
1768
+ ],
1769
+ "icon-optional": false,
1770
+ "icon-rotation-alignment": "viewport",
1771
+ "icon-pitch-alignment": "viewport",
1772
+
1773
+ "text-field": ["get", "name"],
1774
+ "text-size": [
1775
+ "interpolate", ["linear"], ["zoom"],
1776
+ 16, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 17],
1777
+ 19, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 19],
1778
+ 20, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 22]
1779
+ ],
1780
+ "text-offset": [0, 1.3],
1781
+ "text-anchor": "top",
1782
+ "text-optional": true,
1783
+ "text-padding": 4,
1784
+ "text-font": ["Noto Sans Bold"],
1785
+ "text-rotation-alignment": "viewport"
1786
+ },
1787
+ "paint": {
1788
+ "text-color": "#242930",
1789
+ "text-halo-color": "#FFFFFF",
1790
+ "text-halo-width": 1.5,
1791
+ "text-halo-blur": 1,
1792
+ "icon-translate": [0, -20],
1793
+ "icon-translate-anchor": "viewport"
1794
+ }
1795
+ },
1796
+ {
1797
+ "id": "poi-restroom-group-icons",
1798
+ "type": "symbol",
1799
+ "source": "restroom-group-data",
1800
+ "minzoom": 16.5,
1801
+ "layout": {
1802
+ "symbol-sort-key": 0,
1803
+ "icon-image": "material-wc",
1804
+ "icon-size": [
1805
+ "interpolate", ["exponential", 1.3], ["zoom"],
1806
+ 15, 0.3,
1807
+ 16, 0.5,
1808
+ 18, 0.6,
1809
+ 20, 0.75,
1810
+ 22, 0.9
1811
+ ],
1812
+ "icon-allow-overlap": false,
1813
+ "icon-padding": [
1814
+ "interpolate", ["linear"], ["zoom"],
1815
+ 15, 8,
1816
+ 17, 4,
1817
+ 19, 2
1818
+ ],
1819
+ "icon-optional": false,
1820
+ "icon-rotation-alignment": "viewport",
1821
+ "icon-pitch-alignment": "viewport"
1822
+ },
1823
+ "paint": {
1824
+ "icon-translate": [0, -20],
1825
+ "icon-translate-anchor": "viewport"
1826
+ }
1827
+ },
1828
+ {
1829
+ "id": "poi-amenity-instance-labels",
1830
+ "type": "symbol",
1831
+ "source": "poi-data",
1832
+ "filter": ["all", ["==", ["get", "poiType"], "amenity"], ["has", "instanceName"]],
1833
+
1834
+ "layout": {
1835
+ "symbol-sort-key": ["get", "rank"],
1836
+ "text-field": ["get", "instanceName"],
1837
+ "text-size": [
1838
+ "interpolate", ["linear"], ["zoom"],
1839
+ 16, 14,
1840
+ 19, 15,
1841
+ 22, 17
1842
+ ],
1843
+ "text-offset": [
1844
+ "interpolate", ["linear"], ["zoom"],
1845
+ 16, ["literal", [0, 0.25]],
1846
+ 17, ["literal", [0, 0.15]],
1847
+ 19, ["literal", [0, 0.25]],
1848
+ 20, ["literal", [0, 0.45]],
1849
+ 22, ["literal", [0, 0.85]]
1850
+ ],
1851
+ "text-anchor": "top",
1852
+ "text-optional": true,
1853
+ "text-padding": 4,
1854
+ "text-font": ["Noto Sans Bold"],
1855
+ "text-rotation-alignment": "viewport"
1856
+ },
1857
+ "paint": {
1858
+ "text-color": "#0f1114",
1859
+ "text-halo-color": "#ffffff",
1860
+ "text-halo-width": 1.5,
1861
+ "text-halo-blur": 0.1
1862
+ }
1863
+ },
1864
+ {
1865
+ "id": "poi-destination-dots",
1866
+ "type": "symbol",
1867
+ "source": "poi-destination-cluster-data",
1868
+ "filter": ["!", ["has", "point_count"]],
1869
+ "minzoom": 16.5,
1870
+ "maxzoom": 18.25,
1871
+ "layout": {
1872
+ "icon-image": "destination-dot",
1873
+ "icon-size": [
1874
+ "interpolate", ["linear"], ["zoom"],
1875
+ 14, 0.1,
1876
+ 16, 0.8,
1877
+ 17.30, 0.8,
1878
+ 18, 0.5,
1879
+ 20, 0.8
1880
+ ],
1881
+ "icon-overlap": "cooperative",
1882
+ "icon-ignore-placement": false,
1883
+ "icon-padding": 0,
1884
+ "icon-rotation-alignment": "viewport",
1885
+ "icon-pitch-alignment": "viewport"
1886
+ }
1887
+ },
1888
+ {
1889
+ "id": "poi-destination-cluster-bubbles",
1890
+ "type": "symbol",
1891
+ "source": "poi-destination-cluster-data",
1892
+ "filter": ["has", "point_count"],
1893
+ "minzoom": 16.5,
1894
+ "maxzoom": 18.25,
1895
+ "layout": {
1896
+ "icon-image": "destination-cluster-dot",
1897
+ "icon-size": [
1898
+ "step", ["get", "point_count"],
1899
+ 1.3,
1900
+ 10, 1.5,
1901
+ 25, 1.7
1902
+ ],
1903
+ "icon-overlap": "cooperative",
1904
+ "icon-ignore-placement": false,
1905
+ "icon-padding": 0,
1906
+ "icon-rotation-alignment": "viewport",
1907
+ "icon-pitch-alignment": "viewport",
1908
+ "text-field": ["get", "point_count_abbreviated"],
1909
+ "text-size": 18,
1910
+ "text-font": ["Noto Sans Bold"],
1911
+ "text-overlap": "always",
1912
+ "text-ignore-placement": true,
1913
+ "text-rotation-alignment": "viewport",
1914
+ "text-pitch-alignment": "viewport"
1915
+ },
1916
+ "paint": {
1917
+ "text-color": "#ffffff"
1918
+ }
1919
+ },
1920
+ {
1921
+ "id": "poi-destination-labels",
1922
+ "type": "symbol",
1923
+ "source": "poi-data",
1924
+ "filter": [
1925
+ "all",
1926
+ ["==", ["get", "poiType"], "destination"],
1927
+ ["==", ["get", "showLabel"], true],
1928
+ ["any", ["!", ["has", "groupSize"]], ["has", "isGroupLead"]]
1929
+ ],
1930
+ "layout": {
1931
+ "symbol-sort-key": 0,
1932
+ "icon-image": "destination-dot",
1933
+ "icon-size": [
1934
+ "interpolate", ["linear"], ["zoom"],
1935
+ 14, 0.1,
1936
+ 16, 0.8,
1937
+ 17.30, 0.8,
1938
+ 18, 0.5,
1939
+ 20, 0.8
1940
+ ],
1941
+ "icon-overlap": "cooperative",
1942
+ "icon-ignore-placement": false,
1943
+ "icon-padding": 0,
1944
+ "icon-optional": false,
1945
+ "icon-rotation-alignment": "viewport",
1946
+ "icon-pitch-alignment": "viewport",
1947
+ "text-field": ["get", "name"],
1948
+ "text-size": 16,
1949
+ "text-variable-anchor-offset": [
1950
+ "case", ["has", "groupSize"],
1951
+ ["literal", ["top", [0, 1], "right", [-0.9, 0], "bottom", [0, -1], "left", [0.9, 0]]],
1952
+ ["literal", ["top", [0, 0.5], "right", [-0.5, 0], "bottom", [0, -0.5], "left", [0.5, 0]]]
1953
+ ],
1954
+ "text-variable-anchor": ["top", "right" , "bottom", "left"],
1955
+ "text-font": ["Noto Sans Bold"],
1956
+ "text-max-width": 12,
1957
+ "text-overlap": "never",
1958
+ "text-padding": 4,
1959
+ "text-optional": true,
1960
+ "text-rotation-alignment": "viewport"
1961
+ },
1962
+ "paint": {
1963
+ "text-color": "#F2F2F2",
1964
+ "text-halo-color": "#242930",
1965
+ "text-halo-width": 2,
1966
+ "text-halo-blur": 0
1967
+ }
1968
+ },
1969
+ {
1970
+ "id": "poi-destination-group-bubbles",
1971
+ "type": "symbol",
1972
+ "source": "poi-data",
1973
+ "filter": [
1974
+ "all",
1975
+ ["==", ["get", "poiType"], "destination"],
1976
+ ["has", "isGroupLead"]
1977
+ ],
1978
+ "layout": {
1979
+ "icon-image": "destination-group-dot",
1980
+ "icon-size": [
1981
+ "step", ["get", "groupSize"],
1982
+ 1.5,
1983
+ 10, 1,
1984
+ 25, 2.2
1985
+ ],
1986
+ "icon-overlap": "cooperative",
1987
+ "icon-ignore-placement": false,
1988
+ "icon-padding": 0,
1989
+ "icon-rotation-alignment": "viewport",
1990
+ "icon-pitch-alignment": "viewport",
1991
+
1992
+ "text-field": ["concat", "+", ["to-string", ["get", "groupSize"]]],
1993
+ "text-size": 14,
1994
+ "text-font": ["Noto Sans Bold"],
1995
+ "text-overlap": "always",
1996
+ "text-ignore-placement": true,
1997
+ "text-rotation-alignment": "viewport",
1998
+ "text-pitch-alignment": "viewport"
1999
+ },
2000
+ "paint": {
2001
+ "text-color": "#ffffff"
2002
+ }
2003
+ },
2004
+ {
2005
+ "id": "poi-destination-circles",
2006
+ "type": "symbol",
2007
+ "source": "poi-data",
2008
+ "filter": [
2009
+ "all",
2010
+ ["==", ["get", "poiType"], "destination"],
2011
+ ["!=", ["get", "showLabel"], true]
2012
+ ],
2013
+ "minzoom": 16.5,
2014
+ "layout": {
2015
+ "icon-image": "destination-dot",
2016
+ "icon-size": [
2017
+ "interpolate", ["linear"], ["zoom"],
2018
+ 14, 0.1,
2019
+ 16, 0.8,
2020
+ 17.30, 0.8,
2021
+ 18, 0.5,
2022
+ 20, 0.8
2023
+ ],
2024
+ "icon-overlap": "cooperative",
2025
+ "icon-ignore-placement": false,
2026
+ "icon-padding": 0,
2027
+ "icon-rotation-alignment": "viewport",
2028
+ "icon-pitch-alignment": "viewport"
2029
+ }
2030
+ },
2031
+ {
2032
+ "id": "route-halo",
2033
+ "type": "line",
2034
+ "source": "route-data",
2035
+ "minzoom": 16.5,
2036
+ "layout": {
2037
+ "line-cap": "round",
2038
+ "line-join": "round"
2039
+ },
2040
+ "paint": {
2041
+ "line-color": "#ffffff",
2042
+ "line-width": [
2043
+ "interpolate", ["linear"], ["zoom"],
2044
+ 16.5, 10,
2045
+ 18.0, 15,
2046
+ 20.0, 21
2047
+ ],
2048
+ "line-opacity": 0.95
2049
+ }
2050
+ },
2051
+ {
2052
+ "id": "route-line",
2053
+ "type": "line",
2054
+ "source": "route-data",
2055
+ "minzoom": 16.5,
2056
+ "layout": {
2057
+ "line-cap": "round",
2058
+ "line-join": "round"
2059
+ },
2060
+ "paint": {
2061
+ "line-color": "#d32f2f",
2062
+ "line-width": [
2063
+ "interpolate", ["linear"], ["zoom"],
2064
+ 16.5, 6,
2065
+ 18.0, 9,
2066
+ 20.0, 13
803
2067
  ],
804
- "fill-extrusion-base": 0,
805
- "fill-extrusion-opacity": 0.9
2068
+ "line-opacity": 1
806
2069
  }
807
2070
  },
808
-
809
2071
  {
810
- "id": "obstacles-extrusion",
811
- "type": "fill-extrusion",
812
- "source": "indoor-data",
2072
+ "id": "route-blocker",
2073
+ "type": "symbol",
2074
+ "source": "route-data",
813
2075
  "minzoom": 16.5,
814
- "filter": ["==", ["get", "featureType"], "Obstacles"],
815
- "paint": {
816
- "fill-extrusion-color": "#E8E9ED",
817
- "fill-extrusion-height": [
818
- "interpolate",
819
- ["linear"],
820
- ["zoom"],
821
- 15.5,
822
- 0,
823
- 16.5,
824
- 0.8,
825
- 17.5,
826
- 1.5,
827
- 18.2,
828
- 2
829
- ],
830
- "fill-extrusion-base": 0,
831
- "fill-extrusion-opacity": 1
2076
+ "layout": {
2077
+ "symbol-placement": "line",
2078
+ "symbol-spacing": 6,
2079
+ "icon-image": "route-blocker",
2080
+ "icon-rotation-alignment": "viewport",
2081
+ "icon-pitch-alignment": "viewport",
2082
+ "icon-overlap": "always",
2083
+ "icon-ignore-placement": false,
2084
+ "icon-padding": 2,
2085
+ "icon-size": [
2086
+ "interpolate", ["linear"], ["zoom"],
2087
+ 16.5, 0.6,
2088
+ 18.0, 0.8,
2089
+ 20.0, 1.0
2090
+ ]
832
2091
  }
833
2092
  },
834
-
835
2093
  {
836
- "id": "escalators-stairs-elevators-extrusion",
837
- "type": "fill-extrusion",
838
- "source": "indoor-data",
2094
+ "id": "route-arrows",
2095
+ "type": "symbol",
2096
+ "source": "route-data",
839
2097
  "minzoom": 16.5,
840
- "filter": [
841
- "in",
842
- ["get", "featureType"],
843
- ["literal", ["Escalators", "Stairs", "Elevators"]]
844
- ],
845
- "paint": {
846
- "fill-extrusion-color": "#6A8799",
847
- "fill-extrusion-height": [
848
- "interpolate",
849
- ["linear"],
850
- ["zoom"],
851
- 15.5,
852
- 0,
853
- 16.5,
854
- 2,
855
- 17.5,
856
- 3,
857
- 18.2,
858
- 3.2
2098
+ "layout": {
2099
+ "symbol-placement": "line",
2100
+ "symbol-spacing": [
2101
+ "interpolate", ["linear"], ["zoom"],
2102
+ 16.5, 150,
2103
+ 18.0, 290,
2104
+ 20.0, 480
859
2105
  ],
860
- "fill-extrusion-base": 0,
861
- "fill-extrusion-vertical-gradient": true,
862
- "fill-extrusion-opacity": 0.9
2106
+ "icon-image": "route-arrow",
2107
+ "icon-rotation-alignment": "map",
2108
+ "icon-pitch-alignment": "map",
2109
+ "icon-allow-overlap": true,
2110
+ "icon-ignore-placement": true,
2111
+ "icon-size": [
2112
+ "interpolate", ["linear"], ["zoom"],
2113
+ 16.5, 0.55,
2114
+ 18.0, 0.75,
2115
+ 20.0, 0.85
2116
+ ]
2117
+ },
2118
+ "paint": {
2119
+ "icon-opacity": 1
863
2120
  }
864
2121
  },
865
-
866
2122
  {
867
- "id": "interior-parking-extrusion",
868
- "type": "fill-extrusion",
869
- "source": "indoor-data",
2123
+ "id": "route-arrows-flow",
2124
+ "type": "symbol",
2125
+ "source": "route-arrows-flow",
870
2126
  "minzoom": 16.5,
871
- "filter": ["==", ["get", "featureType"], "Interior-ParkingLots"],
2127
+ "layout": {
2128
+ "icon-image": "route-arrow",
2129
+ "icon-rotate": ["get", "rotate"],
2130
+ "icon-rotation-alignment": "map",
2131
+ "icon-pitch-alignment": "map",
2132
+ "icon-allow-overlap": true,
2133
+ "icon-ignore-placement": true,
2134
+ "icon-size": [
2135
+ "interpolate", ["linear"], ["zoom"],
2136
+ 16.5, 0.55,
2137
+ 18.0, 0.75,
2138
+ 20.0, 0.85
2139
+ ]
2140
+ },
872
2141
  "paint": {
873
- "fill-extrusion-color": "#757575",
874
- "fill-extrusion-height": [
875
- "interpolate",
876
- ["linear"],
877
- ["zoom"],
878
- 15,
879
- 0,
880
- 16,
881
- 2,
882
- 17,
883
- 3,
884
- 18,
885
- 4
886
- ],
887
- "fill-extrusion-base": 0,
888
- "fill-extrusion-opacity": 0.85
2142
+ "icon-opacity": 1
889
2143
  }
890
2144
  },
891
2145
  {
892
- "id": "route-line",
2146
+ "id": "route-line-active-halo",
893
2147
  "type": "line",
894
- "source": "route-data",
2148
+ "source": "route-active-step",
895
2149
  "minzoom": 16.5,
896
2150
  "layout": {
897
2151
  "line-cap": "round",
898
2152
  "line-join": "round"
899
2153
  },
900
2154
  "paint": {
901
- "line-color": "#007aff",
2155
+ "line-color": "#FFFFFF",
902
2156
  "line-width": [
903
2157
  "interpolate", ["linear"], ["zoom"],
904
- 16.5, 3,
905
- 18.0, 5,
906
- 20.0, 7
2158
+ 16.5, 8,
2159
+ 18.0, 11,
2160
+ 20.0, 14
907
2161
  ],
908
- "line-opacity": 0.9
2162
+ "line-opacity": 0.85
909
2163
  }
910
2164
  },
911
2165
  {
912
- "id": "route-halo",
2166
+ "id": "route-line-active",
913
2167
  "type": "line",
914
- "source": "route-data",
2168
+ "source": "route-active-step",
915
2169
  "minzoom": 16.5,
2170
+ "layout": {
2171
+ "line-cap": "round",
2172
+ "line-join": "round"
2173
+ },
916
2174
  "paint": {
917
- "line-color": "white",
2175
+ "line-color": "#fdb81e",
918
2176
  "line-width": [
919
2177
  "interpolate", ["linear"], ["zoom"],
920
2178
  16.5, 5,
921
2179
  18.0, 7,
922
2180
  20.0, 9
923
2181
  ],
924
- "line-opacity": 0.7
2182
+ "line-opacity": 1
925
2183
  }
926
2184
  },
927
2185
  {
@@ -934,7 +2192,7 @@
934
2192
  "circle-radius": 6,
935
2193
  "circle-color": "#ffffff",
936
2194
  "circle-stroke-width": 3,
937
- "circle-stroke-color": "#007aff",
2195
+ "circle-stroke-color": "#d32f2f",
938
2196
  "circle-opacity": 1
939
2197
  }
940
2198
  },
@@ -946,248 +2204,204 @@
946
2204
  "filter": ["==", ["get", "role"], "destination"],
947
2205
  "paint": {
948
2206
  "circle-radius": 7,
949
- "circle-color": "#007aff",
2207
+ "circle-color": "#d32f2f",
950
2208
  "circle-stroke-width": 3,
951
2209
  "circle-stroke-color": "#ffffff",
952
2210
  "circle-opacity": 1
953
2211
  }
954
2212
  },
955
2213
  {
956
- "id": "poi-accessibility-icons",
2214
+ "id": "poi-route-connector-icons",
957
2215
  "type": "symbol",
958
2216
  "source": "poi-data",
959
- "filter": ["==", ["get", "accessible"], true],
2217
+ "filter": ["all", ["==", ["get", "amenityCategory"], "connector"], ["in", ["to-string", ["get", "waypointId"]], ["literal", []]]],
960
2218
  "minzoom": 16.5,
961
2219
  "layout": {
962
- "icon-image": "wheelchair-accessible",
2220
+ "icon-image": ["get", "iconId"],
963
2221
  "icon-size": [
964
- "interpolate", ["linear"], ["zoom"],
965
- 15, 0.4,
966
- 17, 0.6,
967
- 19, 0.8
2222
+ "interpolate", ["exponential", 1.3], ["zoom"],
2223
+ 15, 0.3,
2224
+ 16, 0.5,
2225
+ 18, 0.6,
2226
+ 20, 0.75,
2227
+ 22, 0.9
968
2228
  ],
969
- "icon-allow-overlap": false,
970
- "icon-padding": 4
971
- }
972
- },
973
-
974
- {
975
- "id": "poi-destination-circles",
976
- "type": "circle",
977
- "source": "poi-data",
978
- "filter": ["==", ["get", "poiType"], "destination"],
979
- "minzoom": 16.5,
980
- "paint": {
981
- "circle-radius": [
2229
+ "icon-allow-overlap": true,
2230
+ "icon-ignore-placement": true,
2231
+ "icon-padding": [
982
2232
  "interpolate", ["linear"], ["zoom"],
983
- 15, 3,
2233
+ 15, 8,
984
2234
  17, 4,
985
- 19, 5,
986
- 20, 6
2235
+ 19, 2
987
2236
  ],
988
- "circle-color": "#162e51",
989
- "circle-stroke-width": 2,
990
- "circle-stroke-color": "#FFFFFF",
991
- "circle-opacity": 0.9
992
- }
993
- },
2237
+ "icon-optional": false,
2238
+ "icon-rotation-alignment": "viewport",
2239
+ "icon-pitch-alignment": "viewport",
994
2240
 
995
- {
996
- "id": "poi-destination-labels",
997
- "type": "symbol",
998
- "source": "poi-data",
999
- "filter": [
1000
- "all",
1001
- ["==", ["get", "poiType"], "destination"],
1002
- ["==", ["get", "showLabel"], true]
1003
- ],
1004
- "minzoom": 18.5,
1005
- "layout": {
1006
2241
  "text-field": ["get", "name"],
1007
2242
  "text-size": [
1008
2243
  "interpolate", ["linear"], ["zoom"],
1009
- 18.5, 12,
1010
- 20, 14
2244
+ 16, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 17],
2245
+ 19, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 19],
2246
+ 20, ["case", ["!=", ["coalesce", ["get", "iconId"], ""], ""], 0, 22]
1011
2247
  ],
1012
- "text-offset": [0, 0.8],
2248
+ "text-offset": [0, 1.3],
1013
2249
  "text-anchor": "top",
2250
+ "text-optional": true,
2251
+ "text-padding": 4,
1014
2252
  "text-font": ["Noto Sans Bold"],
1015
- "text-max-width": 12,
1016
- "text-allow-overlap": false,
1017
2253
  "text-rotation-alignment": "viewport"
1018
2254
  },
1019
2255
  "paint": {
1020
2256
  "text-color": "#242930",
1021
2257
  "text-halo-color": "#FFFFFF",
1022
2258
  "text-halo-width": 1.5,
1023
- "text-halo-blur": 1
2259
+ "text-halo-blur": 1,
2260
+ "icon-translate": [0, -20],
2261
+ "icon-translate-anchor": "viewport"
1024
2262
  }
1025
2263
  },
1026
-
1027
2264
  {
1028
- "id": "poi-entrance-exit-icons",
2265
+ "id": "poi-route-end-flag",
1029
2266
  "type": "symbol",
1030
- "source": "poi-data",
1031
- "filter": [
1032
- "all",
1033
- ["==", ["get", "poiType"], "amenity"],
1034
- [
1035
- "any",
1036
- ["!=", ["index-of", "entrance", ["get", "keywords"]], -1],
1037
- ["!=", ["index-of", "exit", ["get", "keywords"]], -1],
1038
- ["!=", ["index-of", "door", ["get", "keywords"]], -1]
1039
- ]
1040
- ],
1041
- "minzoom": 15,
2267
+ "source": "route-end-data",
2268
+ "filter": ["==", ["get", "kind"], "destination"],
1042
2269
  "layout": {
1043
- "icon-image": ["get", "iconId"],
2270
+ "icon-image": "route-end-flag",
1044
2271
  "icon-size": [
1045
2272
  "interpolate", ["linear"], ["zoom"],
1046
- 16.5, 0.5,
1047
- 18, 0.6,
1048
- 20, 0.8
2273
+ 15, 0.52,
2274
+ 16, 0.8,
2275
+ 18, 0.9,
2276
+ 20, 1,
2277
+ 22, 1.2
1049
2278
  ],
1050
- "icon-allow-overlap": true,
1051
- "icon-padding": 2,
1052
- "icon-optional": false,
2279
+ "icon-overlap": "always",
2280
+ "icon-ignore-placement": false,
1053
2281
  "icon-rotation-alignment": "viewport",
1054
2282
  "icon-pitch-alignment": "viewport",
1055
-
1056
2283
  "text-field": ["get", "name"],
1057
- "text-size": [
1058
- "interpolate", ["linear"], ["zoom"],
1059
- 16.5, 0,
1060
- 18.5, 0,
1061
- 19, 12,
1062
- 20, 13
2284
+ "text-size": 16,
2285
+ "text-variable-anchor-offset": [
2286
+ "top", [0, 1.6],
2287
+ "right", [-2, 0],
2288
+ "bottom", [0, -1.6],
2289
+ "left", [2, 0]
1063
2290
  ],
1064
- "text-offset": [0, 1.3],
1065
- "text-anchor": "top",
1066
- "text-optional": true,
1067
- "text-padding": 4,
1068
2291
  "text-font": ["Noto Sans Bold"],
2292
+ "text-max-width": 12,
2293
+ "text-overlap": "always",
2294
+ "text-ignore-placement": false,
2295
+ "text-optional": false,
1069
2296
  "text-rotation-alignment": "viewport"
1070
2297
  },
1071
2298
  "paint": {
1072
- "icon-halo-color": "#FFFFFF",
1073
- "icon-halo-width": 1.5,
1074
- "icon-halo-blur": 0.5,
1075
- "text-color": "#242930",
1076
- "text-halo-color": "#FFFFFF",
1077
- "text-halo-width": 1.5,
1078
- "text-halo-blur": 1,
1079
- "icon-translate": [0, -20],
1080
- "icon-translate-anchor": "viewport"
2299
+ "text-color": "#F2F2F2",
2300
+ "text-halo-color": "#242930",
2301
+ "text-halo-width": 2,
2302
+ "text-halo-blur": 0
1081
2303
  }
1082
2304
  },
1083
2305
  {
1084
- "id": "poi-parking-icons",
2306
+ "id": "poi-route-end-amenity",
1085
2307
  "type": "symbol",
1086
- "source": "poi-data",
1087
- "filter": [
1088
- "all",
1089
- ["==", ["get", "poiType"], "amenity"],
1090
- [
1091
- "any",
1092
- ["!=", ["index-of", "parking", ["get", "keywords"]], -1],
1093
- ["!=", ["index-of", "park", ["get", "keywords"]], -1]
1094
- ]
1095
- ],
1096
- "minzoom": 14,
2308
+ "source": "route-end-data",
2309
+ "filter": ["==", ["get", "kind"], "amenity"],
1097
2310
  "layout": {
1098
2311
  "icon-image": ["get", "iconId"],
1099
2312
  "icon-size": [
1100
- "interpolate", ["linear"], ["zoom"],
1101
- 16.5, 0.5,
1102
- 18, 0.6,
1103
- 20, 0.8
2313
+ "interpolate", ["exponential", 1.3], ["zoom"],
2314
+ 15, 0.45,
2315
+ 16, 0.75,
2316
+ 18, 0.9,
2317
+ 20, 1.13,
2318
+ 22, 1.35
1104
2319
  ],
1105
- "icon-allow-overlap": true,
1106
- "icon-padding": 2,
1107
- "icon-optional": false,
2320
+ "icon-overlap": "always",
2321
+ "icon-ignore-placement": false,
1108
2322
  "icon-rotation-alignment": "viewport",
1109
2323
  "icon-pitch-alignment": "viewport",
1110
-
1111
- "text-field": ["get", "name"],
2324
+ "text-field": ["coalesce", ["get", "instanceName"], ""],
1112
2325
  "text-size": [
1113
2326
  "interpolate", ["linear"], ["zoom"],
1114
- 16.5, 0,
1115
- 18.5, 0,
1116
- 19, 12,
1117
- 20, 13
2327
+ 16, 14,
2328
+ 19, 15,
2329
+ 22, 17
2330
+ ],
2331
+ "text-offset": [
2332
+ "interpolate", ["linear"], ["zoom"],
2333
+ 16, ["literal", [0, 0.3]],
2334
+ 18, ["literal", [0, 0.5]],
2335
+ 20, ["literal", [0, 0.55]],
2336
+ 22, ["literal", [0, 1.5]]
1118
2337
  ],
1119
- "text-offset": [0, 1.3],
1120
2338
  "text-anchor": "top",
1121
- "text-optional": true,
1122
- "text-padding": 4,
1123
2339
  "text-font": ["Noto Sans Bold"],
2340
+ "text-overlap": "always",
2341
+ "text-ignore-placement": false,
2342
+ "text-optional": true,
1124
2343
  "text-rotation-alignment": "viewport"
1125
2344
  },
1126
2345
  "paint": {
1127
- "icon-halo-color": "#FFFFFF",
1128
- "icon-halo-width": 1.5,
1129
- "icon-halo-blur": 0.5,
1130
- "text-color": "#242930",
2346
+ "icon-translate": [0, -20],
2347
+ "icon-translate-anchor": "viewport",
2348
+ "text-color": "#0F1114",
1131
2349
  "text-halo-color": "#FFFFFF",
1132
2350
  "text-halo-width": 1.5,
1133
- "text-halo-blur": 1,
1134
- "icon-translate": [0, -20],
1135
- "icon-translate-anchor": "viewport"
2351
+ "text-halo-blur": 0.1
1136
2352
  }
1137
2353
  },
2354
+
1138
2355
  {
1139
- "id": "poi-other-amenity-icons",
2356
+ "id": "poi-you-are-here-heading",
1140
2357
  "type": "symbol",
1141
2358
  "source": "poi-data",
1142
2359
  "filter": [
1143
2360
  "all",
1144
- ["==", ["get", "poiType"], "amenity"],
1145
- ["==", ["index-of", "entrance", ["get", "keywords"]], -1],
1146
- ["==", ["index-of", "exit", ["get", "keywords"]], -1],
1147
- ["==", ["index-of", "door", ["get", "keywords"]], -1],
1148
- ["==", ["index-of", "parking", ["get", "keywords"]], -1],
1149
- ["==", ["index-of", "park", ["get", "keywords"]], -1]
2361
+ ["==", ["get", "isYouAreHere"], true],
2362
+ ["==", ["get", "hasHeading"], true]
1150
2363
  ],
1151
- "minzoom": 17.5,
2364
+ "minzoom": 16,
1152
2365
  "layout": {
1153
- "icon-image": ["get", "iconId"],
1154
- "icon-size": [
1155
- "interpolate", ["linear"], ["zoom"],
1156
- 17.5, 0.5,
1157
- 18, 0.6,
1158
- 20, 0.8
1159
- ],
1160
- "icon-allow-overlap": true,
1161
- "icon-padding": 2,
1162
- "icon-optional": false,
1163
- "icon-rotation-alignment": "viewport",
1164
- "icon-pitch-alignment": "viewport",
1165
-
1166
- "text-field": ["get", "name"],
2366
+ "text-field": "▲",
1167
2367
  "text-size": [
1168
2368
  "interpolate", ["linear"], ["zoom"],
1169
- 17.5, 0,
1170
- 18.5, 0,
1171
- 19, 12,
1172
- 20, 13
2369
+ 16, 20,
2370
+ 18, 22,
2371
+ 20, 28
1173
2372
  ],
1174
- "text-offset": [0, 1.3],
1175
- "text-anchor": "top",
1176
- "text-optional": true,
1177
- "text-padding": 4,
1178
2373
  "text-font": ["Noto Sans Bold"],
1179
- "text-rotation-alignment": "viewport"
2374
+ "text-anchor": "bottom",
2375
+ "text-rotate": ["-", ["get", "heading"], 180],
2376
+ "text-rotation-alignment": "map",
2377
+ "text-pitch-alignment": "map",
2378
+ "text-overlap": "always",
2379
+ "text-ignore-placement": false,
2380
+ "text-padding": 4
1180
2381
  },
1181
2382
  "paint": {
1182
- "icon-halo-color": "#FFFFFF",
1183
- "icon-halo-width": 1.5,
1184
- "icon-halo-blur": 0.5,
1185
- "text-color": "#242930",
1186
- "text-halo-color": "#FFFFFF",
1187
- "text-halo-width": 1.5,
1188
- "text-halo-blur": 1,
1189
- "icon-translate": [0, -20],
1190
- "icon-translate-anchor": "viewport"
2383
+ "text-color": "#E31C3D",
2384
+ "text-halo-color": "#162e51",
2385
+ "text-halo-width": 2.5,
2386
+ "text-opacity": 0.9
2387
+ }
2388
+ },
2389
+ {
2390
+ "id": "poi-you-are-here-ring",
2391
+ "type": "circle",
2392
+ "source": "poi-data",
2393
+ "filter": ["==", ["get", "isYouAreHere"], true],
2394
+ "minzoom": 16,
2395
+ "paint": {
2396
+ "circle-radius": [
2397
+ "interpolate", ["linear"], ["zoom"],
2398
+ 16, 14,
2399
+ 18, 18,
2400
+ 20, 24
2401
+ ],
2402
+ "circle-color": "#E31C3D",
2403
+ "circle-opacity": 0.25,
2404
+ "circle-pitch-alignment": "map"
1191
2405
  }
1192
2406
  },
1193
2407
  {
@@ -1195,38 +2409,86 @@
1195
2409
  "type": "symbol",
1196
2410
  "source": "poi-data",
1197
2411
  "filter": ["==", ["get", "isYouAreHere"], true],
1198
- "minzoom": 16.5,
2412
+ "minzoom": 16,
1199
2413
  "layout": {
1200
- "icon-image": [
1201
- "coalesce",
1202
- ["get", "iconId"],
1203
- "you-are-here"
2414
+ "icon-image": "YouAreHereKiosk",
2415
+ "icon-anchor": "bottom",
2416
+ "icon-offset": [
2417
+ "interpolate", ["linear"], ["zoom"],
2418
+ 16, ["literal", [0, 20]],
2419
+ 18, ["literal", [0, 0]]
1204
2420
  ],
1205
2421
  "icon-size": [
1206
2422
  "interpolate", ["linear"], ["zoom"],
1207
- 16.5, 0.8,
1208
- 18.0, 1.0,
1209
- 20.0, 1.2
2423
+ 16, 0.9,
2424
+ 18, 0.8
2425
+ ],
2426
+ "icon-overlap": "never",
2427
+ "icon-ignore-placement": false,
2428
+ "icon-padding": [
2429
+ "interpolate", ["linear"], ["zoom"],
2430
+ 16, 12,
2431
+ 18, 14,
2432
+ 20, 18
1210
2433
  ],
1211
- "icon-allow-overlap": true,
1212
- "icon-ignore-placement": true,
1213
- "icon-anchor": "bottom",
1214
2434
  "text-field": ["get", "name"],
1215
2435
  "text-size": [
1216
2436
  "interpolate", ["linear"], ["zoom"],
1217
- 17.5, 11,
1218
- 19.5, 13
2437
+ 16, 16,
2438
+ 18, 16,
2439
+ 20, 18
1219
2440
  ],
1220
- "text-offset": [0, 1.2],
1221
- "text-anchor": "top",
2441
+ "text-offset": [
2442
+ "interpolate", ["linear"], ["zoom"],
2443
+ 16, ["literal", [0, -1.5]],
2444
+ 18, ["literal", [0, -2.5]]
2445
+ ],
2446
+ "text-anchor": "bottom",
1222
2447
  "text-font": ["Noto Sans Bold"],
1223
- "text-optional": true
2448
+ "text-overlap": "never",
2449
+ "text-ignore-placement": false,
2450
+ "text-padding": [
2451
+ "interpolate", ["linear"], ["zoom"],
2452
+ 16, 8,
2453
+ 18, 10,
2454
+ 20, 12
2455
+ ],
2456
+ "text-optional": false,
2457
+ "text-transform": "uppercase"
1224
2458
  },
1225
2459
  "paint": {
1226
- "text-color": "#ffffff",
1227
- "text-halo-color": "#000000",
1228
- "text-halo-width": 1.5,
1229
- "text-halo-blur": 0.8
2460
+ "text-color": "#E31C3D",
2461
+ "text-halo-color": "#ffffff",
2462
+ "text-halo-width": 2.5,
2463
+ "text-halo-blur": 0.5
2464
+ }
2465
+ },
2466
+
2467
+ {
2468
+ "id": "poi-highlight-ring",
2469
+ "type": "circle",
2470
+ "source": "poi-highlight-data",
2471
+ "filter": ["==", ["geometry-type"], "Point"],
2472
+ "paint": {
2473
+ "circle-radius": 14,
2474
+ "circle-color": "#005ea2",
2475
+ "circle-opacity": 0.45,
2476
+ "circle-pitch-alignment": "map"
2477
+ }
2478
+ },
2479
+ {
2480
+ "id": "poi-highlight-core",
2481
+ "type": "circle",
2482
+ "source": "poi-highlight-data",
2483
+ "filter": ["==", ["geometry-type"], "Point"],
2484
+ "paint": {
2485
+ "circle-radius": 9,
2486
+ "circle-color": "#005ea2",
2487
+ "circle-opacity": 1,
2488
+ "circle-stroke-color": "#ffffff",
2489
+ "circle-stroke-width": 3,
2490
+ "circle-stroke-opacity": 1,
2491
+ "circle-pitch-alignment": "map"
1230
2492
  }
1231
2493
  }
1232
2494
  ]