@tileflow/maps 0.1.0-alpha.16 → 0.1.0-alpha.18
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.
- package/README.md +70 -63
- package/THIRD_PARTY_NOTICES.md +7 -0
- package/assets/streets/build-trees.mjs +167 -273
- package/assets/streets/climate/NOTICE.txt +9 -0
- package/assets/streets/climate/build.py +47 -0
- package/assets/streets/climate/koppen-geiger-1991-2020.tif +0 -0
- package/assets/streets/climate/recipe.json +13 -0
- package/assets/streets/icons/streets-tree-columnar-dark.pattern.svg +200 -105
- package/assets/streets/icons/streets-tree-columnar.pattern.svg +200 -105
- package/assets/streets/icons/streets-tree-conifer-dark.pattern.svg +260 -200
- package/assets/streets/icons/streets-tree-conifer.pattern.svg +260 -200
- package/assets/streets/icons/streets-tree-open-dark.pattern.svg +170 -200
- package/assets/streets/icons/streets-tree-open.pattern.svg +170 -200
- package/assets/streets/icons/streets-tree-round-dark.pattern.svg +160 -158
- package/assets/streets/icons/streets-tree-round.pattern.svg +160 -158
- package/assets/streets/icons/streets-tree-tall-dark.pattern.svg +166 -156
- package/assets/streets/icons/streets-tree-tall.pattern.svg +166 -156
- package/assets/streets/icons/unified-day-aerialway.svg +11 -0
- package/assets/streets/icons/unified-day-airport.svg +11 -0
- package/assets/streets/icons/unified-day-bank.svg +11 -0
- package/assets/streets/icons/unified-day-bar.svg +11 -0
- package/assets/streets/icons/unified-day-beach.svg +11 -0
- package/assets/streets/icons/unified-day-beauty.svg +11 -0
- package/assets/streets/icons/unified-day-bookstore.svg +11 -0
- package/assets/streets/icons/unified-day-buddhist.svg +11 -0
- package/assets/streets/icons/unified-day-bus.svg +11 -0
- package/assets/streets/icons/unified-day-campsite.svg +11 -0
- package/assets/streets/icons/unified-day-car-repair.svg +11 -0
- package/assets/streets/icons/unified-day-car.svg +11 -0
- package/assets/streets/icons/unified-day-charging-station.svg +11 -0
- package/assets/streets/icons/unified-day-christian.svg +11 -0
- package/assets/streets/icons/unified-day-clothing.svg +11 -0
- package/assets/streets/icons/unified-day-coffee.svg +11 -0
- package/assets/streets/icons/unified-day-college.svg +11 -0
- package/assets/streets/icons/unified-day-community.svg +11 -0
- package/assets/streets/icons/unified-day-convenience.svg +11 -0
- package/assets/streets/icons/unified-day-dentist.svg +11 -0
- package/assets/streets/icons/unified-day-doctor.svg +11 -0
- package/assets/streets/icons/unified-day-dog-park.svg +11 -0
- package/assets/streets/icons/unified-day-drinking-water.svg +11 -0
- package/assets/streets/icons/unified-day-education.svg +11 -0
- package/assets/streets/icons/unified-day-electronics.svg +11 -0
- package/assets/streets/icons/unified-day-embassy.svg +11 -0
- package/assets/streets/icons/unified-day-fast-food.svg +11 -0
- package/assets/streets/icons/unified-day-ferry.svg +11 -0
- package/assets/streets/icons/unified-day-fire-station.svg +11 -0
- package/assets/streets/icons/unified-day-fitness.svg +11 -0
- package/assets/streets/icons/unified-day-florist.svg +11 -0
- package/assets/streets/icons/unified-day-food.svg +11 -0
- package/assets/streets/icons/unified-day-fuel.svg +11 -0
- package/assets/streets/icons/unified-day-garden.svg +11 -0
- package/assets/streets/icons/unified-day-golf.svg +11 -0
- package/assets/streets/icons/unified-day-grocery.svg +11 -0
- package/assets/streets/icons/unified-day-harbor.svg +11 -0
- package/assets/streets/icons/unified-day-hardware.svg +11 -0
- package/assets/streets/icons/unified-day-health.svg +11 -0
- package/assets/streets/icons/unified-day-jewish.svg +11 -0
- package/assets/streets/icons/unified-day-laundry.svg +11 -0
- package/assets/streets/icons/unified-day-library.svg +11 -0
- package/assets/streets/icons/unified-day-lodging.svg +11 -0
- package/assets/streets/icons/unified-day-major-transit.svg +11 -0
- package/assets/streets/icons/unified-day-mountain.svg +11 -0
- package/assets/streets/icons/unified-day-muslim.svg +11 -0
- package/assets/streets/icons/unified-day-natural.svg +11 -0
- package/assets/streets/icons/unified-day-nature.svg +11 -0
- package/assets/streets/icons/unified-day-parking-garage.svg +11 -0
- package/assets/streets/icons/unified-day-parking.svg +11 -0
- package/assets/streets/icons/unified-day-pharmacy.svg +11 -0
- package/assets/streets/icons/unified-day-playground.svg +11 -0
- package/assets/streets/icons/unified-day-plaza.svg +11 -0
- package/assets/streets/icons/unified-day-police.svg +11 -0
- package/assets/streets/icons/unified-day-post.svg +11 -0
- package/assets/streets/icons/unified-day-prison.svg +11 -0
- package/assets/streets/icons/unified-day-rail-light.svg +11 -0
- package/assets/streets/icons/unified-day-rail.svg +11 -0
- package/assets/streets/icons/unified-day-services.svg +11 -0
- package/assets/streets/icons/unified-day-shopping.svg +11 -0
- package/assets/streets/icons/unified-day-sport.svg +11 -0
- package/assets/streets/icons/unified-day-stadium.svg +11 -0
- package/assets/streets/icons/unified-day-swimming.svg +11 -0
- package/assets/streets/icons/unified-day-toilet.svg +11 -0
- package/assets/streets/icons/unified-day-town-hall.svg +11 -0
- package/assets/streets/icons/unified-day-waterfall.svg +11 -0
- package/assets/streets/icons/unified-day-worship.svg +11 -0
- package/assets/streets/models/streets-tree-columnar.far.glb +0 -0
- package/assets/streets/models/streets-tree-columnar.glb +0 -0
- package/assets/streets/models/streets-tree-conifer.far.glb +0 -0
- package/assets/streets/models/streets-tree-conifer.glb +0 -0
- package/assets/streets/models/streets-tree-open.far.glb +0 -0
- package/assets/streets/models/streets-tree-open.glb +0 -0
- package/assets/streets/models/streets-tree-round.far.glb +0 -0
- package/assets/streets/models/streets-tree-round.glb +0 -0
- package/assets/streets/models/streets-tree-tall.far.glb +0 -0
- package/assets/streets/models/streets-tree-tall.glb +0 -0
- package/dist/index.d.ts +829 -132
- package/dist/index.js +1397 -539
- package/package.json +3 -4
- package/docs/design-and-assets.md +0 -247
- package/docs/map-1777.md +0 -91
package/dist/index.js
CHANGED
|
@@ -8208,21 +8208,21 @@ import {
|
|
|
8208
8208
|
addresses as addresses4,
|
|
8209
8209
|
boundaries as boundaries7,
|
|
8210
8210
|
buildings as buildings6,
|
|
8211
|
-
defineMap as
|
|
8212
|
-
expr as
|
|
8213
|
-
field as
|
|
8211
|
+
defineMap as defineMap8,
|
|
8212
|
+
expr as expr14,
|
|
8213
|
+
field as field14,
|
|
8214
8214
|
fixed as fixed3,
|
|
8215
8215
|
labels as labels7,
|
|
8216
8216
|
land as land7,
|
|
8217
8217
|
poi as poi4,
|
|
8218
|
-
refineRenderTarget as
|
|
8219
|
-
renderPass as
|
|
8218
|
+
refineRenderTarget as refineRenderTarget6,
|
|
8219
|
+
renderPass as renderPass13,
|
|
8220
8220
|
roads as roads6,
|
|
8221
|
-
token as
|
|
8221
|
+
token as token13,
|
|
8222
8222
|
transit as transit7,
|
|
8223
8223
|
water as water7,
|
|
8224
|
-
withRenderStack as
|
|
8225
|
-
zoom as
|
|
8224
|
+
withRenderStack as withRenderStack11,
|
|
8225
|
+
zoom as zoom13
|
|
8226
8226
|
} from "@tileflow/core";
|
|
8227
8227
|
|
|
8228
8228
|
// src/official/mapbox-rail.ts
|
|
@@ -8286,16 +8286,406 @@ function mapboxRailTransitStyle(color) {
|
|
|
8286
8286
|
};
|
|
8287
8287
|
}
|
|
8288
8288
|
|
|
8289
|
+
// src/official/streets-cartography.ts
|
|
8290
|
+
import {
|
|
8291
|
+
defineMap as defineMap7,
|
|
8292
|
+
expr as expr10,
|
|
8293
|
+
field as field10,
|
|
8294
|
+
refineRenderTarget as refineRenderTarget5,
|
|
8295
|
+
renderPass as renderPass10,
|
|
8296
|
+
resolveMap,
|
|
8297
|
+
token as token7,
|
|
8298
|
+
withRenderStack as withRenderStack8,
|
|
8299
|
+
zoom as zoom11
|
|
8300
|
+
} from "@tileflow/core";
|
|
8301
|
+
|
|
8302
|
+
// src/official/streets-ground-and-access.ts
|
|
8303
|
+
import { expr as expr9, field as field8, renderPass as renderPass8, token as token5, zoom as zoom9 } from "@tileflow/core";
|
|
8304
|
+
var streetsDayGroundColors = {
|
|
8305
|
+
"surface.background": "#F5F0E5",
|
|
8306
|
+
"surface.background.overview": "#F8F7F3",
|
|
8307
|
+
"surface.land": "#F8F7F3",
|
|
8308
|
+
"landcover.global.barren": "#F8F7F3",
|
|
8309
|
+
"landcover.barren": "#F5F0E5",
|
|
8310
|
+
"landcover.rock": "#EEE9DF",
|
|
8311
|
+
"landcover.farmland": "#F0EDE2",
|
|
8312
|
+
"landcover.orchard": "#DDEAD4",
|
|
8313
|
+
"landcover.nursery": "#D6E8D2",
|
|
8314
|
+
"landcover.global.crop": "#EFF1E6",
|
|
8315
|
+
"landcover.global.urban": "#F5F3F3",
|
|
8316
|
+
"landuse.residential": "#F5F3F3",
|
|
8317
|
+
"landuse.civic": "#F5F3F3",
|
|
8318
|
+
"landuse.education": "#EFEEEC",
|
|
8319
|
+
"landuse.government": "#F5F3F3",
|
|
8320
|
+
"landuse.military": "#F5F3F3",
|
|
8321
|
+
"roads.accessOverview": "#D7D3CE"
|
|
8322
|
+
};
|
|
8323
|
+
var streetsAgriculturalColor = expr9.match(
|
|
8324
|
+
expr9.get(field8("subclass")),
|
|
8325
|
+
[
|
|
8326
|
+
{ labels: "orchard", value: token5.color("landcover.orchard") },
|
|
8327
|
+
{ labels: "plant_nursery", value: token5.color("landcover.nursery") }
|
|
8328
|
+
],
|
|
8329
|
+
token5.color("landcover.farmland")
|
|
8330
|
+
);
|
|
8331
|
+
var streetsGroundBackground = zoom9.linear([
|
|
8332
|
+
[10, token5.color("surface.background.overview")],
|
|
8333
|
+
[13, token5.color("surface.background.transition")],
|
|
8334
|
+
[14, token5.color("surface.background")]
|
|
8335
|
+
]);
|
|
8336
|
+
var streetsAccessOverview = renderPass8({
|
|
8337
|
+
placement: { below: "roads.classes.minor.surface.fill" },
|
|
8338
|
+
feature: "road",
|
|
8339
|
+
renderer: "line",
|
|
8340
|
+
selector: {
|
|
8341
|
+
kind: "all",
|
|
8342
|
+
selectors: [
|
|
8343
|
+
{ kind: "geometry", geometry: "line" },
|
|
8344
|
+
{ kind: "in", field: "class", values: ["track", "service"] },
|
|
8345
|
+
{ kind: "compare", field: "brunnel", operator: "ne", value: "tunnel" }
|
|
8346
|
+
]
|
|
8347
|
+
},
|
|
8348
|
+
style: {
|
|
8349
|
+
minZoom: 12,
|
|
8350
|
+
maxZoom: 15,
|
|
8351
|
+
cap: "round",
|
|
8352
|
+
join: "round",
|
|
8353
|
+
color: zoom9.linear([
|
|
8354
|
+
[14, token5.color("roads.accessOverview")],
|
|
8355
|
+
[15, token5.color("roads.default")]
|
|
8356
|
+
]),
|
|
8357
|
+
opacity: zoom9.linear([
|
|
8358
|
+
[12, 0.35],
|
|
8359
|
+
[13, 0.8],
|
|
8360
|
+
[14, 1]
|
|
8361
|
+
]),
|
|
8362
|
+
width: zoom9.linear([
|
|
8363
|
+
[12, 0.35],
|
|
8364
|
+
[13, 0.55],
|
|
8365
|
+
[14, 0.85],
|
|
8366
|
+
[15, 2.2857142857142856]
|
|
8367
|
+
])
|
|
8368
|
+
}
|
|
8369
|
+
});
|
|
8370
|
+
|
|
8371
|
+
// src/official/streets-network-overview.ts
|
|
8372
|
+
import { field as field9, renderPass as renderPass9, token as token6, zoom as zoom10 } from "@tileflow/core";
|
|
8373
|
+
var streetsNetworkDayColors = {
|
|
8374
|
+
"roads.city.primary": "#B1C4CB",
|
|
8375
|
+
"roads.city.secondary": "#C3CFD3",
|
|
8376
|
+
"roads.city.tertiary": "#CCD6D9",
|
|
8377
|
+
"roads.city.minor": "#D2DADC",
|
|
8378
|
+
"roads.overview.major": "#8DB3C0",
|
|
8379
|
+
"roads.overview.majorClose": "#85A9B5",
|
|
8380
|
+
"roads.overview.casing": "#668D9A",
|
|
8381
|
+
"roads.overview.casingClose": "#658B97"
|
|
8382
|
+
};
|
|
8383
|
+
function overviewWidth(width, local) {
|
|
8384
|
+
if (!width || typeof width !== "object" || width.kind !== "expression") {
|
|
8385
|
+
throw new Error("Expected an authored road-width expression");
|
|
8386
|
+
}
|
|
8387
|
+
const value = structuredClone(width.value);
|
|
8388
|
+
if (value[0] !== "interpolate") throw new Error("Expected interpolated road widths");
|
|
8389
|
+
for (let i = 3; i < value.length; i += 2) {
|
|
8390
|
+
const factor = value[i] === 10 ? 1.12 : value[i] === 12 ? local ? 1.125 : 1.25 : value[i] === 14 ? 1.08 : 1;
|
|
8391
|
+
if (factor !== 1) {
|
|
8392
|
+
const authored = value[i + 1];
|
|
8393
|
+
value[i + 1] = ["case", ["==", ["get", field9("ramp")], 1], authored, ["*", authored, factor]];
|
|
8394
|
+
}
|
|
8395
|
+
}
|
|
8396
|
+
return { ...width, value };
|
|
8397
|
+
}
|
|
8398
|
+
function streetsOverviewRoads(roads7) {
|
|
8399
|
+
if (!roads7) throw new Error("The Streets overview requires the roads module");
|
|
8400
|
+
const renderStack = "renderStack" in roads7 ? roads7.renderStack : {};
|
|
8401
|
+
const classes = { ...roads7.classes };
|
|
8402
|
+
for (const name of ["motorway", "trunk"]) {
|
|
8403
|
+
const road = classes[name];
|
|
8404
|
+
const color = zoom10.linear([
|
|
8405
|
+
[3, token6.color(`roads.${name}`)],
|
|
8406
|
+
[6, token6.color("roads.overview.major")],
|
|
8407
|
+
[12, token6.color("roads.overview.major")],
|
|
8408
|
+
[14, token6.color("roads.overview.majorClose")],
|
|
8409
|
+
[14.25, token6.color("roads.overview.majorClose")],
|
|
8410
|
+
[15, token6.color(`roads.${name}`)]
|
|
8411
|
+
]);
|
|
8412
|
+
classes[name] = {
|
|
8413
|
+
...road,
|
|
8414
|
+
surface: { ...road.surface, fill: { ...road.surface.fill, color } },
|
|
8415
|
+
bridge: {
|
|
8416
|
+
...road.bridge,
|
|
8417
|
+
fill: { ...road.bridge.fill, color },
|
|
8418
|
+
casing: {
|
|
8419
|
+
...road.bridge.casing,
|
|
8420
|
+
color: zoom10.linear([
|
|
8421
|
+
[12, token6.color("roads.overview.casing")],
|
|
8422
|
+
[14, token6.color("roads.overview.casingClose")],
|
|
8423
|
+
[14.25, token6.color("roads.overview.casingClose")],
|
|
8424
|
+
[15, token6.color("roads.detail.casing")]
|
|
8425
|
+
])
|
|
8426
|
+
}
|
|
8427
|
+
}
|
|
8428
|
+
};
|
|
8429
|
+
}
|
|
8430
|
+
for (const name of ["primary", "secondary", "tertiary", "minor"]) {
|
|
8431
|
+
const road = classes[name];
|
|
8432
|
+
const local = name === "minor";
|
|
8433
|
+
classes[name] = { ...road };
|
|
8434
|
+
for (const structure of ["surface", "bridge", "tunnel"]) {
|
|
8435
|
+
const base = road[structure];
|
|
8436
|
+
classes[name][structure] = {
|
|
8437
|
+
...base,
|
|
8438
|
+
fill: {
|
|
8439
|
+
...base.fill,
|
|
8440
|
+
width: overviewWidth(base.fill.width, local),
|
|
8441
|
+
// The tile source first provides local geometry at z12. Make it readable
|
|
8442
|
+
// on arrival, then converge to the detailed opacity by z13.
|
|
8443
|
+
...local ? {
|
|
8444
|
+
opacity: zoom10.linear([
|
|
8445
|
+
[12, structure === "tunnel" ? 0.55 : 0.8],
|
|
8446
|
+
[13, structure === "tunnel" ? 0.8 : 1]
|
|
8447
|
+
])
|
|
8448
|
+
} : {}
|
|
8449
|
+
}
|
|
8450
|
+
};
|
|
8451
|
+
}
|
|
8452
|
+
}
|
|
8453
|
+
return {
|
|
8454
|
+
...roads7,
|
|
8455
|
+
classes,
|
|
8456
|
+
renderStack: {
|
|
8457
|
+
...renderStack,
|
|
8458
|
+
overviewMajorCasing: renderPass9({
|
|
8459
|
+
// Keep the casing below every road fill, including trunk and ramp fills.
|
|
8460
|
+
// Drawing it above those fills exposes round segment caps as small rings.
|
|
8461
|
+
placement: { below: "roads.classes.minor.surface.casing" },
|
|
8462
|
+
feature: "road",
|
|
8463
|
+
renderer: "line",
|
|
8464
|
+
selector: {
|
|
8465
|
+
kind: "all",
|
|
8466
|
+
selectors: [
|
|
8467
|
+
{ kind: "geometry", geometry: "line" },
|
|
8468
|
+
{ kind: "in", field: "class", values: ["motorway", "trunk"] },
|
|
8469
|
+
{ kind: "compare", field: "brunnel", operator: "ne", value: "tunnel" }
|
|
8470
|
+
]
|
|
8471
|
+
},
|
|
8472
|
+
style: {
|
|
8473
|
+
minZoom: 6,
|
|
8474
|
+
maxZoom: 15,
|
|
8475
|
+
cap: "round",
|
|
8476
|
+
join: "round",
|
|
8477
|
+
color: zoom10.linear([
|
|
8478
|
+
[12, token6.color("roads.overview.casing")],
|
|
8479
|
+
[14, token6.color("roads.overview.casingClose")],
|
|
8480
|
+
[14.25, token6.color("roads.overview.casingClose")],
|
|
8481
|
+
[15, token6.color("roads.detail.casing")]
|
|
8482
|
+
]),
|
|
8483
|
+
gapWidth: roads7.classes.motorway.surface.fill.width,
|
|
8484
|
+
width: zoom10.linear([
|
|
8485
|
+
[6, 0.2],
|
|
8486
|
+
[8, 0.4],
|
|
8487
|
+
[10, 0.65],
|
|
8488
|
+
[12, 0.8],
|
|
8489
|
+
[14, 0.95],
|
|
8490
|
+
[15, 1.0203013481363996]
|
|
8491
|
+
]),
|
|
8492
|
+
opacity: zoom10.linear([
|
|
8493
|
+
[6, 0.3],
|
|
8494
|
+
[8, 0.8],
|
|
8495
|
+
[10, 1]
|
|
8496
|
+
])
|
|
8497
|
+
}
|
|
8498
|
+
})
|
|
8499
|
+
}
|
|
8500
|
+
};
|
|
8501
|
+
}
|
|
8502
|
+
|
|
8503
|
+
// src/official/streets-cartography.ts
|
|
8504
|
+
var visibleBuilding = {
|
|
8505
|
+
kind: "all",
|
|
8506
|
+
selectors: [
|
|
8507
|
+
{ field: "hide3d", kind: "compare", operator: "ne", value: true },
|
|
8508
|
+
{ field: "hide3d", kind: "compare", operator: "ne", value: 1 },
|
|
8509
|
+
{ field: "hide3d", kind: "compare", operator: "ne", value: "1" },
|
|
8510
|
+
{ field: "hide3d", kind: "compare", operator: "ne", value: "true" }
|
|
8511
|
+
]
|
|
8512
|
+
};
|
|
8513
|
+
function buildingColor2(outline = false, raised = false) {
|
|
8514
|
+
return expr10.match(
|
|
8515
|
+
expr10.get(field10("buildingTone")),
|
|
8516
|
+
[
|
|
8517
|
+
{
|
|
8518
|
+
labels: ["commercial", "active"],
|
|
8519
|
+
value: token7.color(`buildings.flat.${outline ? "activeOutline" : "active"}`)
|
|
8520
|
+
}
|
|
8521
|
+
],
|
|
8522
|
+
token7.color(
|
|
8523
|
+
raised ? "buildings.raised.neutral" : `buildings.flat.${outline ? "neutralOutline" : "neutral"}`
|
|
8524
|
+
)
|
|
8525
|
+
);
|
|
8526
|
+
}
|
|
8527
|
+
function withStreetsCartography(base) {
|
|
8528
|
+
const source = resolveMap(base);
|
|
8529
|
+
const { land: land8, buildings: buildings7, poi: poi5, vegetation: vegetation6 } = source.modules ?? {};
|
|
8530
|
+
if (!land8 || !buildings7 || !poi5 || !vegetation6)
|
|
8531
|
+
throw new Error("Streets requires land, buildings, POI and vegetation");
|
|
8532
|
+
const vegetationAppearance = {
|
|
8533
|
+
...vegetation6,
|
|
8534
|
+
flat: { ...vegetation6.flat, strokeColor: token7.color("vegetation.tree.outline") }
|
|
8535
|
+
};
|
|
8536
|
+
const landStack = stackOf(land8);
|
|
8537
|
+
const buildingStack = stackOf(buildings7);
|
|
8538
|
+
const extrusion = buildingStack.extrusion;
|
|
8539
|
+
if (extrusion?.kind !== "render-pass" || extrusion.renderer !== "extrusion")
|
|
8540
|
+
throw new Error("Streets requires its building extrusion pass");
|
|
8541
|
+
const { renderStack: roadsStack, ...overviewRoads } = streetsOverviewRoads(source.modules?.roads);
|
|
8542
|
+
return defineMap7({
|
|
8543
|
+
...base,
|
|
8544
|
+
modules: {
|
|
8545
|
+
...source.modules,
|
|
8546
|
+
roads: withRenderStack8(
|
|
8547
|
+
{
|
|
8548
|
+
...overviewRoads,
|
|
8549
|
+
pathGround: {
|
|
8550
|
+
greenColor: token7.color("roads.path.green"),
|
|
8551
|
+
groundColor: token7.color("roads.path.ground"),
|
|
8552
|
+
opacity: token7.number("roads.path.groundOpacity"),
|
|
8553
|
+
widthScale: 0.92
|
|
8554
|
+
}
|
|
8555
|
+
},
|
|
8556
|
+
{
|
|
8557
|
+
...roadsStack,
|
|
8558
|
+
accessOverview: streetsAccessOverview
|
|
8559
|
+
}
|
|
8560
|
+
),
|
|
8561
|
+
land: withRenderStack8(
|
|
8562
|
+
{
|
|
8563
|
+
...withoutStack(land8),
|
|
8564
|
+
// The climate underlay is paused until it has a shared URL and visibility-aware loading.
|
|
8565
|
+
// Its source, generator and attribution are retained in assets/streets/climate.
|
|
8566
|
+
background: { ...land8.background, color: streetsGroundBackground },
|
|
8567
|
+
landcover: {
|
|
8568
|
+
...land8.landcover,
|
|
8569
|
+
farmland: {
|
|
8570
|
+
...land8.landcover?.farmland,
|
|
8571
|
+
fill: { ...land8.landcover?.farmland?.fill, color: streetsAgriculturalColor }
|
|
8572
|
+
}
|
|
8573
|
+
}
|
|
8574
|
+
},
|
|
8575
|
+
{
|
|
8576
|
+
...landStack,
|
|
8577
|
+
businessArea: renderPass10({
|
|
8578
|
+
placement: { above: "land.landuse.residential.fill" },
|
|
8579
|
+
feature: "landuse",
|
|
8580
|
+
renderer: "fill",
|
|
8581
|
+
selector: { field: "class", kind: "compare", operator: "eq", value: "business_area" },
|
|
8582
|
+
style: {
|
|
8583
|
+
color: token7.color("landuse.businessCorridor"),
|
|
8584
|
+
minZoom: 11,
|
|
8585
|
+
opacity: zoom11.linear([
|
|
8586
|
+
[15, 1],
|
|
8587
|
+
[15.5, 0.75],
|
|
8588
|
+
[16.25, 0]
|
|
8589
|
+
])
|
|
8590
|
+
}
|
|
8591
|
+
})
|
|
8592
|
+
}
|
|
8593
|
+
),
|
|
8594
|
+
buildings: withRenderStack8(
|
|
8595
|
+
{
|
|
8596
|
+
...withoutStack(buildings7),
|
|
8597
|
+
flat: {
|
|
8598
|
+
fill: {
|
|
8599
|
+
color: buildingColor2(),
|
|
8600
|
+
minZoom: 15.25,
|
|
8601
|
+
opacity: zoom11.linear([
|
|
8602
|
+
[15.25, 0],
|
|
8603
|
+
[15.5, 0.75],
|
|
8604
|
+
[15.75, 1]
|
|
8605
|
+
])
|
|
8606
|
+
},
|
|
8607
|
+
outline: {
|
|
8608
|
+
color: buildingColor2(true),
|
|
8609
|
+
minZoom: 16,
|
|
8610
|
+
opacity: zoom11.linear([
|
|
8611
|
+
[16, 0],
|
|
8612
|
+
[16.5, 0.4],
|
|
8613
|
+
[18, 0.58],
|
|
8614
|
+
[20, 0.68]
|
|
8615
|
+
]),
|
|
8616
|
+
width: zoom11.linear([
|
|
8617
|
+
[16, 0.35],
|
|
8618
|
+
[16.5, 0.5],
|
|
8619
|
+
[18, 0.65],
|
|
8620
|
+
[20, 0.8]
|
|
8621
|
+
])
|
|
8622
|
+
}
|
|
8623
|
+
}
|
|
8624
|
+
},
|
|
8625
|
+
{
|
|
8626
|
+
...buildingStack,
|
|
8627
|
+
visibleFlatFill: refineRenderTarget5({
|
|
8628
|
+
target: "buildings.flat.fill",
|
|
8629
|
+
renderer: "fill",
|
|
8630
|
+
selector: visibleBuilding,
|
|
8631
|
+
style: {}
|
|
8632
|
+
}),
|
|
8633
|
+
visibleFlatOutline: refineRenderTarget5({
|
|
8634
|
+
target: "buildings.flat.outline",
|
|
8635
|
+
renderer: "line",
|
|
8636
|
+
selector: visibleBuilding,
|
|
8637
|
+
style: {}
|
|
8638
|
+
}),
|
|
8639
|
+
extrusion: { ...extrusion, style: { ...extrusion.style, color: buildingColor2(false, true) } },
|
|
8640
|
+
flatShadow: renderPass10({
|
|
8641
|
+
selector: visibleBuilding,
|
|
8642
|
+
placement: { below: "buildings.flat.fill" },
|
|
8643
|
+
feature: "building",
|
|
8644
|
+
renderer: "line",
|
|
8645
|
+
style: {
|
|
8646
|
+
blur: 2,
|
|
8647
|
+
color: token7.color("buildings.shadow"),
|
|
8648
|
+
minZoom: 17.5,
|
|
8649
|
+
opacity: zoom11.linear([
|
|
8650
|
+
[17.5, 0],
|
|
8651
|
+
[19, 0.035],
|
|
8652
|
+
[20, 0.04]
|
|
8653
|
+
]),
|
|
8654
|
+
translate: [0.5, 0.75],
|
|
8655
|
+
translateAnchor: "viewport",
|
|
8656
|
+
width: zoom11.linear([
|
|
8657
|
+
[17.5, 0.5],
|
|
8658
|
+
[19, 1.5],
|
|
8659
|
+
[20, 2]
|
|
8660
|
+
])
|
|
8661
|
+
}
|
|
8662
|
+
})
|
|
8663
|
+
}
|
|
8664
|
+
),
|
|
8665
|
+
vegetation: vegetationAppearance,
|
|
8666
|
+
poi: { ...poi5, maxRankByType: { ...poi5.maxRankByType, garden: 1 } }
|
|
8667
|
+
}
|
|
8668
|
+
});
|
|
8669
|
+
}
|
|
8670
|
+
function stackOf(module) {
|
|
8671
|
+
return "renderStack" in module ? module.renderStack : {};
|
|
8672
|
+
}
|
|
8673
|
+
function withoutStack(module) {
|
|
8674
|
+
const result = { ...module };
|
|
8675
|
+
if ("renderStack" in result) delete result.renderStack;
|
|
8676
|
+
return result;
|
|
8677
|
+
}
|
|
8678
|
+
|
|
8289
8679
|
// src/official/streets-construction.ts
|
|
8290
8680
|
import {
|
|
8291
|
-
expr as
|
|
8292
|
-
field as
|
|
8293
|
-
renderPass as
|
|
8294
|
-
token as
|
|
8295
|
-
withRenderStack as
|
|
8681
|
+
expr as expr11,
|
|
8682
|
+
field as field11,
|
|
8683
|
+
renderPass as renderPass11,
|
|
8684
|
+
token as token8,
|
|
8685
|
+
withRenderStack as withRenderStack9
|
|
8296
8686
|
} from "@tileflow/core";
|
|
8297
8687
|
function withStreetsConstruction(module, stack) {
|
|
8298
|
-
const constructionPath =
|
|
8688
|
+
const constructionPath = expr11.eq(expr11.get(field11("class")), "path_construction");
|
|
8299
8689
|
const marks = Object.fromEntries(
|
|
8300
8690
|
[
|
|
8301
8691
|
"motorway",
|
|
@@ -8331,14 +8721,14 @@ function withStreetsConstruction(module, stack) {
|
|
|
8331
8721
|
return [
|
|
8332
8722
|
[
|
|
8333
8723
|
`construction-${roadClass}-underlay`,
|
|
8334
|
-
|
|
8724
|
+
renderPass11({
|
|
8335
8725
|
feature: "road",
|
|
8336
8726
|
placement: "below-roads",
|
|
8337
8727
|
selector,
|
|
8338
8728
|
renderer: "line",
|
|
8339
8729
|
style: {
|
|
8340
8730
|
...fill,
|
|
8341
|
-
color:
|
|
8731
|
+
color: token8.color("roads.default"),
|
|
8342
8732
|
dash: [1, 0],
|
|
8343
8733
|
opacity: 0.16
|
|
8344
8734
|
}
|
|
@@ -8346,7 +8736,7 @@ function withStreetsConstruction(module, stack) {
|
|
|
8346
8736
|
],
|
|
8347
8737
|
[
|
|
8348
8738
|
`construction-${roadClass}`,
|
|
8349
|
-
|
|
8739
|
+
renderPass11({
|
|
8350
8740
|
feature: "road",
|
|
8351
8741
|
placement: "below-roads",
|
|
8352
8742
|
selector,
|
|
@@ -8357,7 +8747,7 @@ function withStreetsConstruction(module, stack) {
|
|
|
8357
8747
|
minZoom: Math.max(fill.minZoom ?? 0, 14),
|
|
8358
8748
|
cap: "butt",
|
|
8359
8749
|
join: "round",
|
|
8360
|
-
color:
|
|
8750
|
+
color: token8.color("roads.default"),
|
|
8361
8751
|
// Short transverse strokes with flat ends avoid the former round capsules.
|
|
8362
8752
|
dash: [0.1, 0.18],
|
|
8363
8753
|
opacity: 0.9
|
|
@@ -8367,7 +8757,7 @@ function withStreetsConstruction(module, stack) {
|
|
|
8367
8757
|
];
|
|
8368
8758
|
})
|
|
8369
8759
|
);
|
|
8370
|
-
return
|
|
8760
|
+
return withRenderStack9(
|
|
8371
8761
|
{
|
|
8372
8762
|
...module,
|
|
8373
8763
|
modifiers: {
|
|
@@ -8378,14 +8768,14 @@ function withStreetsConstruction(module, stack) {
|
|
|
8378
8768
|
// its dash expression otherwise forces ordinary borders through the SDF shader.
|
|
8379
8769
|
casing: { dash: [1, 0], opacity: 0 },
|
|
8380
8770
|
fill: {
|
|
8381
|
-
color:
|
|
8771
|
+
color: token8.color("roads.default"),
|
|
8382
8772
|
// Footpaths keep their existing treatment; hatching is for carriageways.
|
|
8383
|
-
dash:
|
|
8384
|
-
[{ when: constructionPath, value:
|
|
8385
|
-
|
|
8773
|
+
dash: expr11.case(
|
|
8774
|
+
[{ when: constructionPath, value: expr11.literal([1.5, 1]) }],
|
|
8775
|
+
expr11.literal([1, 0])
|
|
8386
8776
|
),
|
|
8387
8777
|
// The separate underlay supplies carriageway ground below all live roads.
|
|
8388
|
-
opacity:
|
|
8778
|
+
opacity: expr11.case([{ when: constructionPath, value: 0.96 }], 0)
|
|
8389
8779
|
}
|
|
8390
8780
|
}
|
|
8391
8781
|
}
|
|
@@ -8397,9 +8787,9 @@ function withStreetsConstruction(module, stack) {
|
|
|
8397
8787
|
|
|
8398
8788
|
// src/official/streets-poi.ts
|
|
8399
8789
|
import {
|
|
8400
|
-
expr as
|
|
8401
|
-
field as
|
|
8402
|
-
token as
|
|
8790
|
+
expr as expr12,
|
|
8791
|
+
field as field12,
|
|
8792
|
+
token as token9
|
|
8403
8793
|
} from "@tileflow/core";
|
|
8404
8794
|
|
|
8405
8795
|
// src/official/streets-transit-icons.ts
|
|
@@ -8652,7 +9042,7 @@ var streetsPoiCategoryPictograms = Object.freeze({
|
|
|
8652
9042
|
"visitor-amenity": "services"
|
|
8653
9043
|
});
|
|
8654
9044
|
function streetsPoiPictogramToken(id) {
|
|
8655
|
-
return
|
|
9045
|
+
return token9.image(`poi.pictogram.${id}`);
|
|
8656
9046
|
}
|
|
8657
9047
|
function streetsPoiImageTokens(variant) {
|
|
8658
9048
|
const suffix = {
|
|
@@ -8679,11 +9069,11 @@ function streetsPoiImage() {
|
|
|
8679
9069
|
value: streetsPoiPictogramToken(id)
|
|
8680
9070
|
}));
|
|
8681
9071
|
const [first, ...rest] = types;
|
|
8682
|
-
const categoryRole =
|
|
9072
|
+
const categoryRole = token9.image(`poi.${category}`);
|
|
8683
9073
|
return {
|
|
8684
9074
|
labels: category,
|
|
8685
|
-
value: first ?
|
|
8686
|
-
|
|
9075
|
+
value: first ? expr12.match(
|
|
9076
|
+
expr12.get(field12("poiType")),
|
|
8687
9077
|
[first, ...rest],
|
|
8688
9078
|
categoryRole
|
|
8689
9079
|
) : categoryRole
|
|
@@ -8694,25 +9084,25 @@ function streetsPoiImage() {
|
|
|
8694
9084
|
labels: [...labels8],
|
|
8695
9085
|
value: streetsPoiPictogramToken(id)
|
|
8696
9086
|
}));
|
|
8697
|
-
const genericImage =
|
|
8698
|
-
|
|
9087
|
+
const genericImage = expr12.match(
|
|
9088
|
+
expr12.get(field12("mode")),
|
|
8699
9089
|
[firstMode, ...otherModes],
|
|
8700
|
-
|
|
8701
|
-
|
|
9090
|
+
expr12.match(
|
|
9091
|
+
expr12.get(field12("poiCategory")),
|
|
8702
9092
|
[firstCategory, ...otherCategories],
|
|
8703
|
-
|
|
9093
|
+
token9.image("poi.landmark")
|
|
8704
9094
|
)
|
|
8705
9095
|
);
|
|
8706
9096
|
const [firstNetwork, ...otherNetworks] = streetsTransitNetworks.map(({ id, networks }) => ({
|
|
8707
9097
|
labels: [...networks],
|
|
8708
|
-
value:
|
|
9098
|
+
value: token9.image(`poi.network.${id}`)
|
|
8709
9099
|
}));
|
|
8710
|
-
return
|
|
9100
|
+
return expr12.case(
|
|
8711
9101
|
[
|
|
8712
9102
|
{
|
|
8713
|
-
when:
|
|
8714
|
-
value:
|
|
8715
|
-
|
|
9103
|
+
when: expr12.eq(expr12.get(field12("poiCategory")), "transport"),
|
|
9104
|
+
value: expr12.match(
|
|
9105
|
+
expr12.get(field12("network")),
|
|
8716
9106
|
[firstNetwork, ...otherNetworks],
|
|
8717
9107
|
genericImage
|
|
8718
9108
|
)
|
|
@@ -8723,18 +9113,22 @@ function streetsPoiImage() {
|
|
|
8723
9113
|
}
|
|
8724
9114
|
|
|
8725
9115
|
// src/official/streets-themes.ts
|
|
8726
|
-
import { defineTheme as
|
|
9116
|
+
import { defineTheme as defineTheme4, token as token11 } from "@tileflow/core";
|
|
8727
9117
|
|
|
8728
9118
|
// src/official/streets-building-colors.ts
|
|
8729
|
-
function streetsBuildingColors(base, dark) {
|
|
9119
|
+
function streetsBuildingColors(base, dark, monochrome = false) {
|
|
8730
9120
|
const rgb = [1, 3, 5].map((offset) => parseInt(base.slice(offset, offset + 2), 16));
|
|
8731
|
-
const gray = rgb.reduce((sum, value) => sum + value, 0) / 3;
|
|
8732
9121
|
const hex2 = (values) => "#" + values.map((v) => Math.round(v).toString(16).padStart(2, "0")).join("").toUpperCase();
|
|
8733
9122
|
return {
|
|
8734
9123
|
"buildings.modelSurface": base,
|
|
8735
|
-
"buildings.
|
|
8736
|
-
|
|
8737
|
-
|
|
9124
|
+
"buildings.modelGlass": hex2(
|
|
9125
|
+
rgb.map((v, channel) => v * (monochrome ? 0.86 : [0.78, 0.88, 0.95][channel]))
|
|
9126
|
+
),
|
|
9127
|
+
"buildings.modelSecondary": hex2(rgb.map((v) => v + (255 - v) * (dark ? 0.018 : 0.2))),
|
|
9128
|
+
"buildings.modelRoof": hex2(
|
|
9129
|
+
rgb.map((v, channel) => v * (monochrome ? 0.92 : [0.94, 0.92, 0.9][channel]))
|
|
9130
|
+
),
|
|
9131
|
+
"buildings.modelAccent": hex2(rgb.map((v) => v + (255 - v) * (dark ? 0.025 : 0.4)))
|
|
8738
9132
|
};
|
|
8739
9133
|
}
|
|
8740
9134
|
|
|
@@ -9965,10 +10359,453 @@ var rows = [
|
|
|
9965
10359
|
function streetsCartographyColors(theme, preset) {
|
|
9966
10360
|
const column = profiles.indexOf(`${theme}-${preset}`);
|
|
9967
10361
|
return Object.fromEntries(
|
|
9968
|
-
rows.flatMap(([roles,
|
|
10362
|
+
rows.flatMap(([roles, colors2]) => roles.split(" ").map((role) => [role, colors2[column]]))
|
|
9969
10363
|
);
|
|
9970
10364
|
}
|
|
9971
10365
|
|
|
10366
|
+
// src/official/streets-cartography-themes.ts
|
|
10367
|
+
import { defineTheme as defineTheme3, resolveTileflowTheme as resolveTileflowTheme3, token as token10 } from "@tileflow/core";
|
|
10368
|
+
|
|
10369
|
+
// src/official/streets-day-colors.ts
|
|
10370
|
+
var streetsDayColors = {
|
|
10371
|
+
"boundaries.admin": "#FF668C",
|
|
10372
|
+
"boundaries.default": "#FF668C",
|
|
10373
|
+
"boundaries.disputed": "#FF668C",
|
|
10374
|
+
"boundaries.halo": "#FFFFFF",
|
|
10375
|
+
"boundaries.major": "#FF668C",
|
|
10376
|
+
"boundaries.maritime": "#FF668C",
|
|
10377
|
+
"boundaries.regional": "#FF809A",
|
|
10378
|
+
"buildings.active": "#EBECDE",
|
|
10379
|
+
"buildings.businessCorridor": "#F9EFDD",
|
|
10380
|
+
"buildings.businessCorridorOutline": "#D7D1C2",
|
|
10381
|
+
"buildings.civic": "#EBECDE",
|
|
10382
|
+
"buildings.commercial": "#EBECDE",
|
|
10383
|
+
"buildings.contactShadow": "#888378",
|
|
10384
|
+
"buildings.destination": "#EBECDE",
|
|
10385
|
+
"buildings.extrusion": "#EFEBDE",
|
|
10386
|
+
"buildings.fill": "#EBECDE",
|
|
10387
|
+
"buildings.flat.active": "#EFEBDE",
|
|
10388
|
+
"buildings.flat.activeOutline": "#D8CEBE",
|
|
10389
|
+
"buildings.flat.neutral": "#E7EBEA",
|
|
10390
|
+
"buildings.flat.neutralOutline": "#D3DAD8",
|
|
10391
|
+
"buildings.floodLight": "#FFFFFF",
|
|
10392
|
+
"buildings.generic": "#EBECDE",
|
|
10393
|
+
"buildings.industrial": "#EBECDE",
|
|
10394
|
+
"buildings.modelEmission": "#FFFFFF",
|
|
10395
|
+
"buildings.modelRoof": "#FAF3E7",
|
|
10396
|
+
"buildings.modelVegetation": "#9CD1B0",
|
|
10397
|
+
"buildings.modelWater": "#91DFF7",
|
|
10398
|
+
"buildings.modelWood": "#BED4B5",
|
|
10399
|
+
"buildings.outline": "#CEC89B",
|
|
10400
|
+
"buildings.residential": "#EBECDE",
|
|
10401
|
+
"buildings.shadow": "#B5B9B4",
|
|
10402
|
+
"hydro.depth.m0": "rgba(145, 223, 247, 0.35)",
|
|
10403
|
+
"hydro.depth.m200": "rgba(100, 209, 247, 0.35)",
|
|
10404
|
+
"hydro.depth.m2000": "rgba(89, 205, 247, 0.35)",
|
|
10405
|
+
"hydro.depth.m7000": "rgba(51, 196, 248, 0.35)",
|
|
10406
|
+
"hydro.ferry": "#2FA0E6",
|
|
10407
|
+
"hydro.label": "#0094DC",
|
|
10408
|
+
"hydro.ocean": "#91DFF7",
|
|
10409
|
+
"hydro.water": "#91DFF7",
|
|
10410
|
+
"hydro.water.overview": "#91DFF7",
|
|
10411
|
+
"hydro.water.regional": "#91DFF7",
|
|
10412
|
+
"hydro.waterway": "#91DFF7",
|
|
10413
|
+
"labels.address": "#808080",
|
|
10414
|
+
"labels.aerodrome": "#195DCC",
|
|
10415
|
+
"labels.country": "#000000",
|
|
10416
|
+
"labels.ferry": "#0185D7",
|
|
10417
|
+
"labels.ferryHalo": "#92E0F8",
|
|
10418
|
+
"labels.halo": "#FFFFFF",
|
|
10419
|
+
"labels.muted": "#61615F",
|
|
10420
|
+
"labels.neighborhood": "#61615F",
|
|
10421
|
+
"labels.overview": "#61615F",
|
|
10422
|
+
"labels.placeHalo": "#FFFFFF",
|
|
10423
|
+
"labels.poi": "#50717F",
|
|
10424
|
+
"labels.primary": "#61615F",
|
|
10425
|
+
"labels.road": "#404040",
|
|
10426
|
+
"labels.roadHalo": "#F2F2F2",
|
|
10427
|
+
"labels.settlement": "#000000",
|
|
10428
|
+
"labels.shield.dark": "#171E27",
|
|
10429
|
+
"labels.shield.light": "#FFFFFF",
|
|
10430
|
+
"labels.strong": "#404040",
|
|
10431
|
+
"labels.water": "#0094DC",
|
|
10432
|
+
"labels.waterHalo": "rgba(240, 242, 238, 0.72)",
|
|
10433
|
+
"land.fence": "#D8D8D8",
|
|
10434
|
+
"land.wall": "#C3C7C2",
|
|
10435
|
+
"landcover.barren": "#F9FAF8",
|
|
10436
|
+
"landcover.farmland": "#D0F1DC",
|
|
10437
|
+
"landcover.flowerbed": "#A5E9B9",
|
|
10438
|
+
"landcover.global.barren": "#F9FAF8",
|
|
10439
|
+
"landcover.global.crop": "#C9F2D0",
|
|
10440
|
+
"landcover.global.grass": "#D9F5DA",
|
|
10441
|
+
"landcover.global.shrub": "#ECFAF2",
|
|
10442
|
+
"landcover.global.snow": "#FEFEFE",
|
|
10443
|
+
"landcover.global.trees": "#B7F0C9",
|
|
10444
|
+
"landcover.global.urban": "#F0F2EE",
|
|
10445
|
+
"landcover.grass": "#ABEFBF",
|
|
10446
|
+
"landcover.greenspace": "#A5E9B9",
|
|
10447
|
+
"landcover.greenspaceDark": "#A5E9B9",
|
|
10448
|
+
"landcover.hedge": "#90C59C",
|
|
10449
|
+
"landcover.hedgeShade": "#6F9F7A",
|
|
10450
|
+
"landcover.ice": "#E7F5F7",
|
|
10451
|
+
"landcover.meadow": "#ABEFBF",
|
|
10452
|
+
"landcover.protected": "rgba(198, 227, 208, 0.5)",
|
|
10453
|
+
"landcover.recreationGround": "#A5E9B9",
|
|
10454
|
+
"landcover.rock": "#F9FAF8",
|
|
10455
|
+
"landcover.sand": "#E8EEC6",
|
|
10456
|
+
"landcover.scrub": "#ABEFBF",
|
|
10457
|
+
"landcover.urbanPark": "#A5E9B9",
|
|
10458
|
+
"landcover.villageGreen": "#ABEFBF",
|
|
10459
|
+
"landcover.wetland": "#C1F2CF",
|
|
10460
|
+
"landcover.wood": "#9BE1AF",
|
|
10461
|
+
"landuse.businessCorridor": "#F9EFDD",
|
|
10462
|
+
"landuse.businessCorridorOutline": "#E0DAC9",
|
|
10463
|
+
"landuse.cemetery": "#BCECCB",
|
|
10464
|
+
"landuse.civic": "#F0F2EE",
|
|
10465
|
+
"landuse.commercial": "#F9EFDD",
|
|
10466
|
+
"landuse.education": "#E7E8D2",
|
|
10467
|
+
"landuse.government": "#F0F2EE",
|
|
10468
|
+
"landuse.industrial": "#E4EAE9",
|
|
10469
|
+
"landuse.medical": "#F3E0D9",
|
|
10470
|
+
"landuse.military": "#F0F2EE",
|
|
10471
|
+
"landuse.parking": "#E8EEC6",
|
|
10472
|
+
"landuse.parkingOutline": "#E8EEC6",
|
|
10473
|
+
"landuse.railway": "#E4EAE9",
|
|
10474
|
+
"landuse.recreation": "#C5F6CE",
|
|
10475
|
+
"landuse.recreationOutline": "#8AE6A7",
|
|
10476
|
+
"landuse.residential": "#F0F2EE",
|
|
10477
|
+
"poi.arts-entertainment": "#D6239F",
|
|
10478
|
+
"poi.education": "#8A6529",
|
|
10479
|
+
"poi.food-drink": "#BB5B00",
|
|
10480
|
+
"poi.halo": "#FFFFFF",
|
|
10481
|
+
"poi.icon": "#50717F",
|
|
10482
|
+
"poi.label": "#50717F",
|
|
10483
|
+
"poi.landmark": "#D6239F",
|
|
10484
|
+
"poi.lodging": "#5C50E8",
|
|
10485
|
+
"poi.medical": "#E32A1B",
|
|
10486
|
+
"poi.park-nature": "#1B7A1D",
|
|
10487
|
+
"poi.public-services": "#50717F",
|
|
10488
|
+
"poi.religion": "#50717F",
|
|
10489
|
+
"poi.retail": "#007AC6",
|
|
10490
|
+
"poi.sport-leisure": "#008291",
|
|
10491
|
+
"poi.transport": "#195DCC",
|
|
10492
|
+
"poi.visitor-amenity": "#50717F",
|
|
10493
|
+
"roads.bridge": "#B9CED5",
|
|
10494
|
+
"roads.casing": "#8DB0BC",
|
|
10495
|
+
"roads.city.casing": "#8DB0BC",
|
|
10496
|
+
"roads.city.minor": "#DDE2E5",
|
|
10497
|
+
"roads.city.primary": "#D5DBDF",
|
|
10498
|
+
"roads.city.secondary": "#DEE3E6",
|
|
10499
|
+
"roads.city.tertiary": "#E3E7E9",
|
|
10500
|
+
"roads.city.tunnel": "#DEE7E9",
|
|
10501
|
+
"roads.city.tunnelCasing": "#8DB0BC",
|
|
10502
|
+
"roads.cycleway": "#61CD72",
|
|
10503
|
+
"roads.default": "#B9CED5",
|
|
10504
|
+
"roads.default.casing": "#8DB0BC",
|
|
10505
|
+
"roads.default.tunnel": "#DEE7E9",
|
|
10506
|
+
"roads.detail.casing": "#8AA7B0",
|
|
10507
|
+
"roads.ferry": "#2FA0E6",
|
|
10508
|
+
"roads.major": "#A4BCC4",
|
|
10509
|
+
"roads.minor": "#B9CED5",
|
|
10510
|
+
"roads.motorway": "#A4BCC4",
|
|
10511
|
+
"roads.motorway.casing": "#759AA6",
|
|
10512
|
+
"roads.motorway.tunnel": "#C5D4D8",
|
|
10513
|
+
"roads.parkPath": "#E7ECF0",
|
|
10514
|
+
"roads.path": "#E7ECF0",
|
|
10515
|
+
"roads.path.casing": "#C9C9C1",
|
|
10516
|
+
"roads.path.transition": "#F5F7F7",
|
|
10517
|
+
"roads.path.tunnel": "#EEF2F3",
|
|
10518
|
+
"roads.pedestrian.surface": "#F6F6F4",
|
|
10519
|
+
"roads.primary": "#A4BCC4",
|
|
10520
|
+
"roads.rail": "#A5A5A5",
|
|
10521
|
+
"roads.railTransit": "#A5A5A5",
|
|
10522
|
+
"roads.secondary": "#B9CED5",
|
|
10523
|
+
"roads.sidewalk.surface": "rgba(0, 0, 0, 0.06)",
|
|
10524
|
+
"roads.tertiary": "#B9CED5",
|
|
10525
|
+
"roads.trunk": "#A4BCC4",
|
|
10526
|
+
"roads.trunk.casing": "#6293A3",
|
|
10527
|
+
"roads.trunk.tunnel": "#C1D1D6",
|
|
10528
|
+
"roads.tunnel": "#D8E2E2",
|
|
10529
|
+
"sky.color": "#4AA0E2",
|
|
10530
|
+
"sky.glow": "#F5EBB9",
|
|
10531
|
+
"sky.horizon": "#D9EDF3",
|
|
10532
|
+
"surface.background": "#F0F2EE",
|
|
10533
|
+
"surface.background.overview": "#F0F2EE",
|
|
10534
|
+
"surface.building": "#EBECDE",
|
|
10535
|
+
"surface.land": "#F0F2EE",
|
|
10536
|
+
"surface.park": "#A5E9B9",
|
|
10537
|
+
"surface.water": "#91DFF7",
|
|
10538
|
+
"terrain.hillshade.accent": "#A0AD95",
|
|
10539
|
+
"terrain.hillshade.highlight": "#FFFFFF",
|
|
10540
|
+
"terrain.hillshade.shadow": "#6D7C68",
|
|
10541
|
+
"transit.primary": "#A5A5A5",
|
|
10542
|
+
"transit.rail": "#A5A5A5",
|
|
10543
|
+
"vegetation.tree.bark": "#BED4B5",
|
|
10544
|
+
"vegetation.tree.broadleaf.a": "#87BFA8",
|
|
10545
|
+
"vegetation.tree.broadleaf.b": "#9CD1B0",
|
|
10546
|
+
"vegetation.tree.broadleaf.c": "#ABDDA9",
|
|
10547
|
+
"vegetation.tree.broadleaf.d": "#B8E6C4",
|
|
10548
|
+
"vegetation.tree.conifer.a": "#80B098",
|
|
10549
|
+
"vegetation.tree.conifer.b": "#8EBDA1",
|
|
10550
|
+
"vegetation.tree.conifer.c": "#9CCDAD"
|
|
10551
|
+
};
|
|
10552
|
+
var streetsDayImages = {
|
|
10553
|
+
"poi.education": "unified-day-education",
|
|
10554
|
+
"poi.food-drink": "unified-day-food",
|
|
10555
|
+
"poi.lodging": "unified-day-lodging",
|
|
10556
|
+
"poi.medical": "unified-day-doctor",
|
|
10557
|
+
"poi.park-nature": "unified-day-nature",
|
|
10558
|
+
"poi.pictogram.aerialway": "unified-day-aerialway",
|
|
10559
|
+
"poi.pictogram.airport": "unified-day-airport",
|
|
10560
|
+
"poi.pictogram.bank": "unified-day-bank",
|
|
10561
|
+
"poi.pictogram.bar": "unified-day-bar",
|
|
10562
|
+
"poi.pictogram.beach": "unified-day-beach",
|
|
10563
|
+
"poi.pictogram.beauty": "unified-day-beauty",
|
|
10564
|
+
"poi.pictogram.bookstore": "unified-day-bookstore",
|
|
10565
|
+
"poi.pictogram.buddhist": "unified-day-buddhist",
|
|
10566
|
+
"poi.pictogram.bus": "unified-day-bus",
|
|
10567
|
+
"poi.pictogram.campsite": "unified-day-campsite",
|
|
10568
|
+
"poi.pictogram.car": "unified-day-car",
|
|
10569
|
+
"poi.pictogram.car-repair": "unified-day-car-repair",
|
|
10570
|
+
"poi.pictogram.charging-station": "unified-day-charging-station",
|
|
10571
|
+
"poi.pictogram.christian": "unified-day-christian",
|
|
10572
|
+
"poi.pictogram.clothing": "unified-day-clothing",
|
|
10573
|
+
"poi.pictogram.coffee": "unified-day-coffee",
|
|
10574
|
+
"poi.pictogram.college": "unified-day-college",
|
|
10575
|
+
"poi.pictogram.community": "unified-day-community",
|
|
10576
|
+
"poi.pictogram.convenience": "unified-day-convenience",
|
|
10577
|
+
"poi.pictogram.dentist": "unified-day-dentist",
|
|
10578
|
+
"poi.pictogram.doctor": "unified-day-doctor",
|
|
10579
|
+
"poi.pictogram.dog-park": "unified-day-dog-park",
|
|
10580
|
+
"poi.pictogram.drinking-water": "unified-day-drinking-water",
|
|
10581
|
+
"poi.pictogram.education": "unified-day-education",
|
|
10582
|
+
"poi.pictogram.electronics": "unified-day-electronics",
|
|
10583
|
+
"poi.pictogram.embassy": "unified-day-embassy",
|
|
10584
|
+
"poi.pictogram.fast-food": "unified-day-fast-food",
|
|
10585
|
+
"poi.pictogram.ferry": "unified-day-ferry",
|
|
10586
|
+
"poi.pictogram.fire-station": "unified-day-fire-station",
|
|
10587
|
+
"poi.pictogram.fitness": "unified-day-fitness",
|
|
10588
|
+
"poi.pictogram.florist": "unified-day-florist",
|
|
10589
|
+
"poi.pictogram.food": "unified-day-food",
|
|
10590
|
+
"poi.pictogram.fuel": "unified-day-fuel",
|
|
10591
|
+
"poi.pictogram.garden": "unified-day-garden",
|
|
10592
|
+
"poi.pictogram.golf": "unified-day-golf",
|
|
10593
|
+
"poi.pictogram.grocery": "unified-day-grocery",
|
|
10594
|
+
"poi.pictogram.harbor": "unified-day-harbor",
|
|
10595
|
+
"poi.pictogram.hardware": "unified-day-hardware",
|
|
10596
|
+
"poi.pictogram.health": "unified-day-health",
|
|
10597
|
+
"poi.pictogram.jewish": "unified-day-jewish",
|
|
10598
|
+
"poi.pictogram.laundry": "unified-day-laundry",
|
|
10599
|
+
"poi.pictogram.library": "unified-day-library",
|
|
10600
|
+
"poi.pictogram.lodging": "unified-day-lodging",
|
|
10601
|
+
"poi.pictogram.major-transit": "unified-day-major-transit",
|
|
10602
|
+
"poi.pictogram.mountain": "unified-day-mountain",
|
|
10603
|
+
"poi.pictogram.muslim": "unified-day-muslim",
|
|
10604
|
+
"poi.pictogram.natural": "unified-day-natural",
|
|
10605
|
+
"poi.pictogram.nature": "unified-day-nature",
|
|
10606
|
+
"poi.pictogram.parking": "unified-day-parking",
|
|
10607
|
+
"poi.pictogram.parking-garage": "unified-day-parking-garage",
|
|
10608
|
+
"poi.pictogram.pharmacy": "unified-day-pharmacy",
|
|
10609
|
+
"poi.pictogram.playground": "unified-day-playground",
|
|
10610
|
+
"poi.pictogram.plaza": "unified-day-plaza",
|
|
10611
|
+
"poi.pictogram.police": "unified-day-police",
|
|
10612
|
+
"poi.pictogram.post": "unified-day-post",
|
|
10613
|
+
"poi.pictogram.prison": "unified-day-prison",
|
|
10614
|
+
"poi.pictogram.rail": "unified-day-rail",
|
|
10615
|
+
"poi.pictogram.rail-light": "unified-day-rail-light",
|
|
10616
|
+
"poi.pictogram.services": "unified-day-services",
|
|
10617
|
+
"poi.pictogram.shopping": "unified-day-shopping",
|
|
10618
|
+
"poi.pictogram.sport": "unified-day-sport",
|
|
10619
|
+
"poi.pictogram.stadium": "unified-day-stadium",
|
|
10620
|
+
"poi.pictogram.swimming": "unified-day-swimming",
|
|
10621
|
+
"poi.pictogram.toilet": "unified-day-toilet",
|
|
10622
|
+
"poi.pictogram.town-hall": "unified-day-town-hall",
|
|
10623
|
+
"poi.pictogram.waterfall": "unified-day-waterfall",
|
|
10624
|
+
"poi.pictogram.worship": "unified-day-worship",
|
|
10625
|
+
"poi.public-services": "unified-day-town-hall",
|
|
10626
|
+
"poi.religion": "unified-day-worship",
|
|
10627
|
+
"poi.retail": "unified-day-shopping",
|
|
10628
|
+
"poi.sport-leisure": "unified-day-sport",
|
|
10629
|
+
"poi.transport": "unified-day-major-transit",
|
|
10630
|
+
"poi.visitor-amenity": "unified-day-services"
|
|
10631
|
+
};
|
|
10632
|
+
|
|
10633
|
+
// src/official/streets-time-colors.ts
|
|
10634
|
+
function parse(value) {
|
|
10635
|
+
if (value.startsWith("#")) {
|
|
10636
|
+
const hex2 = value.slice(1);
|
|
10637
|
+
const expanded = hex2.length < 5 ? [...hex2].map((digit) => digit + digit).join("") : hex2;
|
|
10638
|
+
return {
|
|
10639
|
+
rgb: [0, 2, 4].map((offset) => parseInt(expanded.slice(offset, offset + 2), 16)),
|
|
10640
|
+
alpha: expanded.length === 8 ? parseInt(expanded.slice(6), 16) / 255 : 1
|
|
10641
|
+
};
|
|
10642
|
+
}
|
|
10643
|
+
const channels2 = value.match(/[\d.]+/g)?.map(Number);
|
|
10644
|
+
if (!channels2 || channels2.length < 3) throw new Error(`Unsupported Streets color: ${value}`);
|
|
10645
|
+
return { rgb: channels2.slice(0, 3), alpha: channels2[3] ?? 1 };
|
|
10646
|
+
}
|
|
10647
|
+
var gray = (rgb) => rgb[0] * 0.2126 + rgb[1] * 0.7152 + rgb[2] * 0.0722;
|
|
10648
|
+
function transfer(value, from, to) {
|
|
10649
|
+
return to < from ? value * (to / from) : from < 255 ? value + (255 - value) * ((to - from) / (255 - from)) : value;
|
|
10650
|
+
}
|
|
10651
|
+
function referenceRole(role) {
|
|
10652
|
+
if (/^buildings\.(?:raised\.|model(?:Surface|Glass|Secondary|Roof|Accent)$)/.test(role))
|
|
10653
|
+
return "buildings.extrusion";
|
|
10654
|
+
if (role.startsWith("buildings.flat."))
|
|
10655
|
+
return role.endsWith("Outline") ? "buildings.outline" : "buildings.extrusion";
|
|
10656
|
+
if (role === "buildings.modelWater") return "hydro.water";
|
|
10657
|
+
if (role === "buildings.modelVegetation") return "vegetation.tree.broadleaf.b";
|
|
10658
|
+
if (role === "buildings.modelWood") return "vegetation.tree.bark";
|
|
10659
|
+
if (role === "vegetation.tree.outline") return "surface.park";
|
|
10660
|
+
if (role.startsWith("roads.overview."))
|
|
10661
|
+
return role.includes("casing") ? "roads.detail.casing" : "roads.motorway";
|
|
10662
|
+
if (role === "roads.accessOverview") return "roads.default";
|
|
10663
|
+
if (role === "roads.path.ground" || role === "roads.path.green") return "roads.path";
|
|
10664
|
+
if (role === "surface.background.transition") return "surface.background";
|
|
10665
|
+
if (role === "landcover.orchard" || role === "landcover.nursery") return "landcover.greenspace";
|
|
10666
|
+
return role;
|
|
10667
|
+
}
|
|
10668
|
+
function streetsTimeColors(day, referenceDay, referenceTime, monochrome, preset) {
|
|
10669
|
+
const temperature = {
|
|
10670
|
+
day: [1, 1, 1],
|
|
10671
|
+
dawn: [1.035, 1, 0.93],
|
|
10672
|
+
dusk: [1.045, 1, 0.97],
|
|
10673
|
+
night: [0.92, 0.97, 1.06]
|
|
10674
|
+
}[preset];
|
|
10675
|
+
return Object.fromEntries(
|
|
10676
|
+
Object.entries(day).map(([role, value]) => {
|
|
10677
|
+
if (role.startsWith("sky.") || /^(?:buildings\.(?:floodLight|modelEmission))$/.test(role))
|
|
10678
|
+
return [role, referenceTime[role] ?? value];
|
|
10679
|
+
if (role.startsWith("labels.shield.") || role === "roads.sidewalk.surface")
|
|
10680
|
+
return [role, referenceTime[role] ?? value];
|
|
10681
|
+
const anchor = referenceRole(role);
|
|
10682
|
+
const from = referenceDay[anchor];
|
|
10683
|
+
const to = referenceTime[anchor];
|
|
10684
|
+
if (!from || !to) throw new Error(`Missing Streets time-of-day anchor: ${role}`);
|
|
10685
|
+
const color = parse(value);
|
|
10686
|
+
if (role === "labels.waterHalo") color.alpha = parse(to).alpha;
|
|
10687
|
+
const source = parse(from).rgb;
|
|
10688
|
+
const target = parse(to).rgb;
|
|
10689
|
+
const rgb = monochrome ? Array(3).fill(transfer(gray(color.rgb), gray(source), gray(target))) : color.rgb.map(
|
|
10690
|
+
(channel, i) => transfer(channel, gray(source), gray(target)) * temperature[i]
|
|
10691
|
+
);
|
|
10692
|
+
const channels2 = rgb.map((channel) => Math.round(Math.max(0, Math.min(255, channel))));
|
|
10693
|
+
return [
|
|
10694
|
+
role,
|
|
10695
|
+
color.alpha < 1 ? `rgba(${channels2.join(", ")}, ${color.alpha})` : "#" + channels2.map((channel) => channel.toString(16).padStart(2, "0")).join("").toUpperCase()
|
|
10696
|
+
];
|
|
10697
|
+
})
|
|
10698
|
+
);
|
|
10699
|
+
}
|
|
10700
|
+
|
|
10701
|
+
// src/official/streets-cartography-themes.ts
|
|
10702
|
+
var palettes = {
|
|
10703
|
+
day: ["#E8EAED", "#F3E9DF", "#D5D8DD", "#DDCCC0"],
|
|
10704
|
+
dawn: ["#E9E6E8", "#F6EDDF", "#D7D2D5", "#E2D4C2"],
|
|
10705
|
+
dusk: ["#383B46", "#474238", "#494D59", "#605746"],
|
|
10706
|
+
night: ["#2B2F3A", "#37352F", "#3A404D", "#4D483C"]
|
|
10707
|
+
};
|
|
10708
|
+
function colors(name) {
|
|
10709
|
+
const preset = name.startsWith("dark") ? "night" : name.startsWith("dusk") ? "dusk" : name.startsWith("dawn") ? "dawn" : "day";
|
|
10710
|
+
const values = palettes[preset].map((hex2) => {
|
|
10711
|
+
let rgb = [1, 3, 5].map((offset) => parseInt(hex2.slice(offset, offset + 2), 16));
|
|
10712
|
+
if (name.includes("monochrome")) {
|
|
10713
|
+
const gray2 = rgb[0] * 0.2126 + rgb[1] * 0.7152 + rgb[2] * 0.0722;
|
|
10714
|
+
rgb = [gray2, gray2, gray2];
|
|
10715
|
+
} else if (name.includes("faded")) {
|
|
10716
|
+
rgb = rgb.map((value) => value + (255 - value) * 0.08);
|
|
10717
|
+
}
|
|
10718
|
+
return "#" + rgb.map((value) => Math.round(value).toString(16).padStart(2, "0")).join("");
|
|
10719
|
+
});
|
|
10720
|
+
return Object.fromEntries(
|
|
10721
|
+
["neutral", "active", "neutralOutline", "activeOutline"].map((role, index) => [
|
|
10722
|
+
`buildings.flat.${role}`,
|
|
10723
|
+
values[index]
|
|
10724
|
+
])
|
|
10725
|
+
);
|
|
10726
|
+
}
|
|
10727
|
+
function streetsCartographyThemes(base) {
|
|
10728
|
+
const themes = Object.fromEntries(
|
|
10729
|
+
Object.entries(base).map(([name, theme]) => [
|
|
10730
|
+
name,
|
|
10731
|
+
defineTheme3(theme, {
|
|
10732
|
+
id: `streets-${name}`,
|
|
10733
|
+
version: 1,
|
|
10734
|
+
colorScheme: theme.colorScheme,
|
|
10735
|
+
typography: base.light.typography,
|
|
10736
|
+
tokens: {
|
|
10737
|
+
color: {
|
|
10738
|
+
...colors(name),
|
|
10739
|
+
...name === "light" ? streetsDayColors : {},
|
|
10740
|
+
"roads.accessOverview": colors(name)["buildings.flat.neutral"],
|
|
10741
|
+
"roads.path.ground": token10.color("roads.path"),
|
|
10742
|
+
"roads.path.green": "#FFFFFF",
|
|
10743
|
+
"surface.background.transition": token10.color(
|
|
10744
|
+
name === "light" ? "surface.background" : "surface.background.overview"
|
|
10745
|
+
),
|
|
10746
|
+
"vegetation.tree.outline": name === "light" ? "#A0E5B5" : token10.color("surface.park"),
|
|
10747
|
+
"landcover.orchard": token10.color("landcover.farmland"),
|
|
10748
|
+
"landcover.nursery": token10.color("landcover.farmland"),
|
|
10749
|
+
"roads.overview.casing": token10.color("roads.detail.casing"),
|
|
10750
|
+
"roads.overview.major": token10.color("roads.motorway"),
|
|
10751
|
+
"roads.overview.majorClose": token10.color("roads.motorway"),
|
|
10752
|
+
"roads.overview.casingClose": token10.color("roads.detail.casing"),
|
|
10753
|
+
...name === "light" ? streetsDayGroundColors : {},
|
|
10754
|
+
...name === "light" ? streetsNetworkDayColors : {},
|
|
10755
|
+
// The ordinary city stays in warm limestone; authored parts add material contrast.
|
|
10756
|
+
"buildings.raised.neutral": name === "light" ? "#ECE8DE" : colors(name)["buildings.flat.neutral"],
|
|
10757
|
+
...streetsBuildingColors(
|
|
10758
|
+
name === "light" ? "#EEEAE1" : colors(name)["buildings.flat.neutral"],
|
|
10759
|
+
theme.colorScheme === "dark",
|
|
10760
|
+
name.includes("monochrome")
|
|
10761
|
+
),
|
|
10762
|
+
...name === "light" ? {
|
|
10763
|
+
"vegetation.tree.bark": "#C6B493",
|
|
10764
|
+
"buildings.modelWood": "#C6B493",
|
|
10765
|
+
"buildings.flat.neutralOutline": "#B9BFBA",
|
|
10766
|
+
"buildings.flat.activeOutline": "#B9BFBA",
|
|
10767
|
+
"roads.path.ground": "#D5DAD7",
|
|
10768
|
+
"landcover.global.crop": "rgba(0, 0, 0, 0)"
|
|
10769
|
+
} : {}
|
|
10770
|
+
},
|
|
10771
|
+
font: base.light.tokens.font,
|
|
10772
|
+
image: { ...theme.tokens.image, ...name === "light" ? streetsDayImages : {} },
|
|
10773
|
+
number: Object.fromEntries([
|
|
10774
|
+
["roads.path.groundOpacity", 1],
|
|
10775
|
+
["labels.shield.spacing11", 420],
|
|
10776
|
+
["labels.shield.spacing13", 480],
|
|
10777
|
+
...[100, 85, 78, 55, 25].map((value) => [
|
|
10778
|
+
`land.climate.opacity${value === 100 ? "" : value}`,
|
|
10779
|
+
value / 100
|
|
10780
|
+
])
|
|
10781
|
+
])
|
|
10782
|
+
}
|
|
10783
|
+
})
|
|
10784
|
+
])
|
|
10785
|
+
);
|
|
10786
|
+
const day = resolveTileflowTheme3(themes.light).tokens.color;
|
|
10787
|
+
const referenceDay = resolveTileflowTheme3(base.light).tokens.color;
|
|
10788
|
+
for (const [name, theme] of Object.entries(themes)) {
|
|
10789
|
+
if (!/^(?:dawn|dusk|dark)(?:-|$)/.test(name)) continue;
|
|
10790
|
+
const referenceTime = resolveTileflowTheme3(base[name]).tokens.color;
|
|
10791
|
+
themes[name] = defineTheme3(theme, {
|
|
10792
|
+
id: `streets-${name}`,
|
|
10793
|
+
version: 1,
|
|
10794
|
+
colorScheme: theme.colorScheme,
|
|
10795
|
+
tokens: {
|
|
10796
|
+
color: streetsTimeColors(
|
|
10797
|
+
{ ...day, "landcover.global.crop": streetsDayGroundColors["landcover.global.crop"] },
|
|
10798
|
+
referenceDay,
|
|
10799
|
+
referenceTime,
|
|
10800
|
+
name.includes("monochrome"),
|
|
10801
|
+
name.startsWith("dawn") ? "dawn" : name.startsWith("dusk") ? "dusk" : "night"
|
|
10802
|
+
)
|
|
10803
|
+
}
|
|
10804
|
+
});
|
|
10805
|
+
}
|
|
10806
|
+
return themes;
|
|
10807
|
+
}
|
|
10808
|
+
|
|
9972
10809
|
// src/official/streets-lighting.ts
|
|
9973
10810
|
var defaultLighting = {
|
|
9974
10811
|
dawn: {
|
|
@@ -9985,11 +10822,11 @@ var defaultLighting = {
|
|
|
9985
10822
|
sun: {
|
|
9986
10823
|
azimuth: 180,
|
|
9987
10824
|
altitude: 70,
|
|
9988
|
-
color: "#
|
|
9989
|
-
intensity: 0.
|
|
9990
|
-
shadowIntensity:
|
|
10825
|
+
color: "#FFF5E8",
|
|
10826
|
+
intensity: 0.3,
|
|
10827
|
+
shadowIntensity: 0.8
|
|
9991
10828
|
},
|
|
9992
|
-
ambient: { color: "#
|
|
10829
|
+
ambient: { color: "#E2EBF7", intensity: 0.7 }
|
|
9993
10830
|
},
|
|
9994
10831
|
dusk: {
|
|
9995
10832
|
sun: {
|
|
@@ -10013,51 +10850,42 @@ var defaultLighting = {
|
|
|
10013
10850
|
ambient: { color: "#001638", intensity: 0.5 }
|
|
10014
10851
|
}
|
|
10015
10852
|
};
|
|
10016
|
-
|
|
10853
|
+
function withLightColors(colors2) {
|
|
10854
|
+
return Object.fromEntries(
|
|
10855
|
+
Object.keys(defaultLighting).map((preset) => [
|
|
10856
|
+
preset,
|
|
10857
|
+
{
|
|
10858
|
+
sun: { ...defaultLighting[preset].sun, color: colors2[preset].sun },
|
|
10859
|
+
ambient: { ...defaultLighting[preset].ambient, color: colors2[preset].ambient }
|
|
10860
|
+
}
|
|
10861
|
+
])
|
|
10862
|
+
);
|
|
10863
|
+
}
|
|
10864
|
+
var fadedLighting = withLightColors({
|
|
10017
10865
|
dawn: {
|
|
10018
|
-
sun:
|
|
10019
|
-
ambient:
|
|
10866
|
+
sun: "rgb(252.513725, 222.937729, 169.273879)",
|
|
10867
|
+
ambient: "rgb(254, 244.681815, 235.980392)"
|
|
10020
10868
|
},
|
|
10021
|
-
day:
|
|
10869
|
+
day: { sun: "#FFF8EF", ambient: "#EBF0F8" },
|
|
10022
10870
|
dusk: {
|
|
10023
|
-
sun:
|
|
10024
|
-
ambient:
|
|
10871
|
+
sun: "rgb(252.513725, 217.250027, 164.945083)",
|
|
10872
|
+
ambient: "rgb(87.776471, 97.427724, 126.419608)"
|
|
10025
10873
|
},
|
|
10026
|
-
night: {
|
|
10027
|
-
|
|
10028
|
-
|
|
10029
|
-
}
|
|
10030
|
-
};
|
|
10031
|
-
var monochromeLighting = {
|
|
10874
|
+
night: { sun: "rgb(97.815686, 102.955556, 118.333333)", ambient: "rgb(2, 38.117647, 86.886275)" }
|
|
10875
|
+
});
|
|
10876
|
+
var monochromeLighting = withLightColors({
|
|
10032
10877
|
dawn: {
|
|
10033
|
-
sun:
|
|
10034
|
-
|
|
10035
|
-
altitude: 50,
|
|
10036
|
-
color: "rgb(226.147143, 226.147143, 226.147143)",
|
|
10037
|
-
intensity: 0.35
|
|
10038
|
-
},
|
|
10039
|
-
ambient: { color: "rgb(245.703576, 245.703576, 245.703576)", intensity: 0.75 }
|
|
10040
|
-
},
|
|
10041
|
-
day: {
|
|
10042
|
-
sun: defaultLighting.day.sun,
|
|
10043
|
-
ambient: { ...defaultLighting.day.ambient, intensity: 0.85 }
|
|
10878
|
+
sun: "rgb(226.147143, 226.147143, 226.147143)",
|
|
10879
|
+
ambient: "rgb(245.703576, 245.703576, 245.703576)"
|
|
10044
10880
|
},
|
|
10881
|
+
day: { sun: "#FFFFFF", ambient: "#FFFFFF" },
|
|
10045
10882
|
dusk: {
|
|
10046
|
-
sun:
|
|
10047
|
-
|
|
10048
|
-
altitude: 60,
|
|
10049
|
-
color: "rgb(163.817309, 163.817309, 163.817309)",
|
|
10050
|
-
intensity: 0.15
|
|
10051
|
-
},
|
|
10052
|
-
ambient: { color: "rgb(126.294118, 126.294118, 126.294118)", intensity: 0.1 }
|
|
10883
|
+
sun: "rgb(163.817309, 163.817309, 163.817309)",
|
|
10884
|
+
ambient: "rgb(126.294118, 126.294118, 126.294118)"
|
|
10053
10885
|
},
|
|
10054
|
-
night
|
|
10055
|
-
|
|
10056
|
-
|
|
10057
|
-
sun: { ...defaultLighting.night.sun, color: "#353535", intensity: 0.25 },
|
|
10058
|
-
ambient: { color: "#353535", intensity: 0 }
|
|
10059
|
-
}
|
|
10060
|
-
};
|
|
10886
|
+
// Retain legible artistic moonlight; black would remove all night illumination.
|
|
10887
|
+
night: { sun: "#353535", ambient: "#353535" }
|
|
10888
|
+
});
|
|
10061
10889
|
var streetsLighting = {
|
|
10062
10890
|
default: defaultLighting,
|
|
10063
10891
|
faded: fadedLighting,
|
|
@@ -10226,9 +11054,9 @@ function hex(rgb) {
|
|
|
10226
11054
|
}
|
|
10227
11055
|
function inFamily(color, family) {
|
|
10228
11056
|
const rgb = channels(color);
|
|
10229
|
-
const
|
|
10230
|
-
if (family === "monochrome") return hex([
|
|
10231
|
-
if (family === "faded") return hex(rgb.map((channel) => channel + (
|
|
11057
|
+
const gray2 = rgb[0] * 0.2126 + rgb[1] * 0.7152 + rgb[2] * 0.0722;
|
|
11058
|
+
if (family === "monochrome") return hex([gray2, gray2, gray2]);
|
|
11059
|
+
if (family === "faded") return hex(rgb.map((channel) => channel + (gray2 - channel) * 0.35));
|
|
10232
11060
|
return color;
|
|
10233
11061
|
}
|
|
10234
11062
|
function streetsSkyTokens(preset, family) {
|
|
@@ -10748,17 +11576,17 @@ function formatStreetsColor({ a, b, g, r }, format) {
|
|
|
10748
11576
|
const hex2 = (value) => channel(value).toString(16).padStart(2, "0").toUpperCase();
|
|
10749
11577
|
return `#${hex2(r)}${hex2(g)}${hex2(b)}${format.length === 9 ? hex2(a * 255) : ""}`;
|
|
10750
11578
|
}
|
|
10751
|
-
function adjustStreetsColors(
|
|
11579
|
+
function adjustStreetsColors(colors2, transform) {
|
|
10752
11580
|
return Object.fromEntries(
|
|
10753
|
-
Object.entries(
|
|
11581
|
+
Object.entries(colors2).map(([role, value]) => [
|
|
10754
11582
|
role,
|
|
10755
11583
|
formatStreetsColor(transform(role, parseStreetsColor(value)), value)
|
|
10756
11584
|
])
|
|
10757
11585
|
);
|
|
10758
11586
|
}
|
|
10759
11587
|
function grayscale(color) {
|
|
10760
|
-
const
|
|
10761
|
-
return { ...color, r:
|
|
11588
|
+
const gray2 = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;
|
|
11589
|
+
return { ...color, r: gray2, g: gray2, b: gray2 };
|
|
10762
11590
|
}
|
|
10763
11591
|
function isDarkStreetsPreset(preset) {
|
|
10764
11592
|
return preset === "dusk" || preset === "night";
|
|
@@ -10767,8 +11595,8 @@ function transferStreetsColor(color, from, to, monochrome) {
|
|
|
10767
11595
|
const source = parseStreetsColor(from);
|
|
10768
11596
|
const target = parseStreetsColor(to);
|
|
10769
11597
|
if (monochrome) {
|
|
10770
|
-
const
|
|
10771
|
-
return { ...color, r:
|
|
11598
|
+
const gray2 = grayscale(color).r + target.r - grayscale(source).r;
|
|
11599
|
+
return { ...color, r: gray2, g: gray2, b: gray2 };
|
|
10772
11600
|
}
|
|
10773
11601
|
return {
|
|
10774
11602
|
...color,
|
|
@@ -10785,7 +11613,7 @@ function calibratedStreetsColors(preset, theme) {
|
|
|
10785
11613
|
const roadCasings = streetsRoadCasingProfiles[`${theme}-${preset}`];
|
|
10786
11614
|
const baseline = streetsSurfaceProfiles[dark ? "default-night" : "default-day"];
|
|
10787
11615
|
const monochrome = theme === "monochrome";
|
|
10788
|
-
const
|
|
11616
|
+
const colors2 = adjustStreetsColors(base, (role, color) => {
|
|
10789
11617
|
if (role.startsWith("labels.shield.") || role === "roads.sidewalk.surface") return color;
|
|
10790
11618
|
const shift = (from, to) => transferStreetsColor(color, from, to, monochrome);
|
|
10791
11619
|
const foreground = () => monochrome ? grayscale(color) : color;
|
|
@@ -10839,7 +11667,7 @@ function calibratedStreetsColors(preset, theme) {
|
|
|
10839
11667
|
return shift(base["surface.background"], profile.land);
|
|
10840
11668
|
return foreground();
|
|
10841
11669
|
});
|
|
10842
|
-
return { ...
|
|
11670
|
+
return { ...colors2, "roads.detail.casing": roadCasings.hd };
|
|
10843
11671
|
}
|
|
10844
11672
|
function streetsPaletteColors(preset, colorTheme) {
|
|
10845
11673
|
const palette = {
|
|
@@ -10855,7 +11683,11 @@ function streetsPaletteColors(preset, colorTheme) {
|
|
|
10855
11683
|
"buildings.modelWood": palette["vegetation.tree.bark"],
|
|
10856
11684
|
"buildings.floodLight": !isDarkStreetsPreset(preset) ? "#FFFFFF" : colorTheme === "monochrome" ? "#E5E5E5" : colorTheme === "faded" ? "#F8E4C4" : "#F5CFA8",
|
|
10857
11685
|
...streetsModelLighting(preset, colorTheme).colors,
|
|
10858
|
-
...streetsBuildingColors(
|
|
11686
|
+
...streetsBuildingColors(
|
|
11687
|
+
palette["buildings.extrusion"],
|
|
11688
|
+
isDarkStreetsPreset(preset),
|
|
11689
|
+
colorTheme === "monochrome"
|
|
11690
|
+
),
|
|
10859
11691
|
...streetsSkyTokens(preset, colorTheme).colors
|
|
10860
11692
|
};
|
|
10861
11693
|
}
|
|
@@ -10896,7 +11728,7 @@ var streetsImages = {
|
|
|
10896
11728
|
"roads.shield.rectangleYellow": "road-shield-rectangle-yellow",
|
|
10897
11729
|
"roads.sidewalkPattern": "sidewalk-dot"
|
|
10898
11730
|
};
|
|
10899
|
-
var streetsLightTheme =
|
|
11731
|
+
var streetsLightTheme = defineTheme4({
|
|
10900
11732
|
id: "streets-light",
|
|
10901
11733
|
version: 1,
|
|
10902
11734
|
colorScheme: "light",
|
|
@@ -10907,11 +11739,11 @@ var streetsLightTheme = defineTheme3({
|
|
|
10907
11739
|
image: { ...streetsImages, ...streetsPoiImageTokens("light") }
|
|
10908
11740
|
},
|
|
10909
11741
|
typography: {
|
|
10910
|
-
font:
|
|
10911
|
-
places: { font:
|
|
10912
|
-
poi: { font:
|
|
10913
|
-
roads: { font:
|
|
10914
|
-
water: { font:
|
|
11742
|
+
font: token11.font("default"),
|
|
11743
|
+
places: { font: token11.font("places") },
|
|
11744
|
+
poi: { font: token11.font("default") },
|
|
11745
|
+
roads: { font: token11.font("default") },
|
|
11746
|
+
water: { font: token11.font("default") }
|
|
10915
11747
|
},
|
|
10916
11748
|
lighting: {
|
|
10917
11749
|
...streetsLighting.default.day,
|
|
@@ -10922,29 +11754,14 @@ var streetsLightTheme = defineTheme3({
|
|
|
10922
11754
|
position: [1.15, 180, 20]
|
|
10923
11755
|
}
|
|
10924
11756
|
});
|
|
10925
|
-
var streetsDarkTheme =
|
|
11757
|
+
var streetsDarkTheme = defineTheme4(streetsLightTheme, {
|
|
10926
11758
|
id: "streets-dark",
|
|
10927
11759
|
version: 1,
|
|
10928
11760
|
colorScheme: "dark",
|
|
10929
11761
|
tokens: {
|
|
11762
|
+
image: { ...streetsImages, ...streetsPoiImageTokens("dark") },
|
|
10930
11763
|
color: streetsPaletteColors("night", "default"),
|
|
10931
|
-
number: streetsLightingNumbers("night", "default")
|
|
10932
|
-
font: streetsFonts2,
|
|
10933
|
-
image: {
|
|
10934
|
-
...streetsImages,
|
|
10935
|
-
...streetsPoiImageTokens("dark"),
|
|
10936
|
-
...Object.fromEntries(
|
|
10937
|
-
Object.entries(streetsImages).filter(([role]) => role.startsWith("vegetation.tree.")).map(([role, image2]) => [role, `${image2}-dark`])
|
|
10938
|
-
),
|
|
10939
|
-
"roads.sidewalkPattern": "sidewalk-dot-dark"
|
|
10940
|
-
}
|
|
10941
|
-
},
|
|
10942
|
-
typography: {
|
|
10943
|
-
font: token7.font("default"),
|
|
10944
|
-
places: { font: token7.font("places") },
|
|
10945
|
-
poi: { font: token7.font("default") },
|
|
10946
|
-
roads: { font: token7.font("default") },
|
|
10947
|
-
water: { font: token7.font("default") }
|
|
11764
|
+
number: streetsLightingNumbers("night", "default")
|
|
10948
11765
|
},
|
|
10949
11766
|
lighting: {
|
|
10950
11767
|
...streetsLighting.default.night,
|
|
@@ -10958,84 +11775,90 @@ var streetsDarkTheme = defineTheme3({
|
|
|
10958
11775
|
});
|
|
10959
11776
|
function defineStreetsPaletteTheme(name, preset, colorTheme) {
|
|
10960
11777
|
const isDark = isDarkStreetsPreset(preset);
|
|
10961
|
-
|
|
10962
|
-
return defineTheme3(isDark ? streetsDarkTheme : streetsLightTheme, {
|
|
11778
|
+
return defineTheme4(isDark ? streetsDarkTheme : streetsLightTheme, {
|
|
10963
11779
|
id: `streets-${name}`,
|
|
10964
11780
|
version: 1,
|
|
10965
11781
|
colorScheme: isDark ? "dark" : "light",
|
|
10966
11782
|
lighting: streetsLighting[colorTheme][preset],
|
|
10967
11783
|
tokens: {
|
|
11784
|
+
image: {
|
|
11785
|
+
...streetsImages,
|
|
11786
|
+
...streetsPoiImageTokens(
|
|
11787
|
+
colorTheme === "monochrome" ? isDark ? "monochrome-dark" : "monochrome" : isDark ? "dark" : "light"
|
|
11788
|
+
)
|
|
11789
|
+
},
|
|
10968
11790
|
color: streetsPaletteColors(preset, colorTheme),
|
|
10969
|
-
number: streetsLightingNumbers(preset, colorTheme)
|
|
10970
|
-
...imageVariant ? { image: streetsPoiImageTokens(imageVariant) } : {}
|
|
11791
|
+
number: streetsLightingNumbers(preset, colorTheme)
|
|
10971
11792
|
}
|
|
10972
11793
|
});
|
|
10973
11794
|
}
|
|
10974
|
-
var streetsThemes = Object.freeze(
|
|
10975
|
-
|
|
10976
|
-
|
|
10977
|
-
|
|
10978
|
-
|
|
10979
|
-
|
|
10980
|
-
|
|
10981
|
-
|
|
10982
|
-
|
|
10983
|
-
|
|
10984
|
-
|
|
10985
|
-
|
|
10986
|
-
|
|
10987
|
-
|
|
11795
|
+
var streetsThemes = Object.freeze(
|
|
11796
|
+
streetsCartographyThemes({
|
|
11797
|
+
light: streetsLightTheme,
|
|
11798
|
+
dark: streetsDarkTheme,
|
|
11799
|
+
dawn: defineStreetsPaletteTheme("dawn", "dawn", "default"),
|
|
11800
|
+
dusk: defineStreetsPaletteTheme("dusk", "dusk", "default"),
|
|
11801
|
+
faded: defineStreetsPaletteTheme("faded", "day", "faded"),
|
|
11802
|
+
monochrome: defineStreetsPaletteTheme("monochrome", "day", "monochrome"),
|
|
11803
|
+
"dawn-faded": defineStreetsPaletteTheme("dawn-faded", "dawn", "faded"),
|
|
11804
|
+
"dawn-monochrome": defineStreetsPaletteTheme("dawn-monochrome", "dawn", "monochrome"),
|
|
11805
|
+
"dusk-faded": defineStreetsPaletteTheme("dusk-faded", "dusk", "faded"),
|
|
11806
|
+
"dusk-monochrome": defineStreetsPaletteTheme("dusk-monochrome", "dusk", "monochrome"),
|
|
11807
|
+
"dark-faded": defineStreetsPaletteTheme("dark-faded", "night", "faded"),
|
|
11808
|
+
"dark-monochrome": defineStreetsPaletteTheme("dark-monochrome", "night", "monochrome")
|
|
11809
|
+
})
|
|
11810
|
+
);
|
|
10988
11811
|
var streetsVisual = {
|
|
10989
11812
|
boundary: {
|
|
10990
|
-
admin:
|
|
10991
|
-
halo:
|
|
10992
|
-
regional:
|
|
10993
|
-
overviewLabel:
|
|
11813
|
+
admin: token11.color("boundaries.admin"),
|
|
11814
|
+
halo: token11.color("boundaries.halo"),
|
|
11815
|
+
regional: token11.color("boundaries.regional"),
|
|
11816
|
+
overviewLabel: token11.color("labels.overview")
|
|
10994
11817
|
},
|
|
10995
11818
|
building: {
|
|
10996
|
-
contactShadow:
|
|
10997
|
-
extrusion:
|
|
10998
|
-
fill:
|
|
10999
|
-
outline:
|
|
11000
|
-
shadow:
|
|
11819
|
+
contactShadow: token11.color("buildings.contactShadow"),
|
|
11820
|
+
extrusion: token11.color("buildings.extrusion"),
|
|
11821
|
+
fill: token11.color("buildings.fill"),
|
|
11822
|
+
outline: token11.color("buildings.outline"),
|
|
11823
|
+
shadow: token11.color("buildings.shadow")
|
|
11001
11824
|
},
|
|
11002
11825
|
terrain: {
|
|
11003
|
-
accent:
|
|
11004
|
-
highlight:
|
|
11005
|
-
shadow:
|
|
11826
|
+
accent: token11.color("terrain.hillshade.accent"),
|
|
11827
|
+
highlight: token11.color("terrain.hillshade.highlight"),
|
|
11828
|
+
shadow: token11.color("terrain.hillshade.shadow")
|
|
11006
11829
|
},
|
|
11007
11830
|
hydro: {
|
|
11008
|
-
depth0:
|
|
11009
|
-
depth200:
|
|
11010
|
-
depth2000:
|
|
11011
|
-
depth7000:
|
|
11012
|
-
ocean:
|
|
11013
|
-
water:
|
|
11014
|
-
overview:
|
|
11015
|
-
regional:
|
|
11016
|
-
waterway:
|
|
11831
|
+
depth0: token11.color("hydro.depth.m0"),
|
|
11832
|
+
depth200: token11.color("hydro.depth.m200"),
|
|
11833
|
+
depth2000: token11.color("hydro.depth.m2000"),
|
|
11834
|
+
depth7000: token11.color("hydro.depth.m7000"),
|
|
11835
|
+
ocean: token11.color("hydro.ocean"),
|
|
11836
|
+
water: token11.color("hydro.water"),
|
|
11837
|
+
overview: token11.color("hydro.water.overview"),
|
|
11838
|
+
regional: token11.color("hydro.water.regional"),
|
|
11839
|
+
waterway: token11.color("hydro.waterway")
|
|
11017
11840
|
},
|
|
11018
11841
|
label: {
|
|
11019
|
-
address:
|
|
11020
|
-
aerodrome:
|
|
11021
|
-
country:
|
|
11022
|
-
ferry:
|
|
11023
|
-
ferryHalo:
|
|
11024
|
-
halo:
|
|
11025
|
-
muted:
|
|
11026
|
-
neighborhood:
|
|
11027
|
-
overview:
|
|
11028
|
-
poi:
|
|
11029
|
-
primary:
|
|
11030
|
-
road:
|
|
11031
|
-
settlement:
|
|
11032
|
-
shieldDark:
|
|
11033
|
-
shieldLight:
|
|
11034
|
-
strong:
|
|
11035
|
-
water:
|
|
11036
|
-
waterHalo:
|
|
11037
|
-
placeHalo:
|
|
11038
|
-
roadHalo:
|
|
11842
|
+
address: token11.color("labels.address"),
|
|
11843
|
+
aerodrome: token11.color("labels.aerodrome"),
|
|
11844
|
+
country: token11.color("labels.country"),
|
|
11845
|
+
ferry: token11.color("labels.ferry"),
|
|
11846
|
+
ferryHalo: token11.color("labels.ferryHalo"),
|
|
11847
|
+
halo: token11.color("labels.halo"),
|
|
11848
|
+
muted: token11.color("labels.muted"),
|
|
11849
|
+
neighborhood: token11.color("labels.neighborhood"),
|
|
11850
|
+
overview: token11.color("labels.overview"),
|
|
11851
|
+
poi: token11.color("labels.poi"),
|
|
11852
|
+
primary: token11.color("labels.primary"),
|
|
11853
|
+
road: token11.color("labels.road"),
|
|
11854
|
+
settlement: token11.color("labels.settlement"),
|
|
11855
|
+
shieldDark: token11.color("labels.shield.dark"),
|
|
11856
|
+
shieldLight: token11.color("labels.shield.light"),
|
|
11857
|
+
strong: token11.color("labels.strong"),
|
|
11858
|
+
water: token11.color("labels.water"),
|
|
11859
|
+
waterHalo: token11.color("labels.waterHalo"),
|
|
11860
|
+
placeHalo: token11.color("labels.placeHalo"),
|
|
11861
|
+
roadHalo: token11.color("labels.roadHalo")
|
|
11039
11862
|
},
|
|
11040
11863
|
landcover: Object.fromEntries(
|
|
11041
11864
|
[
|
|
@@ -11056,12 +11879,12 @@ var streetsVisual = {
|
|
|
11056
11879
|
"villageGreen",
|
|
11057
11880
|
"wetland",
|
|
11058
11881
|
"wood"
|
|
11059
|
-
].map((name) => [name,
|
|
11882
|
+
].map((name) => [name, token11.color(`landcover.${name}`)])
|
|
11060
11883
|
),
|
|
11061
11884
|
globalLandcover: Object.fromEntries(
|
|
11062
11885
|
["barren", "crop", "grass", "shrub", "snow", "trees", "urban"].map((name) => [
|
|
11063
11886
|
name,
|
|
11064
|
-
|
|
11887
|
+
token11.color(`landcover.global.${name}`)
|
|
11065
11888
|
])
|
|
11066
11889
|
),
|
|
11067
11890
|
landuse: Object.fromEntries(
|
|
@@ -11082,7 +11905,7 @@ var streetsVisual = {
|
|
|
11082
11905
|
"recreation",
|
|
11083
11906
|
"recreationOutline",
|
|
11084
11907
|
"residential"
|
|
11085
|
-
].map((name) => [name,
|
|
11908
|
+
].map((name) => [name, token11.color(`landuse.${name}`)])
|
|
11086
11909
|
),
|
|
11087
11910
|
poi: Object.fromEntries(
|
|
11088
11911
|
[
|
|
@@ -11102,120 +11925,120 @@ var streetsVisual = {
|
|
|
11102
11925
|
"sport-leisure",
|
|
11103
11926
|
"transport",
|
|
11104
11927
|
"visitor-amenity"
|
|
11105
|
-
].map((name) => [name,
|
|
11928
|
+
].map((name) => [name, token11.color(`poi.${name}`)])
|
|
11106
11929
|
),
|
|
11107
11930
|
road: {
|
|
11108
|
-
casing:
|
|
11109
|
-
detailCasing:
|
|
11110
|
-
cityCasing:
|
|
11111
|
-
cityMinor:
|
|
11112
|
-
cityPrimary:
|
|
11113
|
-
citySecondary:
|
|
11114
|
-
cityTertiary:
|
|
11115
|
-
cityTunnel:
|
|
11116
|
-
cityTunnelCasing:
|
|
11117
|
-
cycleway:
|
|
11118
|
-
default:
|
|
11119
|
-
ferry:
|
|
11120
|
-
motorway:
|
|
11121
|
-
motorwayCasing:
|
|
11122
|
-
motorwayTunnel:
|
|
11123
|
-
parkPath:
|
|
11124
|
-
path:
|
|
11125
|
-
pathCasing:
|
|
11126
|
-
pathTransition:
|
|
11127
|
-
pathTunnel:
|
|
11128
|
-
pedestrianSurface:
|
|
11129
|
-
primary:
|
|
11130
|
-
rail:
|
|
11131
|
-
railTransit:
|
|
11132
|
-
sidewalkSurface:
|
|
11133
|
-
trunk:
|
|
11134
|
-
trunkCasing:
|
|
11135
|
-
trunkTunnel:
|
|
11136
|
-
tunnel:
|
|
11931
|
+
casing: token11.color("roads.default.casing"),
|
|
11932
|
+
detailCasing: token11.color("roads.detail.casing"),
|
|
11933
|
+
cityCasing: token11.color("roads.city.casing"),
|
|
11934
|
+
cityMinor: token11.color("roads.city.minor"),
|
|
11935
|
+
cityPrimary: token11.color("roads.city.primary"),
|
|
11936
|
+
citySecondary: token11.color("roads.city.secondary"),
|
|
11937
|
+
cityTertiary: token11.color("roads.city.tertiary"),
|
|
11938
|
+
cityTunnel: token11.color("roads.city.tunnel"),
|
|
11939
|
+
cityTunnelCasing: token11.color("roads.city.tunnelCasing"),
|
|
11940
|
+
cycleway: token11.color("roads.cycleway"),
|
|
11941
|
+
default: token11.color("roads.default"),
|
|
11942
|
+
ferry: token11.color("roads.ferry"),
|
|
11943
|
+
motorway: token11.color("roads.motorway"),
|
|
11944
|
+
motorwayCasing: token11.color("roads.motorway.casing"),
|
|
11945
|
+
motorwayTunnel: token11.color("roads.motorway.tunnel"),
|
|
11946
|
+
parkPath: token11.color("roads.parkPath"),
|
|
11947
|
+
path: token11.color("roads.path"),
|
|
11948
|
+
pathCasing: token11.color("roads.path.casing"),
|
|
11949
|
+
pathTransition: token11.color("roads.path.transition"),
|
|
11950
|
+
pathTunnel: token11.color("roads.path.tunnel"),
|
|
11951
|
+
pedestrianSurface: token11.color("roads.pedestrian.surface"),
|
|
11952
|
+
primary: token11.color("roads.primary"),
|
|
11953
|
+
rail: token11.color("roads.rail"),
|
|
11954
|
+
railTransit: token11.color("roads.railTransit"),
|
|
11955
|
+
sidewalkSurface: token11.color("roads.sidewalk.surface"),
|
|
11956
|
+
trunk: token11.color("roads.trunk"),
|
|
11957
|
+
trunkCasing: token11.color("roads.trunk.casing"),
|
|
11958
|
+
trunkTunnel: token11.color("roads.trunk.tunnel"),
|
|
11959
|
+
tunnel: token11.color("roads.default.tunnel")
|
|
11137
11960
|
},
|
|
11138
11961
|
surface: {
|
|
11139
|
-
background:
|
|
11140
|
-
backgroundOverview:
|
|
11141
|
-
building:
|
|
11142
|
-
land:
|
|
11143
|
-
park:
|
|
11144
|
-
water:
|
|
11962
|
+
background: token11.color("surface.background"),
|
|
11963
|
+
backgroundOverview: token11.color("surface.background.overview"),
|
|
11964
|
+
building: token11.color("surface.building"),
|
|
11965
|
+
land: token11.color("surface.land"),
|
|
11966
|
+
park: token11.color("surface.park"),
|
|
11967
|
+
water: token11.color("surface.water")
|
|
11145
11968
|
},
|
|
11146
|
-
transit:
|
|
11969
|
+
transit: token11.color("transit.primary"),
|
|
11147
11970
|
barrier: {
|
|
11148
|
-
fence:
|
|
11149
|
-
hedge:
|
|
11150
|
-
hedgeShade:
|
|
11151
|
-
wall:
|
|
11971
|
+
fence: token11.color("land.fence"),
|
|
11972
|
+
hedge: token11.color("landcover.hedge"),
|
|
11973
|
+
hedgeShade: token11.color("landcover.hedgeShade"),
|
|
11974
|
+
wall: token11.color("land.wall")
|
|
11152
11975
|
},
|
|
11153
11976
|
tree: {
|
|
11154
|
-
bark:
|
|
11977
|
+
bark: token11.color("vegetation.tree.bark"),
|
|
11155
11978
|
broadleaf: ["a", "b", "c", "d"].map(
|
|
11156
|
-
(suffix) =>
|
|
11979
|
+
(suffix) => token11.color(`vegetation.tree.broadleaf.${suffix}`)
|
|
11157
11980
|
),
|
|
11158
|
-
conifer: ["a", "b", "c"].map((suffix) =>
|
|
11981
|
+
conifer: ["a", "b", "c"].map((suffix) => token11.color(`vegetation.tree.conifer.${suffix}`))
|
|
11159
11982
|
},
|
|
11160
11983
|
image: {
|
|
11161
|
-
crosswalk:
|
|
11162
|
-
oneway:
|
|
11163
|
-
shieldCircleNeutral:
|
|
11164
|
-
shieldRectangleBlue:
|
|
11165
|
-
shieldRectangleGreen:
|
|
11166
|
-
shieldRectangleNeutral:
|
|
11167
|
-
shieldRectangleOrange:
|
|
11168
|
-
shieldRectangleRed:
|
|
11169
|
-
shieldRectangleYellow:
|
|
11170
|
-
sidewalkPattern:
|
|
11984
|
+
crosswalk: token11.image("roads.crosswalk"),
|
|
11985
|
+
oneway: token11.image("roads.oneway"),
|
|
11986
|
+
shieldCircleNeutral: token11.image("roads.shield.circleNeutral"),
|
|
11987
|
+
shieldRectangleBlue: token11.image("roads.shield.rectangleBlue"),
|
|
11988
|
+
shieldRectangleGreen: token11.image("roads.shield.rectangleGreen"),
|
|
11989
|
+
shieldRectangleNeutral: token11.image("roads.shield.rectangleNeutral"),
|
|
11990
|
+
shieldRectangleOrange: token11.image("roads.shield.rectangleOrange"),
|
|
11991
|
+
shieldRectangleRed: token11.image("roads.shield.rectangleRed"),
|
|
11992
|
+
shieldRectangleYellow: token11.image("roads.shield.rectangleYellow"),
|
|
11993
|
+
sidewalkPattern: token11.image("roads.sidewalkPattern")
|
|
11171
11994
|
},
|
|
11172
11995
|
font: {
|
|
11173
|
-
default:
|
|
11174
|
-
navigation:
|
|
11175
|
-
shield:
|
|
11176
|
-
places:
|
|
11177
|
-
regular:
|
|
11178
|
-
water:
|
|
11996
|
+
default: token11.font("default"),
|
|
11997
|
+
navigation: token11.font("navigation"),
|
|
11998
|
+
shield: token11.font("shield"),
|
|
11999
|
+
places: token11.font("places"),
|
|
12000
|
+
regular: token11.font("regular"),
|
|
12001
|
+
water: token11.font("water")
|
|
11179
12002
|
}
|
|
11180
12003
|
};
|
|
11181
12004
|
|
|
11182
12005
|
// src/official/streets-trees.ts
|
|
11183
12006
|
import {
|
|
11184
|
-
expr as
|
|
11185
|
-
field as
|
|
11186
|
-
renderPass as
|
|
11187
|
-
token as
|
|
12007
|
+
expr as expr13,
|
|
12008
|
+
field as field13,
|
|
12009
|
+
renderPass as renderPass12,
|
|
12010
|
+
token as token12,
|
|
11188
12011
|
vegetation as vegetation5,
|
|
11189
|
-
withRenderStack as
|
|
11190
|
-
zoom as
|
|
12012
|
+
withRenderStack as withRenderStack10,
|
|
12013
|
+
zoom as zoom12
|
|
11191
12014
|
} from "@tileflow/core";
|
|
11192
|
-
var seed =
|
|
11193
|
-
var genus =
|
|
11194
|
-
var leaf =
|
|
11195
|
-
var named = (names) =>
|
|
12015
|
+
var seed = expr13.toNumber(expr13.id(), 0);
|
|
12016
|
+
var genus = expr13.get(field13("genus"));
|
|
12017
|
+
var leaf = expr13.get(field13("leafType"));
|
|
12018
|
+
var named = (names) => expr13.match(
|
|
11196
12019
|
genus,
|
|
11197
12020
|
[{ labels: names.flatMap((name) => [name, name.toLowerCase()]), value: true }],
|
|
11198
12021
|
false
|
|
11199
12022
|
);
|
|
11200
|
-
var image = (form) =>
|
|
11201
|
-
var broadleaf =
|
|
11202
|
-
|
|
12023
|
+
var image = (form) => token12.image(`vegetation.tree.${form}`);
|
|
12024
|
+
var broadleaf = expr13.match(
|
|
12025
|
+
expr13.modulo(seed, 3),
|
|
11203
12026
|
[
|
|
11204
12027
|
{ labels: [0], value: image("round") },
|
|
11205
12028
|
{ labels: [1], value: image("open") }
|
|
11206
12029
|
],
|
|
11207
12030
|
image("tall")
|
|
11208
12031
|
);
|
|
11209
|
-
var palm =
|
|
11210
|
-
|
|
12032
|
+
var palm = expr13.match(
|
|
12033
|
+
expr13.modulo(seed, 2),
|
|
11211
12034
|
[{ labels: [0], value: image("palm-feather") }],
|
|
11212
12035
|
image("palm-fan")
|
|
11213
12036
|
);
|
|
11214
|
-
var crownImage =
|
|
12037
|
+
var crownImage = expr13.case(
|
|
11215
12038
|
[
|
|
11216
12039
|
{
|
|
11217
|
-
when:
|
|
11218
|
-
|
|
12040
|
+
when: expr13.any(
|
|
12041
|
+
expr13.eq(leaf, "palm"),
|
|
11219
12042
|
named([
|
|
11220
12043
|
"Acoelorrhaphe",
|
|
11221
12044
|
"Adonidia",
|
|
@@ -11254,8 +12077,8 @@ var crownImage = expr11.case(
|
|
|
11254
12077
|
},
|
|
11255
12078
|
{ when: named(["Cupressus", "Calocedrus", "Thuja"]), value: image("columnar") },
|
|
11256
12079
|
{
|
|
11257
|
-
when:
|
|
11258
|
-
|
|
12080
|
+
when: expr13.any(
|
|
12081
|
+
expr13.eq(leaf, "needleleaved"),
|
|
11259
12082
|
named([
|
|
11260
12083
|
"Abies",
|
|
11261
12084
|
"Araucaria",
|
|
@@ -11337,16 +12160,16 @@ var crownImage = expr11.case(
|
|
|
11337
12160
|
],
|
|
11338
12161
|
broadleaf
|
|
11339
12162
|
);
|
|
11340
|
-
var diameter =
|
|
11341
|
-
var crownFactor =
|
|
11342
|
-
|
|
12163
|
+
var diameter = expr13.toNumber(expr13.get(field13("diameterCrown")), 0);
|
|
12164
|
+
var crownFactor = expr13.divide(
|
|
12165
|
+
expr13.max(3, expr13.min(18, expr13.case([{ when: expr13.gt(diameter, 0), value: diameter }], 7))),
|
|
11343
12166
|
7
|
|
11344
12167
|
);
|
|
11345
|
-
var size = (divisor) =>
|
|
11346
|
-
[15,
|
|
11347
|
-
[22,
|
|
12168
|
+
var size = (divisor) => expr13.interpolate({ kind: "exponential", base: 2 }, expr13.zoom(), [
|
|
12169
|
+
[15, expr13.multiply(crownFactor, 2.1 / divisor)],
|
|
12170
|
+
[22, expr13.multiply(crownFactor, 268.8 / divisor)]
|
|
11348
12171
|
]);
|
|
11349
|
-
var streetsTrees =
|
|
12172
|
+
var streetsTrees = withRenderStack10(
|
|
11350
12173
|
vegetation5({
|
|
11351
12174
|
// Models stay 3D in overhead and tilted views; unsupported renderers omit trees.
|
|
11352
12175
|
mode: "3d",
|
|
@@ -11354,9 +12177,9 @@ var streetsTrees = withRenderStack9(
|
|
|
11354
12177
|
visible: true,
|
|
11355
12178
|
flat: {
|
|
11356
12179
|
minZoom: 15.5,
|
|
11357
|
-
color:
|
|
12180
|
+
color: token12.color("vegetation.tree.broadleaf.a"),
|
|
11358
12181
|
radius: size(2),
|
|
11359
|
-
opacity:
|
|
12182
|
+
opacity: zoom12.linear([
|
|
11360
12183
|
[15.5, 0],
|
|
11361
12184
|
[16, 0.12]
|
|
11362
12185
|
]),
|
|
@@ -11366,34 +12189,76 @@ var streetsTrees = withRenderStack9(
|
|
|
11366
12189
|
strokeOpacity: 0
|
|
11367
12190
|
},
|
|
11368
12191
|
threeDimensional: {
|
|
11369
|
-
barkColor:
|
|
12192
|
+
barkColor: token12.color("vegetation.tree.bark"),
|
|
11370
12193
|
broadleafColors: ["a", "b", "c", "d"].map(
|
|
11371
|
-
(shade) =>
|
|
12194
|
+
(shade) => token12.color(`vegetation.tree.broadleaf.${shade}`)
|
|
11372
12195
|
),
|
|
11373
12196
|
coniferColors: ["a", "b", "c"].map(
|
|
11374
|
-
(shade) =>
|
|
12197
|
+
(shade) => token12.color(`vegetation.tree.conifer.${shade}`)
|
|
11375
12198
|
),
|
|
11376
|
-
palmColors: ["a", "b", "c"].map((shade) =>
|
|
12199
|
+
palmColors: ["a", "b", "c"].map((shade) => token12.color(`vegetation.tree.broadleaf.${shade}`)),
|
|
11377
12200
|
// The flat hedge's shade and fill, so a hedge keeps its colour as it rises.
|
|
11378
|
-
hedgeColors: [
|
|
12201
|
+
hedgeColors: [token12.color("landcover.hedgeShade"), token12.color("landcover.hedge")],
|
|
11379
12202
|
crownScale: 1,
|
|
11380
12203
|
heightScale: 1,
|
|
11381
|
-
minimumHeight:
|
|
12204
|
+
minimumHeight: 6.4,
|
|
11382
12205
|
materialVariation: 1,
|
|
11383
12206
|
finish: "smooth",
|
|
11384
12207
|
edges: 0,
|
|
11385
12208
|
forms: {
|
|
11386
|
-
round: {
|
|
11387
|
-
|
|
11388
|
-
|
|
11389
|
-
|
|
11390
|
-
|
|
11391
|
-
|
|
12209
|
+
round: {
|
|
12210
|
+
heightScale: 0.8,
|
|
12211
|
+
crownScale: 0.8,
|
|
12212
|
+
sizeAnchor: 8.5,
|
|
12213
|
+
crownAnchor: 4.8,
|
|
12214
|
+
sizeCompression: 0.5,
|
|
12215
|
+
models: ["streets-tree-round"]
|
|
12216
|
+
},
|
|
12217
|
+
open: {
|
|
12218
|
+
heightScale: 0.8,
|
|
12219
|
+
crownScale: 0.8,
|
|
12220
|
+
sizeAnchor: 8,
|
|
12221
|
+
crownAnchor: 5.2,
|
|
12222
|
+
sizeCompression: 0.5,
|
|
12223
|
+
models: ["streets-tree-open"]
|
|
12224
|
+
},
|
|
12225
|
+
tall: {
|
|
12226
|
+
heightScale: 0.8,
|
|
12227
|
+
crownScale: 0.8,
|
|
12228
|
+
sizeAnchor: 9.5,
|
|
12229
|
+
crownAnchor: 4.6,
|
|
12230
|
+
sizeCompression: 0.5,
|
|
12231
|
+
models: ["streets-tree-tall"]
|
|
12232
|
+
},
|
|
12233
|
+
conifer: {
|
|
12234
|
+
heightScale: 0.8,
|
|
12235
|
+
crownScale: 0.8,
|
|
12236
|
+
sizeAnchor: 9,
|
|
12237
|
+
crownAnchor: 4.5,
|
|
12238
|
+
sizeCompression: 0.5,
|
|
12239
|
+
models: ["streets-tree-conifer"]
|
|
12240
|
+
},
|
|
12241
|
+
columnar: {
|
|
12242
|
+
heightScale: 0.8,
|
|
12243
|
+
crownScale: 0.8,
|
|
12244
|
+
sizeAnchor: 10,
|
|
12245
|
+
crownAnchor: 2.4,
|
|
12246
|
+
sizeCompression: 0.5,
|
|
12247
|
+
models: ["streets-tree-columnar"]
|
|
12248
|
+
},
|
|
12249
|
+
palm: {
|
|
12250
|
+
heightScale: 0.8,
|
|
12251
|
+
crownScale: 0.8,
|
|
12252
|
+
sizeAnchor: 11,
|
|
12253
|
+
crownAnchor: 6,
|
|
12254
|
+
sizeCompression: 0.5,
|
|
12255
|
+
models: ["streets-tree-palm-feather", "streets-tree-palm-fan"]
|
|
12256
|
+
}
|
|
11392
12257
|
}
|
|
11393
12258
|
}
|
|
11394
12259
|
}),
|
|
11395
12260
|
{
|
|
11396
|
-
crowns:
|
|
12261
|
+
crowns: renderPass12({
|
|
11397
12262
|
placement: { above: "vegetation.trees" },
|
|
11398
12263
|
// Inherit the optional tree binding from the anchor; generic OpenMapTiles omits it.
|
|
11399
12264
|
requirements: ["vegetation"],
|
|
@@ -11404,12 +12269,12 @@ var streetsTrees = withRenderStack9(
|
|
|
11404
12269
|
icon: {
|
|
11405
12270
|
image: crownImage,
|
|
11406
12271
|
size: size(52),
|
|
11407
|
-
opacity:
|
|
12272
|
+
opacity: zoom12.linear([
|
|
11408
12273
|
[15.5, 0],
|
|
11409
12274
|
[16, 0.88],
|
|
11410
12275
|
[18, 1]
|
|
11411
12276
|
]),
|
|
11412
|
-
rotate:
|
|
12277
|
+
rotate: expr13.modulo(expr13.multiply(seed, 137.508), 360),
|
|
11413
12278
|
rotationAlignment: "map",
|
|
11414
12279
|
pitchAlignment: "map",
|
|
11415
12280
|
allowOverlap: true,
|
|
@@ -11453,7 +12318,7 @@ var mapboxRoadPalette = {
|
|
|
11453
12318
|
};
|
|
11454
12319
|
var mapboxRailColor = streetsVisual.road.railTransit;
|
|
11455
12320
|
var streetsSurfacePalette = {
|
|
11456
|
-
background:
|
|
12321
|
+
background: zoom13.linear([
|
|
11457
12322
|
[13, streetsVisual.surface.backgroundOverview],
|
|
11458
12323
|
[14, streetsVisual.surface.background]
|
|
11459
12324
|
]),
|
|
@@ -11484,14 +12349,14 @@ var streetsSurfacePalette = {
|
|
|
11484
12349
|
scrub: streetsVisual.landcover.scrub,
|
|
11485
12350
|
urbanPark: streetsVisual.landcover.urbanPark,
|
|
11486
12351
|
villageGreen: streetsVisual.landcover.villageGreen,
|
|
11487
|
-
water:
|
|
12352
|
+
water: expr14.interpolate({ kind: "linear" }, expr14.zoom(), [
|
|
11488
12353
|
[5, streetsVisual.hydro.overview],
|
|
11489
12354
|
[7, streetsVisual.hydro.regional],
|
|
11490
12355
|
[13, streetsVisual.hydro.regional],
|
|
11491
12356
|
[
|
|
11492
12357
|
14,
|
|
11493
|
-
|
|
11494
|
-
|
|
12358
|
+
expr14.match(
|
|
12359
|
+
expr14.get(field14("class")),
|
|
11495
12360
|
[{ labels: ["ocean", "sea"], value: streetsVisual.hydro.ocean }],
|
|
11496
12361
|
streetsVisual.hydro.water
|
|
11497
12362
|
)
|
|
@@ -11514,7 +12379,7 @@ var streetsGlobalLandcoverPalette = {
|
|
|
11514
12379
|
trees: streetsVisual.globalLandcover.trees,
|
|
11515
12380
|
urban: streetsVisual.globalLandcover.urban
|
|
11516
12381
|
};
|
|
11517
|
-
var globalLandcoverOpacity =
|
|
12382
|
+
var globalLandcoverOpacity = zoom13.linear([
|
|
11518
12383
|
// At world and country zooms the source classes are the terrain palette.
|
|
11519
12384
|
// Blending them into the neutral land token desaturates forests and crops
|
|
11520
12385
|
// into one pale wash, so keep the authored colours intact until the detailed
|
|
@@ -11529,26 +12394,26 @@ var globalLandcoverOpacity = zoom10.linear([
|
|
|
11529
12394
|
[10.75, 0.25],
|
|
11530
12395
|
[11, 0]
|
|
11531
12396
|
]);
|
|
11532
|
-
var detailedLandcoverOpacity =
|
|
12397
|
+
var detailedLandcoverOpacity = zoom13.linear([
|
|
11533
12398
|
[7, 0],
|
|
11534
12399
|
[8, 0.35],
|
|
11535
12400
|
[9, 0.7],
|
|
11536
12401
|
[10, 0.9],
|
|
11537
12402
|
[11, 1]
|
|
11538
12403
|
]);
|
|
11539
|
-
var detailedUrbanGreenOpacity =
|
|
12404
|
+
var detailedUrbanGreenOpacity = zoom13.linear([
|
|
11540
12405
|
[8, 0],
|
|
11541
12406
|
[9, 1]
|
|
11542
12407
|
]);
|
|
11543
|
-
var protectedAreaOpacity =
|
|
12408
|
+
var protectedAreaOpacity = zoom13.linear([
|
|
11544
12409
|
[5, 0],
|
|
11545
12410
|
[6, 1]
|
|
11546
12411
|
]);
|
|
11547
12412
|
function streetsPoiStyle(category) {
|
|
11548
|
-
const filterRank =
|
|
11549
|
-
const sizeRank =
|
|
11550
|
-
const featured =
|
|
11551
|
-
const featuredDetail =
|
|
12413
|
+
const filterRank = expr14.toNumber(expr14.get(field14("poiFilterRank")), 6);
|
|
12414
|
+
const sizeRank = expr14.toNumber(expr14.get(field14("poiSizeRank")), 17);
|
|
12415
|
+
const featured = expr14.all(expr14.lte(filterRank, 0), expr14.lt(sizeRank, 5));
|
|
12416
|
+
const featuredDetail = expr14.all(expr14.lte(filterRank, 1), expr14.lt(sizeRank, 13));
|
|
11552
12417
|
return {
|
|
11553
12418
|
icon: {
|
|
11554
12419
|
image: streetsPoiImage(),
|
|
@@ -11567,12 +12432,12 @@ function streetsPoiStyle(category) {
|
|
|
11567
12432
|
maxWidth: 9,
|
|
11568
12433
|
anchor: "top",
|
|
11569
12434
|
offset: [0, 0.8],
|
|
11570
|
-
padding:
|
|
12435
|
+
padding: zoom13.linear([
|
|
11571
12436
|
[16, 6],
|
|
11572
12437
|
[17, 4]
|
|
11573
12438
|
]),
|
|
11574
|
-
size: category === "transport" ? 13 :
|
|
11575
|
-
[17,
|
|
12439
|
+
size: category === "transport" ? 13 : expr14.step(expr14.zoom(), expr14.case([{ when: featured, value: 18 }], 13), [
|
|
12440
|
+
[17, expr14.case([{ when: featuredDetail, value: 18 }], 13)]
|
|
11576
12441
|
])
|
|
11577
12442
|
}
|
|
11578
12443
|
};
|
|
@@ -11613,7 +12478,7 @@ function cityRoadCasingColorStops(minZoom) {
|
|
|
11613
12478
|
minZoom,
|
|
11614
12479
|
streetsDetailPalette.roadCasing,
|
|
11615
12480
|
mapboxRoadPalette.detailCasing
|
|
11616
|
-
);
|
|
12481
|
+
).map(([level, color]) => [level === 13 ? 14 : level, color]);
|
|
11617
12482
|
}
|
|
11618
12483
|
var roadBorderZoom = 15;
|
|
11619
12484
|
var roadBorderTotalWidth = 1;
|
|
@@ -11663,35 +12528,35 @@ var groundedBuilding3dSelector = {
|
|
|
11663
12528
|
}
|
|
11664
12529
|
]
|
|
11665
12530
|
};
|
|
11666
|
-
var building3dHeight =
|
|
12531
|
+
var building3dHeight = expr14.max(
|
|
11667
12532
|
0,
|
|
11668
|
-
|
|
12533
|
+
expr14.toNumber(expr14.coalesce(expr14.get(field14("renderHeight")), 5), 5)
|
|
11669
12534
|
);
|
|
11670
|
-
var building3dBase =
|
|
12535
|
+
var building3dBase = expr14.max(
|
|
11671
12536
|
0,
|
|
11672
|
-
|
|
11673
|
-
|
|
12537
|
+
expr14.min(
|
|
12538
|
+
expr14.toNumber(expr14.coalesce(expr14.get(field14("renderMinHeight")), 0), 0),
|
|
11674
12539
|
building3dHeight
|
|
11675
12540
|
)
|
|
11676
12541
|
);
|
|
11677
|
-
var roadLineCap =
|
|
12542
|
+
var roadLineCap = zoom13.step([
|
|
11678
12543
|
[3, "butt"],
|
|
11679
12544
|
[14, "round"]
|
|
11680
12545
|
]);
|
|
11681
|
-
var roadLineJoin =
|
|
12546
|
+
var roadLineJoin = zoom13.step([
|
|
11682
12547
|
[3, "miter"],
|
|
11683
12548
|
[14, "round"]
|
|
11684
12549
|
]);
|
|
11685
|
-
var pathLineCap =
|
|
12550
|
+
var pathLineCap = zoom13.step([
|
|
11686
12551
|
[12, "butt"],
|
|
11687
12552
|
[16, "round"]
|
|
11688
12553
|
]);
|
|
11689
|
-
var pathLineJoin =
|
|
12554
|
+
var pathLineJoin = zoom13.step([
|
|
11690
12555
|
[12, "miter"],
|
|
11691
12556
|
[16, "round"]
|
|
11692
12557
|
]);
|
|
11693
|
-
var circularRoadBaseWidth =
|
|
11694
|
-
|
|
12558
|
+
var circularRoadBaseWidth = expr14.match(
|
|
12559
|
+
expr14.coalesce(expr14.get(field14("class")), "minor"),
|
|
11695
12560
|
[
|
|
11696
12561
|
{ labels: "motorway", value: 6 },
|
|
11697
12562
|
{ labels: "trunk", value: 5.5 },
|
|
@@ -11703,15 +12568,15 @@ var circularRoadBaseWidth = expr12.match(
|
|
|
11703
12568
|
],
|
|
11704
12569
|
3
|
|
11705
12570
|
);
|
|
11706
|
-
var circularRoadFallbackWidth =
|
|
12571
|
+
var circularRoadFallbackWidth = expr14.interpolate(
|
|
11707
12572
|
{ kind: "exponential", base: 2 },
|
|
11708
|
-
|
|
12573
|
+
expr14.zoom(),
|
|
11709
12574
|
[
|
|
11710
12575
|
[15, circularRoadBaseWidth],
|
|
11711
12576
|
...Array.from({ length: 9 }, (_, index) => {
|
|
11712
12577
|
const level = 16 + index;
|
|
11713
12578
|
const scale = 1 + (1.35 ** (level - 15) - 1) / (1.35 ** 7 - 1) * 1.2;
|
|
11714
|
-
return [level,
|
|
12579
|
+
return [level, expr14.multiply(circularRoadBaseWidth, scale)];
|
|
11715
12580
|
})
|
|
11716
12581
|
]
|
|
11717
12582
|
);
|
|
@@ -11721,14 +12586,14 @@ var tunnelBorderWidth = 1;
|
|
|
11721
12586
|
function roadWidth(widths2, oneWayScale, rampWidths) {
|
|
11722
12587
|
const augmentedWidths = [...widths2].sort(([left], [right]) => left - right);
|
|
11723
12588
|
const widthOutput = (level, width) => {
|
|
11724
|
-
const ordinaryWidth = oneWayScale === 1 ? width :
|
|
11725
|
-
|
|
12589
|
+
const ordinaryWidth = oneWayScale === 1 ? width : expr14.match(
|
|
12590
|
+
expr14.get(field14("oneway")),
|
|
11726
12591
|
[{ labels: [1, -1], value: width * oneWayScale }],
|
|
11727
12592
|
width
|
|
11728
12593
|
);
|
|
11729
12594
|
const rampWidth = rampWidths ? sampleRoadWidth(rampWidths, level) : void 0;
|
|
11730
|
-
const surfaceWidth = rampWidth === void 0 ? ordinaryWidth :
|
|
11731
|
-
[{ when:
|
|
12595
|
+
const surfaceWidth = rampWidth === void 0 ? ordinaryWidth : expr14.case(
|
|
12596
|
+
[{ when: expr14.eq(expr14.get(field14("ramp")), 1), value: rampWidth }],
|
|
11732
12597
|
ordinaryWidth
|
|
11733
12598
|
);
|
|
11734
12599
|
return surfaceWidth;
|
|
@@ -11738,7 +12603,7 @@ function roadWidth(widths2, oneWayScale, rampWidths) {
|
|
|
11738
12603
|
);
|
|
11739
12604
|
const firstWidthStop = widthStops[0];
|
|
11740
12605
|
if (firstWidthStop === void 0) throw new Error("Road widths require at least one zoom stop.");
|
|
11741
|
-
return
|
|
12606
|
+
return expr14.interpolate({ base: roadWidthInterpolationBase, kind: "exponential" }, expr14.zoom(), [
|
|
11742
12607
|
firstWidthStop,
|
|
11743
12608
|
...widthStops.slice(1)
|
|
11744
12609
|
]);
|
|
@@ -11765,20 +12630,20 @@ function cityRoadWidths(widths2, at12, at14) {
|
|
|
11765
12630
|
];
|
|
11766
12631
|
}
|
|
11767
12632
|
function roadCasingWidth(major) {
|
|
11768
|
-
return
|
|
12633
|
+
return expr14.interpolate({ kind: "exponential", base: 1.5 }, expr14.zoom(), [
|
|
11769
12634
|
[
|
|
11770
12635
|
14,
|
|
11771
|
-
major ?
|
|
12636
|
+
major ? expr14.case([{ when: expr14.eq(expr14.get(field14("ramp")), 1), value: 0.8 }], 1) : 0.8
|
|
11772
12637
|
],
|
|
11773
12638
|
[22, 2]
|
|
11774
12639
|
]);
|
|
11775
12640
|
}
|
|
11776
|
-
var pathCasingStrokeWidth =
|
|
12641
|
+
var pathCasingStrokeWidth = zoom13.exponential(1.5, [
|
|
11777
12642
|
[14, 0.5],
|
|
11778
12643
|
[18, 1],
|
|
11779
12644
|
[22, 2]
|
|
11780
12645
|
]);
|
|
11781
|
-
var pathTunnelCasingWidth =
|
|
12646
|
+
var pathTunnelCasingWidth = zoom13.linear([
|
|
11782
12647
|
[15, 0],
|
|
11783
12648
|
[15.5, tunnelBorderWidth],
|
|
11784
12649
|
[22, tunnelBorderWidth]
|
|
@@ -11788,8 +12653,8 @@ var mapboxPathWidthStops = [
|
|
|
11788
12653
|
[18, 6],
|
|
11789
12654
|
[22, 80]
|
|
11790
12655
|
];
|
|
11791
|
-
var contextualPathLineWidth =
|
|
11792
|
-
var contextualPathColor =
|
|
12656
|
+
var contextualPathLineWidth = zoom13.exponential(1.5, mapboxPathWidthStops);
|
|
12657
|
+
var contextualPathColor = expr14.interpolate({ kind: "linear" }, expr14.zoom(), [
|
|
11793
12658
|
[15, mapboxRoadPalette.pathAtZ15],
|
|
11794
12659
|
[16, mapboxRoadPalette.pathFromZ16]
|
|
11795
12660
|
]);
|
|
@@ -11800,7 +12665,7 @@ function parkPathRefinements() {
|
|
|
11800
12665
|
(roadClass) => ["surface", "bridge"].flatMap((structure) => [
|
|
11801
12666
|
[
|
|
11802
12667
|
`${roadClass}-${structure}-fill`,
|
|
11803
|
-
|
|
12668
|
+
refineRenderTarget6({
|
|
11804
12669
|
renderer: "line",
|
|
11805
12670
|
style: {
|
|
11806
12671
|
color: roadClass === "steps" ? mapboxRoadPalette.pathFromZ16 : contextualPathColor,
|
|
@@ -11813,7 +12678,7 @@ function parkPathRefinements() {
|
|
|
11813
12678
|
],
|
|
11814
12679
|
[
|
|
11815
12680
|
`${roadClass}-${structure}-casing`,
|
|
11816
|
-
|
|
12681
|
+
refineRenderTarget6({
|
|
11817
12682
|
renderer: "line",
|
|
11818
12683
|
style: {
|
|
11819
12684
|
color: mapboxRoadPalette.pathCasing,
|
|
@@ -11869,7 +12734,7 @@ var namedCitySelector = {
|
|
|
11869
12734
|
};
|
|
11870
12735
|
function streetsBoundaryRenderStack() {
|
|
11871
12736
|
return {
|
|
11872
|
-
admin2Background:
|
|
12737
|
+
admin2Background: renderPass13({
|
|
11873
12738
|
placement: { below: "boundaries.admin4" },
|
|
11874
12739
|
feature: "boundary",
|
|
11875
12740
|
renderer: "line",
|
|
@@ -11895,23 +12760,23 @@ function streetsBoundaryRenderStack() {
|
|
|
11895
12760
|
]
|
|
11896
12761
|
},
|
|
11897
12762
|
style: {
|
|
11898
|
-
blur:
|
|
12763
|
+
blur: zoom13.linear([
|
|
11899
12764
|
[3, 0],
|
|
11900
12765
|
[12, 2]
|
|
11901
12766
|
]),
|
|
11902
12767
|
color: streetsVisual.boundary.halo,
|
|
11903
12768
|
minZoom: 1,
|
|
11904
|
-
opacity:
|
|
12769
|
+
opacity: zoom13.linear([
|
|
11905
12770
|
[3, 0],
|
|
11906
12771
|
[4, 0.5]
|
|
11907
12772
|
]),
|
|
11908
|
-
width:
|
|
12773
|
+
width: zoom13.linear([
|
|
11909
12774
|
[3, 4],
|
|
11910
12775
|
[12, 8]
|
|
11911
12776
|
])
|
|
11912
12777
|
}
|
|
11913
12778
|
}),
|
|
11914
|
-
admin4Background:
|
|
12779
|
+
admin4Background: renderPass13({
|
|
11915
12780
|
placement: { below: "boundaries.admin4" },
|
|
11916
12781
|
feature: "boundary",
|
|
11917
12782
|
renderer: "line",
|
|
@@ -11937,17 +12802,17 @@ function streetsBoundaryRenderStack() {
|
|
|
11937
12802
|
]
|
|
11938
12803
|
},
|
|
11939
12804
|
style: {
|
|
11940
|
-
blur:
|
|
12805
|
+
blur: zoom13.linear([
|
|
11941
12806
|
[3, 0],
|
|
11942
12807
|
[12, 1]
|
|
11943
12808
|
]),
|
|
11944
12809
|
color: streetsVisual.boundary.halo,
|
|
11945
12810
|
minZoom: 2,
|
|
11946
|
-
opacity:
|
|
12811
|
+
opacity: zoom13.linear([
|
|
11947
12812
|
[2, 0],
|
|
11948
12813
|
[4, 0.42]
|
|
11949
12814
|
]),
|
|
11950
|
-
width:
|
|
12815
|
+
width: zoom13.linear([
|
|
11951
12816
|
[3, 2.4],
|
|
11952
12817
|
[6, 3.1],
|
|
11953
12818
|
[12, 4.2]
|
|
@@ -11958,7 +12823,7 @@ function streetsBoundaryRenderStack() {
|
|
|
11958
12823
|
// module deliberately exposes only the stable admin-2/admin-4 pair.
|
|
11959
12824
|
// Standard uses the next tier as a restrained dotted municipal cue from
|
|
11960
12825
|
// metro zooms onward, so Streets adds it as an explicit semantic pass.
|
|
11961
|
-
admin6:
|
|
12826
|
+
admin6: renderPass13({
|
|
11962
12827
|
placement: { above: "boundaries.admin4" },
|
|
11963
12828
|
feature: "boundary",
|
|
11964
12829
|
renderer: "line",
|
|
@@ -11987,12 +12852,12 @@ function streetsBoundaryRenderStack() {
|
|
|
11987
12852
|
color: streetsVisual.boundary.regional,
|
|
11988
12853
|
dash: [1, 1.5],
|
|
11989
12854
|
minZoom: 8,
|
|
11990
|
-
opacity:
|
|
12855
|
+
opacity: zoom13.linear([
|
|
11991
12856
|
[8, 0],
|
|
11992
12857
|
[9, 0.5],
|
|
11993
12858
|
[12, 0.68]
|
|
11994
12859
|
]),
|
|
11995
|
-
width:
|
|
12860
|
+
width: zoom13.linear([
|
|
11996
12861
|
[8, 0.45],
|
|
11997
12862
|
[10, 0.7],
|
|
11998
12863
|
[12, 0.95]
|
|
@@ -12005,7 +12870,7 @@ function streetsLandRenderStack() {
|
|
|
12005
12870
|
return {
|
|
12006
12871
|
// Core orders general cover, parks, lawn detail and mapped built surfaces.
|
|
12007
12872
|
// Streets adds only its own business-corridor treatment.
|
|
12008
|
-
businessArea:
|
|
12873
|
+
businessArea: renderPass13({
|
|
12009
12874
|
placement: { above: "land.landuse.residential.fill" },
|
|
12010
12875
|
feature: "landuse",
|
|
12011
12876
|
renderer: "fill",
|
|
@@ -12018,7 +12883,7 @@ function streetsLandRenderStack() {
|
|
|
12018
12883
|
})
|
|
12019
12884
|
};
|
|
12020
12885
|
}
|
|
12021
|
-
var hedgeWidth =
|
|
12886
|
+
var hedgeWidth = zoom13.linear([
|
|
12022
12887
|
[15, 0.6],
|
|
12023
12888
|
[16, 1],
|
|
12024
12889
|
[18, 2],
|
|
@@ -12029,7 +12894,7 @@ var streetsBarriers = {
|
|
|
12029
12894
|
line: {
|
|
12030
12895
|
color: streetsVisual.barrier.fence,
|
|
12031
12896
|
minZoom: 16,
|
|
12032
|
-
width:
|
|
12897
|
+
width: zoom13.linear([
|
|
12033
12898
|
[16, 1],
|
|
12034
12899
|
[20, 3]
|
|
12035
12900
|
])
|
|
@@ -12039,7 +12904,7 @@ var streetsBarriers = {
|
|
|
12039
12904
|
line: {
|
|
12040
12905
|
color: streetsVisual.barrier.wall,
|
|
12041
12906
|
minZoom: 16,
|
|
12042
|
-
width:
|
|
12907
|
+
width: zoom13.linear([
|
|
12043
12908
|
[16, 1],
|
|
12044
12909
|
[20, 3.5]
|
|
12045
12910
|
])
|
|
@@ -12052,7 +12917,7 @@ var streetsBarriers = {
|
|
|
12052
12917
|
color: streetsVisual.barrier.hedgeShade,
|
|
12053
12918
|
join: "round",
|
|
12054
12919
|
minZoom: 17,
|
|
12055
|
-
opacity:
|
|
12920
|
+
opacity: zoom13.linear([
|
|
12056
12921
|
[17, 0],
|
|
12057
12922
|
[18, 0.7]
|
|
12058
12923
|
]),
|
|
@@ -12073,7 +12938,7 @@ function streetsBuildingRenderStack() {
|
|
|
12073
12938
|
// Keep just enough ambient separation for dense footprint clusters. The
|
|
12074
12939
|
// fill and its close-colour outline carry the 2D building hierarchy; a
|
|
12075
12940
|
// dark shadow at z15 would turn every footprint into a heavy sticker.
|
|
12076
|
-
flatShadow:
|
|
12941
|
+
flatShadow: renderPass13({
|
|
12077
12942
|
placement: { below: "buildings.flat.fill" },
|
|
12078
12943
|
feature: "building",
|
|
12079
12944
|
renderer: "line",
|
|
@@ -12081,7 +12946,7 @@ function streetsBuildingRenderStack() {
|
|
|
12081
12946
|
blur: 2,
|
|
12082
12947
|
color: buildingShadowColor,
|
|
12083
12948
|
minZoom: 15.5,
|
|
12084
|
-
opacity:
|
|
12949
|
+
opacity: zoom13.linear([
|
|
12085
12950
|
[15.5, 0],
|
|
12086
12951
|
[16, 0.03],
|
|
12087
12952
|
[18, 0.08],
|
|
@@ -12089,7 +12954,7 @@ function streetsBuildingRenderStack() {
|
|
|
12089
12954
|
]),
|
|
12090
12955
|
translate: [0.5, 0.75],
|
|
12091
12956
|
translateAnchor: "viewport",
|
|
12092
|
-
width:
|
|
12957
|
+
width: zoom13.linear([
|
|
12093
12958
|
[15.5, 0.5],
|
|
12094
12959
|
[16, 1],
|
|
12095
12960
|
[18, 3],
|
|
@@ -12097,7 +12962,7 @@ function streetsBuildingRenderStack() {
|
|
|
12097
12962
|
])
|
|
12098
12963
|
}
|
|
12099
12964
|
}),
|
|
12100
|
-
shadowSoft:
|
|
12965
|
+
shadowSoft: renderPass13({
|
|
12101
12966
|
placement: { below: "buildings.flat.fill" },
|
|
12102
12967
|
feature: "building",
|
|
12103
12968
|
renderer: "line",
|
|
@@ -12105,7 +12970,7 @@ function streetsBuildingRenderStack() {
|
|
|
12105
12970
|
style: {
|
|
12106
12971
|
// A diffuse contact band, not a displaced footprint. It stays attached
|
|
12107
12972
|
// to the walls when the camera rotates and fades in at street detail.
|
|
12108
|
-
blur:
|
|
12973
|
+
blur: zoom13.linear([
|
|
12109
12974
|
[15.5, 2],
|
|
12110
12975
|
[18, 6],
|
|
12111
12976
|
[20, 10]
|
|
@@ -12114,14 +12979,14 @@ function streetsBuildingRenderStack() {
|
|
|
12114
12979
|
color: streetsVisual.building.contactShadow,
|
|
12115
12980
|
join: "round",
|
|
12116
12981
|
minZoom: 15.5,
|
|
12117
|
-
opacity:
|
|
12982
|
+
opacity: zoom13.linear([
|
|
12118
12983
|
[15.5, 0],
|
|
12119
12984
|
[16.5, 0.12],
|
|
12120
12985
|
[18, 0.22],
|
|
12121
12986
|
[20, 0.24]
|
|
12122
12987
|
]),
|
|
12123
12988
|
visibilityGroup: "building",
|
|
12124
|
-
width:
|
|
12989
|
+
width: zoom13.linear([
|
|
12125
12990
|
[15.5, 1],
|
|
12126
12991
|
[16.5, 4],
|
|
12127
12992
|
[18, 10],
|
|
@@ -12129,13 +12994,13 @@ function streetsBuildingRenderStack() {
|
|
|
12129
12994
|
])
|
|
12130
12995
|
}
|
|
12131
12996
|
}),
|
|
12132
|
-
shadowCore:
|
|
12997
|
+
shadowCore: renderPass13({
|
|
12133
12998
|
placement: { below: "buildings.flat.fill" },
|
|
12134
12999
|
feature: "building",
|
|
12135
13000
|
renderer: "line",
|
|
12136
13001
|
selector: groundedBuilding3dSelector,
|
|
12137
13002
|
style: {
|
|
12138
|
-
blur:
|
|
13003
|
+
blur: zoom13.linear([
|
|
12139
13004
|
[15.5, 0.5],
|
|
12140
13005
|
[18, 1.5],
|
|
12141
13006
|
[20, 2.5]
|
|
@@ -12144,14 +13009,14 @@ function streetsBuildingRenderStack() {
|
|
|
12144
13009
|
color: streetsVisual.building.contactShadow,
|
|
12145
13010
|
join: "round",
|
|
12146
13011
|
minZoom: 15.5,
|
|
12147
|
-
opacity:
|
|
13012
|
+
opacity: zoom13.linear([
|
|
12148
13013
|
[15.5, 0],
|
|
12149
13014
|
[16.5, 0.08],
|
|
12150
13015
|
[18, 0.16],
|
|
12151
13016
|
[20, 0.18]
|
|
12152
13017
|
]),
|
|
12153
13018
|
visibilityGroup: "building",
|
|
12154
|
-
width:
|
|
13019
|
+
width: zoom13.linear([
|
|
12155
13020
|
[15.5, 0.5],
|
|
12156
13021
|
[16.5, 1],
|
|
12157
13022
|
[18, 2.5],
|
|
@@ -12159,7 +13024,7 @@ function streetsBuildingRenderStack() {
|
|
|
12159
13024
|
])
|
|
12160
13025
|
}
|
|
12161
13026
|
}),
|
|
12162
|
-
extrusion:
|
|
13027
|
+
extrusion: renderPass13({
|
|
12163
13028
|
// Keep raised geometry after the ground names, which already cover flat footprints.
|
|
12164
13029
|
placement: "above-buildings",
|
|
12165
13030
|
feature: "building",
|
|
@@ -12179,7 +13044,7 @@ function streetsBuildingRenderStack() {
|
|
|
12179
13044
|
}
|
|
12180
13045
|
function streetsLabelRenderStack() {
|
|
12181
13046
|
return {
|
|
12182
|
-
ferry:
|
|
13047
|
+
ferry: renderPass13({
|
|
12183
13048
|
feature: "roadName",
|
|
12184
13049
|
placement: "below-labels",
|
|
12185
13050
|
renderer: "symbol",
|
|
@@ -12202,7 +13067,7 @@ function streetsLabelRenderStack() {
|
|
|
12202
13067
|
placement: "line",
|
|
12203
13068
|
spacing: 250,
|
|
12204
13069
|
text: {
|
|
12205
|
-
field:
|
|
13070
|
+
field: expr14.get(field14("name")),
|
|
12206
13071
|
font: streetsVisual.font.default,
|
|
12207
13072
|
color: streetsVisual.label.ferry,
|
|
12208
13073
|
haloColor: streetsVisual.label.ferryHalo,
|
|
@@ -12213,7 +13078,7 @@ function streetsLabelRenderStack() {
|
|
|
12213
13078
|
padding: 1,
|
|
12214
13079
|
pitchAlignment: "viewport",
|
|
12215
13080
|
rotationAlignment: "map",
|
|
12216
|
-
size:
|
|
13081
|
+
size: zoom13.linear([
|
|
12217
13082
|
[10, 6.5],
|
|
12218
13083
|
[18, 13]
|
|
12219
13084
|
]),
|
|
@@ -12221,7 +13086,7 @@ function streetsLabelRenderStack() {
|
|
|
12221
13086
|
}
|
|
12222
13087
|
}
|
|
12223
13088
|
}),
|
|
12224
|
-
settlementMarker:
|
|
13089
|
+
settlementMarker: renderPass13({
|
|
12225
13090
|
placement: { below: "labels.places.city" },
|
|
12226
13091
|
feature: "place",
|
|
12227
13092
|
renderer: "circle",
|
|
@@ -12230,7 +13095,7 @@ function streetsLabelRenderStack() {
|
|
|
12230
13095
|
color: streetsVisual.label.settlement,
|
|
12231
13096
|
maxZoom: 8,
|
|
12232
13097
|
minZoom: 2,
|
|
12233
|
-
radius:
|
|
13098
|
+
radius: expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 3, [
|
|
12234
13099
|
[3, 2.5],
|
|
12235
13100
|
[7, 2]
|
|
12236
13101
|
]),
|
|
@@ -12238,7 +13103,7 @@ function streetsLabelRenderStack() {
|
|
|
12238
13103
|
strokeWidth: 0.8
|
|
12239
13104
|
}
|
|
12240
13105
|
}),
|
|
12241
|
-
country:
|
|
13106
|
+
country: refineRenderTarget6({
|
|
12242
13107
|
renderer: "symbol",
|
|
12243
13108
|
selector: {
|
|
12244
13109
|
kind: "all",
|
|
@@ -12258,7 +13123,7 @@ function streetsLabelRenderStack() {
|
|
|
12258
13123
|
style: {},
|
|
12259
13124
|
target: "labels.places.country"
|
|
12260
13125
|
}),
|
|
12261
|
-
state:
|
|
13126
|
+
state: refineRenderTarget6({
|
|
12262
13127
|
renderer: "symbol",
|
|
12263
13128
|
selector: {
|
|
12264
13129
|
kind: "all",
|
|
@@ -12282,13 +13147,13 @@ function streetsLabelRenderStack() {
|
|
|
12282
13147
|
style: {},
|
|
12283
13148
|
target: "labels.places.state"
|
|
12284
13149
|
}),
|
|
12285
|
-
city:
|
|
13150
|
+
city: refineRenderTarget6({
|
|
12286
13151
|
renderer: "symbol",
|
|
12287
13152
|
selector: namedCitySelector,
|
|
12288
13153
|
style: {},
|
|
12289
13154
|
target: "labels.places.city"
|
|
12290
13155
|
}),
|
|
12291
|
-
town:
|
|
13156
|
+
town: refineRenderTarget6({
|
|
12292
13157
|
renderer: "symbol",
|
|
12293
13158
|
selector: {
|
|
12294
13159
|
kind: "all",
|
|
@@ -12309,7 +13174,7 @@ function streetsLabelRenderStack() {
|
|
|
12309
13174
|
style: {},
|
|
12310
13175
|
target: "labels.places.town"
|
|
12311
13176
|
}),
|
|
12312
|
-
village:
|
|
13177
|
+
village: refineRenderTarget6({
|
|
12313
13178
|
renderer: "symbol",
|
|
12314
13179
|
selector: {
|
|
12315
13180
|
kind: "all",
|
|
@@ -12331,7 +13196,7 @@ function streetsLabelRenderStack() {
|
|
|
12331
13196
|
style: {},
|
|
12332
13197
|
target: "labels.places.village"
|
|
12333
13198
|
}),
|
|
12334
|
-
neighborhood:
|
|
13199
|
+
neighborhood: refineRenderTarget6({
|
|
12335
13200
|
renderer: "symbol",
|
|
12336
13201
|
selector: {
|
|
12337
13202
|
kind: "all",
|
|
@@ -12370,14 +13235,14 @@ function cityRoadSurfaceColor(roadClass) {
|
|
|
12370
13235
|
const outputs = stops.map(
|
|
12371
13236
|
([level, color]) => [
|
|
12372
13237
|
level,
|
|
12373
|
-
|
|
13238
|
+
expr14.case(
|
|
12374
13239
|
[
|
|
12375
13240
|
{
|
|
12376
|
-
when:
|
|
13241
|
+
when: expr14.eq(expr14.get(field14("class")), `${roadClass}_construction`),
|
|
12377
13242
|
value: roadSurfaceColor
|
|
12378
13243
|
},
|
|
12379
13244
|
{
|
|
12380
|
-
when:
|
|
13245
|
+
when: expr14.eq(expr14.get(field14("surface")), "unpaved"),
|
|
12381
13246
|
value: level >= 12 && level < 15 ? streetsCityRoadPalette[roadClass] : roadSurfaceColor
|
|
12382
13247
|
}
|
|
12383
13248
|
],
|
|
@@ -12385,7 +13250,7 @@ function cityRoadSurfaceColor(roadClass) {
|
|
|
12385
13250
|
)
|
|
12386
13251
|
]
|
|
12387
13252
|
);
|
|
12388
|
-
return
|
|
13253
|
+
return expr14.interpolate({ kind: "linear" }, expr14.zoom(), [
|
|
12389
13254
|
outputs[0],
|
|
12390
13255
|
...outputs.slice(1)
|
|
12391
13256
|
]);
|
|
@@ -12395,7 +13260,7 @@ function streetsRoadEligibility() {
|
|
|
12395
13260
|
["motorway", "trunk", "primary", "secondary", "tertiary"].flatMap(
|
|
12396
13261
|
(roadClass) => ["fill", "rampFill"].map((phase) => [
|
|
12397
13262
|
`${roadClass}-surface-${phase}-eligibility`,
|
|
12398
|
-
|
|
13263
|
+
refineRenderTarget6({
|
|
12399
13264
|
renderer: "line",
|
|
12400
13265
|
selector: {
|
|
12401
13266
|
kind: "all",
|
|
@@ -12444,7 +13309,7 @@ function streetsRoadEligibility() {
|
|
|
12444
13309
|
}
|
|
12445
13310
|
function streetsRoadRenderStack() {
|
|
12446
13311
|
return {
|
|
12447
|
-
pedestrianGround:
|
|
13312
|
+
pedestrianGround: refineRenderTarget6({
|
|
12448
13313
|
// Walkable ground covers commercial zoning, while explicit grass, gardens
|
|
12449
13314
|
// and parks remain above broad pedestrian complexes. Share the canonical
|
|
12450
13315
|
// anchor with the earlier business-area pass; replacement land modules do
|
|
@@ -12455,17 +13320,17 @@ function streetsRoadRenderStack() {
|
|
|
12455
13320
|
}),
|
|
12456
13321
|
...parkPathRefinements(),
|
|
12457
13322
|
...streetsRoadEligibility(),
|
|
12458
|
-
minorSurfaceColor:
|
|
13323
|
+
minorSurfaceColor: refineRenderTarget6({
|
|
12459
13324
|
renderer: "line",
|
|
12460
13325
|
style: { color: cityRoadSurfaceColor("minor") },
|
|
12461
13326
|
target: "roads.classes.minor.surface.fill"
|
|
12462
13327
|
}),
|
|
12463
|
-
minorLinkColor:
|
|
13328
|
+
minorLinkColor: refineRenderTarget6({
|
|
12464
13329
|
renderer: "line",
|
|
12465
13330
|
style: { color: cityRoadSurfaceColor("minor") },
|
|
12466
13331
|
target: "roads.classes.minor.surface.rampFill"
|
|
12467
13332
|
}),
|
|
12468
|
-
oneWayMarkers:
|
|
13333
|
+
oneWayMarkers: refineRenderTarget6({
|
|
12469
13334
|
renderer: "symbol",
|
|
12470
13335
|
style: {
|
|
12471
13336
|
icon: {
|
|
@@ -12473,19 +13338,19 @@ function streetsRoadRenderStack() {
|
|
|
12473
13338
|
ignorePlacement: true,
|
|
12474
13339
|
image: streetsVisual.image.oneway,
|
|
12475
13340
|
keepUpright: false,
|
|
12476
|
-
opacity:
|
|
13341
|
+
opacity: expr14.interpolate({ kind: "linear" }, expr14.zoom(), [
|
|
12477
13342
|
[16.5, 0],
|
|
12478
13343
|
[17, 0.92],
|
|
12479
13344
|
[17.5, 1]
|
|
12480
13345
|
]),
|
|
12481
13346
|
padding: 0,
|
|
12482
13347
|
pitchAlignment: "map",
|
|
12483
|
-
rotate:
|
|
12484
|
-
[{ when:
|
|
13348
|
+
rotate: expr14.case(
|
|
13349
|
+
[{ when: expr14.eq(expr14.get(field14("oneway")), -1), value: 180 }],
|
|
12485
13350
|
0
|
|
12486
13351
|
),
|
|
12487
13352
|
rotationAlignment: "map",
|
|
12488
|
-
size:
|
|
13353
|
+
size: expr14.interpolate({ kind: "linear" }, expr14.zoom(), [
|
|
12489
13354
|
[15, 0.38],
|
|
12490
13355
|
[17, 0.55],
|
|
12491
13356
|
[19, 0.7],
|
|
@@ -12493,7 +13358,7 @@ function streetsRoadRenderStack() {
|
|
|
12493
13358
|
])
|
|
12494
13359
|
},
|
|
12495
13360
|
minZoom: 16.5,
|
|
12496
|
-
spacing:
|
|
13361
|
+
spacing: expr14.interpolate({ kind: "linear" }, expr14.zoom(), [
|
|
12497
13362
|
[15, 95],
|
|
12498
13363
|
[17, 115],
|
|
12499
13364
|
[19, 150],
|
|
@@ -12501,8 +13366,8 @@ function streetsRoadRenderStack() {
|
|
|
12501
13366
|
]),
|
|
12502
13367
|
text: {
|
|
12503
13368
|
allowOverlap: true,
|
|
12504
|
-
field:
|
|
12505
|
-
[{ when:
|
|
13369
|
+
field: expr14.case(
|
|
13370
|
+
[{ when: expr14.eq(expr14.get(field14("oneway")), -1), value: "\u2190" }],
|
|
12506
13371
|
"\u2192"
|
|
12507
13372
|
),
|
|
12508
13373
|
ignorePlacement: true,
|
|
@@ -12511,7 +13376,7 @@ function streetsRoadRenderStack() {
|
|
|
12511
13376
|
padding: 0,
|
|
12512
13377
|
pitchAlignment: "map",
|
|
12513
13378
|
rotationAlignment: "map",
|
|
12514
|
-
size:
|
|
13379
|
+
size: expr14.interpolate({ kind: "linear" }, expr14.zoom(), [
|
|
12515
13380
|
[15, 11],
|
|
12516
13381
|
[17, 17],
|
|
12517
13382
|
[19, 20],
|
|
@@ -12556,12 +13421,12 @@ function cityRoadStyle(color, widths2, options = {}) {
|
|
|
12556
13421
|
tunnelVisible = true
|
|
12557
13422
|
} = options;
|
|
12558
13423
|
const zoomRange = minZoom === void 0 ? {} : { minZoom };
|
|
12559
|
-
const opacity =
|
|
13424
|
+
const opacity = zoom13.linear([
|
|
12560
13425
|
[3, 0],
|
|
12561
13426
|
[3.5, 1]
|
|
12562
13427
|
]);
|
|
12563
|
-
const surfaceColor = colorStops ?
|
|
12564
|
-
const resolvedCasingColor =
|
|
13428
|
+
const surfaceColor = colorStops ? zoom13.linear(colorStops) : color;
|
|
13429
|
+
const resolvedCasingColor = zoom13.linear(roadCasingColorStops(casingColorStops));
|
|
12565
13430
|
const fill = {
|
|
12566
13431
|
...zoomRange,
|
|
12567
13432
|
cap: roadLineCap,
|
|
@@ -12587,8 +13452,6 @@ function cityRoadStyle(color, widths2, options = {}) {
|
|
|
12587
13452
|
surface: { casing, fill },
|
|
12588
13453
|
bridge: {
|
|
12589
13454
|
casing: { ...casing, cap: "butt", join: "miter", width: roadCasingWidth((minZoom ?? 0) < 12) },
|
|
12590
|
-
// Local structures join their streets at z12; major structures take over
|
|
12591
|
-
// the continuous overview strokes at z13.
|
|
12592
13455
|
fill: {
|
|
12593
13456
|
...fill,
|
|
12594
13457
|
cap: "round",
|
|
@@ -12603,7 +13466,7 @@ function cityRoadStyle(color, widths2, options = {}) {
|
|
|
12603
13466
|
join: "miter",
|
|
12604
13467
|
minZoom: minZoom === 3 ? 13 : (minZoom ?? 0) < 12 ? 14 : minZoom === 12 ? 15 : 16,
|
|
12605
13468
|
// Standard's HD setting unifies carriageway borders at z15, including tunnels.
|
|
12606
|
-
color:
|
|
13469
|
+
color: expr14.step(expr14.zoom(), tunnelCasingColor, [
|
|
12607
13470
|
[15, mapboxRoadPalette.detailCasing]
|
|
12608
13471
|
]),
|
|
12609
13472
|
dash: tunnelBorderDash,
|
|
@@ -12617,7 +13480,7 @@ function cityRoadStyle(color, widths2, options = {}) {
|
|
|
12617
13480
|
join: "miter",
|
|
12618
13481
|
minZoom: Math.max(minZoom ?? 0, minZoom === 12 ? 12 : 13),
|
|
12619
13482
|
color: tunnelColor,
|
|
12620
|
-
opacity:
|
|
13483
|
+
opacity: zoom13.linear([
|
|
12621
13484
|
[3, 0],
|
|
12622
13485
|
[3.5, 0.8]
|
|
12623
13486
|
])
|
|
@@ -12635,7 +13498,7 @@ function cityRoadStyle(color, widths2, options = {}) {
|
|
|
12635
13498
|
}
|
|
12636
13499
|
function pathRoadStyle(color, widths2, options = {}) {
|
|
12637
13500
|
const zoomRange = options.minZoom === void 0 ? {} : { minZoom: options.minZoom };
|
|
12638
|
-
const surfaceColor = options.colorStops ?
|
|
13501
|
+
const surfaceColor = options.colorStops ? zoom13.linear(options.colorStops) : color;
|
|
12639
13502
|
const cap = options.steps ? "butt" : pathLineCap;
|
|
12640
13503
|
const tunnelCap = "butt";
|
|
12641
13504
|
const join = options.steps ? "round" : pathLineJoin;
|
|
@@ -12696,8 +13559,8 @@ function roadLabelStyle(kind, minZoom) {
|
|
|
12696
13559
|
minZoom,
|
|
12697
13560
|
// Resolve dense parallel streets by road hierarchy, not incidental tile order.
|
|
12698
13561
|
// All classes share this expression so the compiler retains one collision network.
|
|
12699
|
-
priority:
|
|
12700
|
-
|
|
13562
|
+
priority: expr14.match(
|
|
13563
|
+
expr14.coalesce(expr14.get(field14("class")), "minor"),
|
|
12701
13564
|
[
|
|
12702
13565
|
{ labels: ["motorway", "motorway_construction"], value: 6 },
|
|
12703
13566
|
{ labels: ["trunk", "trunk_construction"], value: 5 },
|
|
@@ -12710,7 +13573,7 @@ function roadLabelStyle(kind, minZoom) {
|
|
|
12710
13573
|
),
|
|
12711
13574
|
// World name geometry is split into more short segments at street detail.
|
|
12712
13575
|
// Increase repeat distance gently without thinning the overview network.
|
|
12713
|
-
spacing:
|
|
13576
|
+
spacing: zoom13.linear([
|
|
12714
13577
|
[13, 250],
|
|
12715
13578
|
[15, 300],
|
|
12716
13579
|
[17, 400],
|
|
@@ -12726,14 +13589,14 @@ function roadLabelStyle(kind, minZoom) {
|
|
|
12726
13589
|
maxAngle: 30,
|
|
12727
13590
|
// Screen-space breathing room at city overview. Restore normal padding by z14
|
|
12728
13591
|
// so the same policy does not suppress useful names on the neighbourhood view.
|
|
12729
|
-
padding:
|
|
13592
|
+
padding: zoom13.linear([
|
|
12730
13593
|
[13, 5],
|
|
12731
13594
|
[14, 1]
|
|
12732
13595
|
]),
|
|
12733
13596
|
// Follow the road's bearing while retaining readable glyph height in perspective.
|
|
12734
13597
|
pitchAlignment: "viewport",
|
|
12735
13598
|
rotationAlignment: "map",
|
|
12736
|
-
size:
|
|
13599
|
+
size: zoom13.linear([
|
|
12737
13600
|
[10, startSize],
|
|
12738
13601
|
[18, endSize]
|
|
12739
13602
|
]),
|
|
@@ -12741,8 +13604,8 @@ function roadLabelStyle(kind, minZoom) {
|
|
|
12741
13604
|
}
|
|
12742
13605
|
};
|
|
12743
13606
|
}
|
|
12744
|
-
var
|
|
12745
|
-
|
|
13607
|
+
var streetsBase = bindOfficialMapTheme(
|
|
13608
|
+
defineMap8({
|
|
12746
13609
|
id: "streets",
|
|
12747
13610
|
version: 1,
|
|
12748
13611
|
name: "Streets",
|
|
@@ -12762,12 +13625,13 @@ var streets = bindOfficialMapTheme(
|
|
|
12762
13625
|
systemThemes: { light: "light", dark: "dark" },
|
|
12763
13626
|
projection: "globe",
|
|
12764
13627
|
// 'globe' | 'mercator'. Globe becomes planar at street zooms.
|
|
13628
|
+
camera: { adaptivePerspective: true, pitchLimit: { maxZoom: 15, maxPitch: 38 } },
|
|
12765
13629
|
// Each theme paints the sky seen when the camera tilts up the street; night shows stars.
|
|
12766
13630
|
sky: {
|
|
12767
|
-
color:
|
|
12768
|
-
horizonColor:
|
|
12769
|
-
horizonBlend:
|
|
12770
|
-
glowColor:
|
|
13631
|
+
color: token13.color("sky.color"),
|
|
13632
|
+
horizonColor: token13.color("sky.horizon"),
|
|
13633
|
+
horizonBlend: token13.number("sky.horizonBlend"),
|
|
13634
|
+
glowColor: token13.color("sky.glow"),
|
|
12771
13635
|
starIntensity: 0.6
|
|
12772
13636
|
},
|
|
12773
13637
|
data: {
|
|
@@ -12813,14 +13677,14 @@ var streets = bindOfficialMapTheme(
|
|
|
12813
13677
|
haloWidth: 1,
|
|
12814
13678
|
maxWidth: 10,
|
|
12815
13679
|
padding: 20,
|
|
12816
|
-
size:
|
|
13680
|
+
size: zoom13.linear([
|
|
12817
13681
|
[18, 11],
|
|
12818
13682
|
[20, 13]
|
|
12819
13683
|
])
|
|
12820
13684
|
}
|
|
12821
13685
|
}
|
|
12822
13686
|
}),
|
|
12823
|
-
land:
|
|
13687
|
+
land: withRenderStack11(
|
|
12824
13688
|
land7({
|
|
12825
13689
|
barriers: streetsBarriers,
|
|
12826
13690
|
background: {
|
|
@@ -12828,8 +13692,8 @@ var streets = bindOfficialMapTheme(
|
|
|
12828
13692
|
opacity: 1
|
|
12829
13693
|
},
|
|
12830
13694
|
globalLandcover: {
|
|
12831
|
-
color:
|
|
12832
|
-
|
|
13695
|
+
color: expr14.match(
|
|
13696
|
+
expr14.get(field14("class")),
|
|
12833
13697
|
[
|
|
12834
13698
|
{ labels: "barren", value: streetsGlobalLandcoverPalette.barren },
|
|
12835
13699
|
{ labels: "crop", value: streetsGlobalLandcoverPalette.crop },
|
|
@@ -12995,9 +13859,9 @@ var streets = bindOfficialMapTheme(
|
|
|
12995
13859
|
water: water7({
|
|
12996
13860
|
bathymetry: {
|
|
12997
13861
|
antialias: false,
|
|
12998
|
-
color:
|
|
13862
|
+
color: expr14.interpolate(
|
|
12999
13863
|
{ kind: "linear" },
|
|
13000
|
-
|
|
13864
|
+
expr14.multiply(-1, expr14.toNumber(expr14.get(field14("bathymetryMinDepth")), 0)),
|
|
13001
13865
|
[
|
|
13002
13866
|
[0, streetsSurfacePalette.waterDepth0],
|
|
13003
13867
|
[200, streetsSurfacePalette.waterDepth200],
|
|
@@ -13007,7 +13871,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13007
13871
|
),
|
|
13008
13872
|
maxZoom: 8,
|
|
13009
13873
|
minZoom: 0,
|
|
13010
|
-
opacity:
|
|
13874
|
+
opacity: zoom13.linear([
|
|
13011
13875
|
[0, 1],
|
|
13012
13876
|
[6, 1],
|
|
13013
13877
|
[8, 0]
|
|
@@ -13037,7 +13901,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13037
13901
|
join: "round",
|
|
13038
13902
|
minZoom: 8,
|
|
13039
13903
|
opacity: 0.96,
|
|
13040
|
-
width:
|
|
13904
|
+
width: zoom13.linear([
|
|
13041
13905
|
[8, 0.35],
|
|
13042
13906
|
[13, 1.05],
|
|
13043
13907
|
[16, 2.2]
|
|
@@ -13049,7 +13913,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13049
13913
|
join: "round",
|
|
13050
13914
|
minZoom: 12,
|
|
13051
13915
|
opacity: 0.92,
|
|
13052
|
-
width:
|
|
13916
|
+
width: zoom13.linear([
|
|
13053
13917
|
[12, 0.35],
|
|
13054
13918
|
[14, 0.8],
|
|
13055
13919
|
[16, 1.4]
|
|
@@ -13061,7 +13925,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13061
13925
|
join: "round",
|
|
13062
13926
|
minZoom: 6,
|
|
13063
13927
|
opacity: 0.96,
|
|
13064
|
-
width:
|
|
13928
|
+
width: zoom13.linear([
|
|
13065
13929
|
[6, 0.45],
|
|
13066
13930
|
[13, 1.25],
|
|
13067
13931
|
[16, 3.2]
|
|
@@ -13073,7 +13937,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13073
13937
|
join: "round",
|
|
13074
13938
|
minZoom: 10,
|
|
13075
13939
|
opacity: 0.94,
|
|
13076
|
-
width:
|
|
13940
|
+
width: zoom13.linear([
|
|
13077
13941
|
[10, 0.3],
|
|
13078
13942
|
[12, 0.55],
|
|
13079
13943
|
[13, 0.9],
|
|
@@ -13084,7 +13948,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13084
13948
|
}
|
|
13085
13949
|
}),
|
|
13086
13950
|
vegetation: streetsTrees,
|
|
13087
|
-
boundaries:
|
|
13951
|
+
boundaries: withRenderStack11(
|
|
13088
13952
|
boundaries7({
|
|
13089
13953
|
// Mapbox Standard's admin-0/admin-1 layers map to OpenMapTiles
|
|
13090
13954
|
// admin_level 2/4 respectively.
|
|
@@ -13093,7 +13957,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13093
13957
|
dash: [10, 0],
|
|
13094
13958
|
minZoom: 1,
|
|
13095
13959
|
opacity: 1,
|
|
13096
|
-
width:
|
|
13960
|
+
width: zoom13.linear([
|
|
13097
13961
|
[3, 0.8],
|
|
13098
13962
|
[6, 1.35],
|
|
13099
13963
|
[12, 2.1]
|
|
@@ -13103,11 +13967,11 @@ var streets = bindOfficialMapTheme(
|
|
|
13103
13967
|
color: streetsOverviewPalette.admin1,
|
|
13104
13968
|
dash: [3, 2],
|
|
13105
13969
|
minZoom: 2,
|
|
13106
|
-
opacity:
|
|
13970
|
+
opacity: zoom13.linear([
|
|
13107
13971
|
[2, 0],
|
|
13108
13972
|
[3, 1]
|
|
13109
13973
|
]),
|
|
13110
|
-
width:
|
|
13974
|
+
width: zoom13.linear([
|
|
13111
13975
|
[3, 0.7],
|
|
13112
13976
|
[6, 1.2],
|
|
13113
13977
|
[12, 1.8]
|
|
@@ -13115,12 +13979,12 @@ var streets = bindOfficialMapTheme(
|
|
|
13115
13979
|
},
|
|
13116
13980
|
disputed: {
|
|
13117
13981
|
color: streetsOverviewPalette.admin0,
|
|
13118
|
-
dash:
|
|
13119
|
-
[7,
|
|
13982
|
+
dash: expr14.step(expr14.zoom(), expr14.literal([3, 2, 5]), [
|
|
13983
|
+
[7, expr14.literal([2, 1.5])]
|
|
13120
13984
|
]),
|
|
13121
13985
|
minZoom: 1,
|
|
13122
13986
|
opacity: 1,
|
|
13123
|
-
width:
|
|
13987
|
+
width: zoom13.linear([
|
|
13124
13988
|
[3, 0.5],
|
|
13125
13989
|
[12, 2]
|
|
13126
13990
|
])
|
|
@@ -13151,7 +14015,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13151
14015
|
// At city detail these white markings wash out otherwise matching
|
|
13152
14016
|
// road fills. Introduce them with the closer street-level detail.
|
|
13153
14017
|
minZoom: 16.5,
|
|
13154
|
-
opacity:
|
|
14018
|
+
opacity: zoom13.linear([
|
|
13155
14019
|
[16.5, 0],
|
|
13156
14020
|
[17, 1]
|
|
13157
14021
|
])
|
|
@@ -13484,14 +14348,14 @@ var streets = bindOfficialMapTheme(
|
|
|
13484
14348
|
cycleway: pathRoadStyle(mapboxRoadPalette.cycleway, mapboxPathWidthStops, {
|
|
13485
14349
|
casingColor: mapboxRoadPalette.pathCasing,
|
|
13486
14350
|
casingGapWidth: roadWidth(mapboxPathWidthStops, 1),
|
|
13487
|
-
fillOpacity:
|
|
14351
|
+
fillOpacity: zoom13.linear([
|
|
13488
14352
|
[15, 0],
|
|
13489
14353
|
[16, 1]
|
|
13490
14354
|
]),
|
|
13491
14355
|
minZoom: 15,
|
|
13492
14356
|
underlay: {
|
|
13493
14357
|
cap: pathLineCap,
|
|
13494
|
-
color:
|
|
14358
|
+
color: zoom13.linear([
|
|
13495
14359
|
[15, mapboxRoadPalette.pathAtZ15],
|
|
13496
14360
|
[16, mapboxRoadPalette.pathFromZ16]
|
|
13497
14361
|
]),
|
|
@@ -13500,7 +14364,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13500
14364
|
opacity: 1,
|
|
13501
14365
|
width: roadWidth(mapboxPathWidthStops, 1)
|
|
13502
14366
|
},
|
|
13503
|
-
width:
|
|
14367
|
+
width: zoom13.linear([
|
|
13504
14368
|
[12, 0],
|
|
13505
14369
|
[18, 2],
|
|
13506
14370
|
[22, 20]
|
|
@@ -13534,88 +14398,80 @@ var streets = bindOfficialMapTheme(
|
|
|
13534
14398
|
ferry: {
|
|
13535
14399
|
color: streetsVisual.road.ferry,
|
|
13536
14400
|
minZoom: 8,
|
|
13537
|
-
dash:
|
|
13538
|
-
[13,
|
|
14401
|
+
dash: expr14.step(expr14.zoom(), expr14.literal([1, 0]), [
|
|
14402
|
+
[13, expr14.literal([12, 4])]
|
|
13539
14403
|
]),
|
|
13540
|
-
opacity:
|
|
14404
|
+
opacity: zoom13.linear([
|
|
13541
14405
|
[8, 0],
|
|
13542
14406
|
[17, 1]
|
|
13543
14407
|
]),
|
|
13544
|
-
width:
|
|
14408
|
+
width: zoom13.exponential(1.5, [
|
|
13545
14409
|
[14, 0.5],
|
|
13546
14410
|
[20, 1]
|
|
13547
14411
|
])
|
|
13548
14412
|
}
|
|
13549
14413
|
}),
|
|
13550
|
-
buildings:
|
|
14414
|
+
buildings: withRenderStack11(
|
|
13551
14415
|
buildings6({
|
|
13552
14416
|
// Footprints; the render stack's extrusion pass raises them from z15, and its shadows
|
|
13553
14417
|
// stand beside the flat fill, so they require this mode.
|
|
13554
14418
|
mode: "flat",
|
|
13555
14419
|
threeDimensional: {
|
|
14420
|
+
flatFootprints: false,
|
|
14421
|
+
entrance: { buildings: [14.25, 14.25], models: [14.25, 14.25] },
|
|
13556
14422
|
edgeRadius: 1.5,
|
|
13557
|
-
groundOcclusion: 0.
|
|
14423
|
+
groundOcclusion: 0.1,
|
|
14424
|
+
groundOcclusionRadius: 1.5,
|
|
13558
14425
|
// Models name pools, planting and timber with these parts to follow the map's colours.
|
|
13559
14426
|
modelColors: {
|
|
13560
|
-
surface:
|
|
13561
|
-
secondary:
|
|
13562
|
-
roof:
|
|
13563
|
-
accent:
|
|
13564
|
-
|
|
13565
|
-
|
|
13566
|
-
|
|
14427
|
+
surface: token13.color("buildings.modelSurface"),
|
|
14428
|
+
secondary: token13.color("buildings.modelSecondary"),
|
|
14429
|
+
roof: token13.color("buildings.modelRoof"),
|
|
14430
|
+
accent: token13.color("buildings.modelAccent"),
|
|
14431
|
+
glass: token13.color("buildings.modelGlass"),
|
|
14432
|
+
water: token13.color("buildings.modelWater"),
|
|
14433
|
+
vegetation: token13.color("buildings.modelVegetation"),
|
|
14434
|
+
wood: token13.color("buildings.modelWood")
|
|
13567
14435
|
},
|
|
13568
14436
|
floodLight: {
|
|
13569
|
-
intensity:
|
|
13570
|
-
brightnessScale:
|
|
13571
|
-
color:
|
|
14437
|
+
intensity: token13.number("buildings.floodLight.intensity"),
|
|
14438
|
+
brightnessScale: token13.number("buildings.floodLight.brightnessScale"),
|
|
14439
|
+
color: token13.color("buildings.floodLight")
|
|
13572
14440
|
},
|
|
13573
14441
|
modelLighting: {
|
|
13574
14442
|
wall: {
|
|
13575
14443
|
shading: "map",
|
|
13576
|
-
ambientOcclusion: 0.
|
|
13577
|
-
color:
|
|
14444
|
+
ambientOcclusion: 0.5,
|
|
14445
|
+
color: token13.color("buildings.modelSurface"),
|
|
13578
14446
|
roughness: 1,
|
|
13579
14447
|
metallic: 0
|
|
13580
14448
|
},
|
|
13581
14449
|
roof: {
|
|
13582
14450
|
shading: "map",
|
|
13583
|
-
ambientOcclusion: 0.
|
|
13584
|
-
color:
|
|
14451
|
+
ambientOcclusion: 0.45,
|
|
14452
|
+
color: token13.color("buildings.modelRoof"),
|
|
13585
14453
|
roughness: 1,
|
|
13586
14454
|
metallic: 0
|
|
13587
14455
|
},
|
|
13588
14456
|
window: {
|
|
13589
|
-
|
|
14457
|
+
shading: "map",
|
|
14458
|
+
ambientOcclusion: 0.4,
|
|
14459
|
+
color: token13.color("buildings.modelGlass"),
|
|
14460
|
+
colorScale: 0.96,
|
|
14461
|
+
// Glazing keeps its material even when it shares a named stone part.
|
|
13590
14462
|
partColorMix: 0,
|
|
13591
|
-
roughness:
|
|
13592
|
-
metallic:
|
|
13593
|
-
emissiveStrength:
|
|
13594
|
-
emissiveVariation:
|
|
13595
|
-
emissiveHeight: [0, 0.9, 0, 1, 0.5],
|
|
13596
|
-
colorVariation: {
|
|
13597
|
-
hue: [
|
|
13598
|
-
token9.number("buildings.modelWindow.hueLow"),
|
|
13599
|
-
token9.number("buildings.modelWindow.hueHigh")
|
|
13600
|
-
],
|
|
13601
|
-
saturation: [
|
|
13602
|
-
token9.number("buildings.modelWindow.saturationLow"),
|
|
13603
|
-
token9.number("buildings.modelWindow.saturationHigh")
|
|
13604
|
-
],
|
|
13605
|
-
lightness: [
|
|
13606
|
-
token9.number("buildings.modelWindow.lightnessLow"),
|
|
13607
|
-
token9.number("buildings.modelWindow.lightnessHigh")
|
|
13608
|
-
],
|
|
13609
|
-
space: "linear"
|
|
13610
|
-
}
|
|
14463
|
+
roughness: 1,
|
|
14464
|
+
metallic: 0,
|
|
14465
|
+
emissiveStrength: 0,
|
|
14466
|
+
emissiveVariation: 0
|
|
13611
14467
|
},
|
|
13612
14468
|
...Object.fromEntries(
|
|
13613
14469
|
["unclassified", "door", "lamp", "logo"].map((role) => [
|
|
13614
14470
|
role,
|
|
13615
14471
|
{
|
|
13616
14472
|
shading: "map",
|
|
13617
|
-
ambientOcclusion: 0.
|
|
13618
|
-
color:
|
|
14473
|
+
ambientOcclusion: 0.5,
|
|
14474
|
+
color: token13.color("buildings.modelSurface"),
|
|
13619
14475
|
roughness: 1,
|
|
13620
14476
|
metallic: 0
|
|
13621
14477
|
}
|
|
@@ -13634,7 +14490,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13634
14490
|
fill: {
|
|
13635
14491
|
color: buildingFillColor,
|
|
13636
14492
|
minZoom: 14.25,
|
|
13637
|
-
opacity:
|
|
14493
|
+
opacity: zoom13.linear([
|
|
13638
14494
|
[14.25, 0],
|
|
13639
14495
|
[14.75, 0.5],
|
|
13640
14496
|
[15, 1]
|
|
@@ -13643,14 +14499,14 @@ var streets = bindOfficialMapTheme(
|
|
|
13643
14499
|
outline: {
|
|
13644
14500
|
color: buildingOutlineColor,
|
|
13645
14501
|
minZoom: 14.5,
|
|
13646
|
-
opacity:
|
|
14502
|
+
opacity: zoom13.linear([
|
|
13647
14503
|
[14.5, 0],
|
|
13648
14504
|
[15, 0.6],
|
|
13649
14505
|
[16, 0.82],
|
|
13650
14506
|
[17, 0.96],
|
|
13651
14507
|
[18, 1]
|
|
13652
14508
|
]),
|
|
13653
|
-
width:
|
|
14509
|
+
width: zoom13.linear([
|
|
13654
14510
|
[14.5, 0.25],
|
|
13655
14511
|
[15, 0.4],
|
|
13656
14512
|
[16, 0.65],
|
|
@@ -13662,7 +14518,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13662
14518
|
}),
|
|
13663
14519
|
streetsBuildingRenderStack()
|
|
13664
14520
|
),
|
|
13665
|
-
labels:
|
|
14521
|
+
labels: withRenderStack11(
|
|
13666
14522
|
labels7({
|
|
13667
14523
|
collisionPriority: "navigation",
|
|
13668
14524
|
language: "local",
|
|
@@ -13728,12 +14584,12 @@ var streets = bindOfficialMapTheme(
|
|
|
13728
14584
|
letterSpacing: 0.05,
|
|
13729
14585
|
lineHeight: 1.1,
|
|
13730
14586
|
maxWidth: 6,
|
|
13731
|
-
opacity:
|
|
14587
|
+
opacity: zoom13.linear([
|
|
13732
14588
|
[0, 0.8],
|
|
13733
14589
|
[1.5, 0.5],
|
|
13734
14590
|
[2.5, 0.5]
|
|
13735
14591
|
]),
|
|
13736
|
-
size:
|
|
14592
|
+
size: zoom13.exponential(0.5, [
|
|
13737
14593
|
[0, 10],
|
|
13738
14594
|
[2.5, 15]
|
|
13739
14595
|
]),
|
|
@@ -13752,24 +14608,24 @@ var streets = bindOfficialMapTheme(
|
|
|
13752
14608
|
lineHeight: 1.1,
|
|
13753
14609
|
maxWidth: 6,
|
|
13754
14610
|
padding: 3,
|
|
13755
|
-
radialOffset:
|
|
14611
|
+
radialOffset: zoom13.step([
|
|
13756
14612
|
[1, 0.6],
|
|
13757
14613
|
[8, 0]
|
|
13758
14614
|
]),
|
|
13759
|
-
size:
|
|
14615
|
+
size: expr14.interpolate(
|
|
13760
14616
|
{ kind: "cubic-bezier", x1: 0.2, x2: 0.7, y1: 0, y2: 1 },
|
|
13761
|
-
|
|
14617
|
+
expr14.zoom(),
|
|
13762
14618
|
[
|
|
13763
14619
|
[
|
|
13764
14620
|
1,
|
|
13765
|
-
|
|
14621
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 11, [
|
|
13766
14622
|
[4, 9],
|
|
13767
14623
|
[5, 8]
|
|
13768
14624
|
])
|
|
13769
14625
|
],
|
|
13770
14626
|
[
|
|
13771
14627
|
9,
|
|
13772
|
-
|
|
14628
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 22, [
|
|
13773
14629
|
[4, 19],
|
|
13774
14630
|
[5, 17]
|
|
13775
14631
|
])
|
|
@@ -13791,20 +14647,20 @@ var streets = bindOfficialMapTheme(
|
|
|
13791
14647
|
letterSpacing: 0.15,
|
|
13792
14648
|
maxWidth: 6,
|
|
13793
14649
|
opacity: 0.5,
|
|
13794
|
-
size:
|
|
14650
|
+
size: expr14.interpolate(
|
|
13795
14651
|
{ kind: "cubic-bezier", x1: 0.85, x2: 0.65, y1: 0.7, y2: 1 },
|
|
13796
|
-
|
|
14652
|
+
expr14.zoom(),
|
|
13797
14653
|
[
|
|
13798
14654
|
[
|
|
13799
14655
|
4,
|
|
13800
|
-
|
|
14656
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 9, [
|
|
13801
14657
|
[6, 8],
|
|
13802
14658
|
[7, 7]
|
|
13803
14659
|
])
|
|
13804
14660
|
],
|
|
13805
14661
|
[
|
|
13806
14662
|
9,
|
|
13807
|
-
|
|
14663
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 21, [
|
|
13808
14664
|
[6, 16],
|
|
13809
14665
|
[7, 14]
|
|
13810
14666
|
])
|
|
@@ -13817,9 +14673,9 @@ var streets = bindOfficialMapTheme(
|
|
|
13817
14673
|
city: {
|
|
13818
14674
|
minZoom: 2,
|
|
13819
14675
|
maxZoom: 15,
|
|
13820
|
-
priority:
|
|
14676
|
+
priority: expr14.subtract(100, expr14.coalesce(expr14.get(field14("rank")), 20)),
|
|
13821
14677
|
text: {
|
|
13822
|
-
color:
|
|
14678
|
+
color: zoom13.linear([
|
|
13823
14679
|
[2, streetsOverviewPalette.label],
|
|
13824
14680
|
[4, streetsOverviewPalette.label],
|
|
13825
14681
|
[6, streetsVisual.label.settlement]
|
|
@@ -13830,32 +14686,32 @@ var streets = bindOfficialMapTheme(
|
|
|
13830
14686
|
lineHeight: 1.1,
|
|
13831
14687
|
maxWidth: 7,
|
|
13832
14688
|
padding: 1,
|
|
13833
|
-
radialOffset:
|
|
14689
|
+
radialOffset: zoom13.step([
|
|
13834
14690
|
[2, 0.6],
|
|
13835
14691
|
[8, 0]
|
|
13836
14692
|
]),
|
|
13837
|
-
size:
|
|
14693
|
+
size: expr14.interpolate(
|
|
13838
14694
|
{ kind: "cubic-bezier", x1: 0.2, x2: 0.9, y1: 0, y2: 1 },
|
|
13839
|
-
|
|
14695
|
+
expr14.zoom(),
|
|
13840
14696
|
[
|
|
13841
|
-
[3,
|
|
14697
|
+
[3, expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 13, [[6, 11]])],
|
|
13842
14698
|
[
|
|
13843
14699
|
6,
|
|
13844
|
-
|
|
14700
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 18, [
|
|
13845
14701
|
[6, 16],
|
|
13846
14702
|
[7, 14]
|
|
13847
14703
|
])
|
|
13848
14704
|
],
|
|
13849
14705
|
[
|
|
13850
14706
|
8,
|
|
13851
|
-
|
|
14707
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 20, [
|
|
13852
14708
|
[9, 16],
|
|
13853
14709
|
[10, 14]
|
|
13854
14710
|
])
|
|
13855
14711
|
],
|
|
13856
14712
|
[
|
|
13857
14713
|
15,
|
|
13858
|
-
|
|
14714
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 24, [
|
|
13859
14715
|
[9, 20],
|
|
13860
14716
|
[12, 16],
|
|
13861
14717
|
[15, 14]
|
|
@@ -13870,7 +14726,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13870
14726
|
town: {
|
|
13871
14727
|
minZoom: 2,
|
|
13872
14728
|
maxZoom: 13,
|
|
13873
|
-
priority:
|
|
14729
|
+
priority: expr14.subtract(80, expr14.coalesce(expr14.get(field14("rank")), 20)),
|
|
13874
14730
|
text: {
|
|
13875
14731
|
color: streetsVisual.label.settlement,
|
|
13876
14732
|
haloColor: streetsVisual.label.placeHalo,
|
|
@@ -13879,25 +14735,25 @@ var streets = bindOfficialMapTheme(
|
|
|
13879
14735
|
lineHeight: 1.1,
|
|
13880
14736
|
maxWidth: 7,
|
|
13881
14737
|
padding: 1,
|
|
13882
|
-
radialOffset:
|
|
14738
|
+
radialOffset: zoom13.step([
|
|
13883
14739
|
[2, 0.55],
|
|
13884
14740
|
[8, 0]
|
|
13885
14741
|
]),
|
|
13886
|
-
size:
|
|
14742
|
+
size: expr14.interpolate(
|
|
13887
14743
|
{ kind: "cubic-bezier", x1: 0.2, x2: 0.9, y1: 0, y2: 1 },
|
|
13888
|
-
|
|
14744
|
+
expr14.zoom(),
|
|
13889
14745
|
[
|
|
13890
|
-
[3,
|
|
14746
|
+
[3, expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 11, [[9, 10]])],
|
|
13891
14747
|
[
|
|
13892
14748
|
6,
|
|
13893
|
-
|
|
14749
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 14, [
|
|
13894
14750
|
[9, 12],
|
|
13895
14751
|
[12, 10]
|
|
13896
14752
|
])
|
|
13897
14753
|
],
|
|
13898
14754
|
[
|
|
13899
14755
|
8,
|
|
13900
|
-
|
|
14756
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 16, [
|
|
13901
14757
|
[9, 14],
|
|
13902
14758
|
[12, 12],
|
|
13903
14759
|
[15, 10]
|
|
@@ -13905,7 +14761,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13905
14761
|
],
|
|
13906
14762
|
[
|
|
13907
14763
|
13,
|
|
13908
|
-
|
|
14764
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 22, [
|
|
13909
14765
|
[9, 20],
|
|
13910
14766
|
[12, 16],
|
|
13911
14767
|
[15, 14]
|
|
@@ -13929,7 +14785,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13929
14785
|
village: {
|
|
13930
14786
|
minZoom: 2,
|
|
13931
14787
|
maxZoom: 13,
|
|
13932
|
-
priority:
|
|
14788
|
+
priority: expr14.subtract(65, expr14.coalesce(expr14.get(field14("rank")), 20)),
|
|
13933
14789
|
text: {
|
|
13934
14790
|
color: streetsVisual.label.settlement,
|
|
13935
14791
|
haloColor: streetsVisual.label.placeHalo,
|
|
@@ -13938,25 +14794,25 @@ var streets = bindOfficialMapTheme(
|
|
|
13938
14794
|
lineHeight: 1.1,
|
|
13939
14795
|
maxWidth: 7,
|
|
13940
14796
|
padding: 1,
|
|
13941
|
-
radialOffset:
|
|
14797
|
+
radialOffset: zoom13.step([
|
|
13942
14798
|
[2, 0.55],
|
|
13943
14799
|
[8, 0]
|
|
13944
14800
|
]),
|
|
13945
|
-
size:
|
|
14801
|
+
size: expr14.interpolate(
|
|
13946
14802
|
{ kind: "cubic-bezier", x1: 0.2, x2: 0.9, y1: 0, y2: 1 },
|
|
13947
|
-
|
|
14803
|
+
expr14.zoom(),
|
|
13948
14804
|
[
|
|
13949
|
-
[3,
|
|
14805
|
+
[3, expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 11, [[9, 10]])],
|
|
13950
14806
|
[
|
|
13951
14807
|
6,
|
|
13952
|
-
|
|
14808
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 14, [
|
|
13953
14809
|
[9, 12],
|
|
13954
14810
|
[12, 10]
|
|
13955
14811
|
])
|
|
13956
14812
|
],
|
|
13957
14813
|
[
|
|
13958
14814
|
8,
|
|
13959
|
-
|
|
14815
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 16, [
|
|
13960
14816
|
[9, 14],
|
|
13961
14817
|
[12, 12],
|
|
13962
14818
|
[15, 10]
|
|
@@ -13964,7 +14820,7 @@ var streets = bindOfficialMapTheme(
|
|
|
13964
14820
|
],
|
|
13965
14821
|
[
|
|
13966
14822
|
13,
|
|
13967
|
-
|
|
14823
|
+
expr14.step(expr14.coalesce(expr14.get(field14("rank")), 99), 22, [
|
|
13968
14824
|
[9, 20],
|
|
13969
14825
|
[12, 16],
|
|
13970
14826
|
[15, 14]
|
|
@@ -13988,37 +14844,37 @@ var streets = bindOfficialMapTheme(
|
|
|
13988
14844
|
neighborhood: {
|
|
13989
14845
|
minZoom: 10,
|
|
13990
14846
|
maxZoom: 15,
|
|
13991
|
-
priority:
|
|
14847
|
+
priority: expr14.subtract(65, expr14.coalesce(expr14.get(field14("rank")), 20)),
|
|
13992
14848
|
text: {
|
|
13993
14849
|
font: streetsVisual.font.default,
|
|
13994
14850
|
color: streetsVisual.label.neighborhood,
|
|
13995
14851
|
haloColor: streetsVisual.label.placeHalo,
|
|
13996
14852
|
haloBlur: 0,
|
|
13997
14853
|
haloWidth: 1.3,
|
|
13998
|
-
letterSpacing:
|
|
13999
|
-
|
|
14854
|
+
letterSpacing: expr14.match(
|
|
14855
|
+
expr14.get(field14("class")),
|
|
14000
14856
|
[{ labels: "suburb", value: 0.15 }],
|
|
14001
14857
|
0.05
|
|
14002
14858
|
),
|
|
14003
14859
|
lineHeight: 1.1,
|
|
14004
14860
|
maxWidth: 7,
|
|
14005
14861
|
padding: 3,
|
|
14006
|
-
size:
|
|
14862
|
+
size: expr14.interpolate(
|
|
14007
14863
|
{ kind: "cubic-bezier", x1: 0.5, x2: 1, y1: 0, y2: 1 },
|
|
14008
|
-
|
|
14864
|
+
expr14.zoom(),
|
|
14009
14865
|
[
|
|
14010
14866
|
[
|
|
14011
14867
|
11,
|
|
14012
|
-
|
|
14013
|
-
|
|
14868
|
+
expr14.match(
|
|
14869
|
+
expr14.get(field14("class")),
|
|
14014
14870
|
[{ labels: "suburb", value: 12 }],
|
|
14015
14871
|
11.5
|
|
14016
14872
|
)
|
|
14017
14873
|
],
|
|
14018
14874
|
[
|
|
14019
14875
|
15,
|
|
14020
|
-
|
|
14021
|
-
|
|
14876
|
+
expr14.match(
|
|
14877
|
+
expr14.get(field14("class")),
|
|
14022
14878
|
[{ labels: "suburb", value: 16 }],
|
|
14023
14879
|
15
|
|
14024
14880
|
)
|
|
@@ -14038,7 +14894,7 @@ var streets = bindOfficialMapTheme(
|
|
|
14038
14894
|
haloColor: streetsVisual.label.placeHalo,
|
|
14039
14895
|
haloBlur: 0.5,
|
|
14040
14896
|
haloWidth: 1,
|
|
14041
|
-
size:
|
|
14897
|
+
size: zoom13.linear([
|
|
14042
14898
|
[11, 10],
|
|
14043
14899
|
[15, 14]
|
|
14044
14900
|
])
|
|
@@ -14090,12 +14946,11 @@ var streets = bindOfficialMapTheme(
|
|
|
14090
14946
|
minZoom: 6
|
|
14091
14947
|
},
|
|
14092
14948
|
detail: {
|
|
14093
|
-
//
|
|
14094
|
-
//
|
|
14095
|
-
|
|
14096
|
-
|
|
14097
|
-
[
|
|
14098
|
-
[13, 300],
|
|
14949
|
+
// Reserve room for the road network in metropolitan views; retain the
|
|
14950
|
+
// existing street-detail interval from z14.
|
|
14951
|
+
spacing: zoom13.linear([
|
|
14952
|
+
[11, token13.number("labels.shield.spacing11")],
|
|
14953
|
+
[13, token13.number("labels.shield.spacing13")],
|
|
14099
14954
|
[14, 600]
|
|
14100
14955
|
])
|
|
14101
14956
|
},
|
|
@@ -14124,7 +14979,7 @@ var streets = bindOfficialMapTheme(
|
|
|
14124
14979
|
haloColor: streetsVisual.label.waterHalo,
|
|
14125
14980
|
haloWidth: 0,
|
|
14126
14981
|
letterSpacing: 0.25,
|
|
14127
|
-
size:
|
|
14982
|
+
size: zoom13.linear([
|
|
14128
14983
|
[1, 12],
|
|
14129
14984
|
[8, 18]
|
|
14130
14985
|
])
|
|
@@ -14139,7 +14994,7 @@ var streets = bindOfficialMapTheme(
|
|
|
14139
14994
|
color: streetsDetailPalette.waterText,
|
|
14140
14995
|
haloColor: streetsVisual.label.waterHalo,
|
|
14141
14996
|
haloWidth: 0,
|
|
14142
|
-
size:
|
|
14997
|
+
size: zoom13.linear([
|
|
14143
14998
|
[5, 11],
|
|
14144
14999
|
[14, 16]
|
|
14145
15000
|
])
|
|
@@ -14154,8 +15009,8 @@ var streets = bindOfficialMapTheme(
|
|
|
14154
15009
|
color: streetsDetailPalette.waterText,
|
|
14155
15010
|
haloColor: streetsVisual.label.waterHalo,
|
|
14156
15011
|
haloWidth: 0,
|
|
14157
|
-
letterSpacing:
|
|
14158
|
-
|
|
15012
|
+
letterSpacing: expr14.match(
|
|
15013
|
+
expr14.get(field14("class")),
|
|
14159
15014
|
[
|
|
14160
15015
|
{ labels: "ocean", value: 0.25 },
|
|
14161
15016
|
{ labels: ["sea", "bay"], value: 0.15 }
|
|
@@ -14163,7 +15018,7 @@ var streets = bindOfficialMapTheme(
|
|
|
14163
15018
|
0
|
|
14164
15019
|
),
|
|
14165
15020
|
maxAngle: 30,
|
|
14166
|
-
size:
|
|
15021
|
+
size: zoom13.linear([
|
|
14167
15022
|
[1, 12],
|
|
14168
15023
|
[8, 18]
|
|
14169
15024
|
])
|
|
@@ -14172,7 +15027,7 @@ var streets = bindOfficialMapTheme(
|
|
|
14172
15027
|
waterway: {
|
|
14173
15028
|
minZoom: 13,
|
|
14174
15029
|
placement: "line",
|
|
14175
|
-
spacing:
|
|
15030
|
+
spacing: zoom13.linear([
|
|
14176
15031
|
[15, 250],
|
|
14177
15032
|
[17, 400]
|
|
14178
15033
|
]),
|
|
@@ -14182,7 +15037,7 @@ var streets = bindOfficialMapTheme(
|
|
|
14182
15037
|
haloColor: streetsVisual.label.waterHalo,
|
|
14183
15038
|
haloWidth: 0,
|
|
14184
15039
|
maxAngle: 30,
|
|
14185
|
-
size:
|
|
15040
|
+
size: zoom13.linear([
|
|
14186
15041
|
[13, 12],
|
|
14187
15042
|
[18, 18]
|
|
14188
15043
|
])
|
|
@@ -14200,7 +15055,7 @@ var streets = bindOfficialMapTheme(
|
|
|
14200
15055
|
letterSpacing: 0.01,
|
|
14201
15056
|
lineHeight: 1.1,
|
|
14202
15057
|
maxWidth: 9,
|
|
14203
|
-
size:
|
|
15058
|
+
size: zoom13.linear([
|
|
14204
15059
|
[8, 12],
|
|
14205
15060
|
[14, 15]
|
|
14206
15061
|
])
|
|
@@ -14236,7 +15091,9 @@ var streets = bindOfficialMapTheme(
|
|
|
14236
15091
|
detailZoom: 18,
|
|
14237
15092
|
// World also calls botanical collections gardens. Keep only the main destinations;
|
|
14238
15093
|
// zooming in must not turn individual planting sections into named POIs.
|
|
14239
|
-
|
|
15094
|
+
// Generic airport POIs can describe travel businesses or misplaced listings.
|
|
15095
|
+
// Keep only the highest rank; mapped airports use labels.aerodrome.
|
|
15096
|
+
maxRankByType: { airport: 0, garden: 1 },
|
|
14240
15097
|
densityByCategory: {
|
|
14241
15098
|
lodging: 1,
|
|
14242
15099
|
"park-nature": 3,
|
|
@@ -14279,6 +15136,7 @@ var streets = bindOfficialMapTheme(
|
|
|
14279
15136
|
}
|
|
14280
15137
|
})
|
|
14281
15138
|
);
|
|
15139
|
+
var streets = bindOfficialMapTheme(withStreetsCartography(streetsBase));
|
|
14282
15140
|
|
|
14283
15141
|
// src/index.ts
|
|
14284
15142
|
var baedeker2 = freezeOfficialMap(baedeker);
|