feat(foundry): render geozones as independent map layer

This commit is contained in:
Codex
2026-07-20 21:48:27 +03:00
parent a02c3ff3dd
commit aa681ca069
12 changed files with 418 additions and 90 deletions
+35 -19
View File
@@ -174,26 +174,42 @@ const mapPresentationProfileInputSchema = {
},
},
target: {
type: "object",
additionalProperties: false,
required: [
"variant", "stemHeightMeters", "headSizePx", "stemWidthPx", "outlineColor",
"outlineOpacity", "outlineWidthPx", "hideCameraHeightMeters",
],
properties: {
variant: {
type: "string",
enum: ["elevated-spike"],
description: "Renderer-neutral presentation preset interpreted by the active Map adapter.",
oneOf: [
{
type: "object",
additionalProperties: false,
required: [
"variant", "stemHeightMeters", "headSizePx", "stemWidthPx", "outlineColor",
"outlineOpacity", "outlineWidthPx", "hideCameraHeightMeters",
],
properties: {
variant: { type: "string", enum: ["elevated-spike"] },
stemHeightMeters: { type: "number", minimum: 1, maximum: 100000 },
headSizePx: { type: "number", minimum: 1, maximum: 64 },
stemWidthPx: { type: "number", minimum: 0.25, maximum: 16 },
outlineColor: { type: "string", pattern: "^#[0-9A-Fa-f]{6}$" },
outlineOpacity: { type: "number", minimum: 0, maximum: 1 },
outlineWidthPx: { type: "number", minimum: 0, maximum: 8 },
hideCameraHeightMeters: { type: "number", minimum: 1, maximum: 100000000 },
},
},
stemHeightMeters: { type: "number", minimum: 1, maximum: 100000 },
headSizePx: { type: "number", minimum: 1, maximum: 64 },
stemWidthPx: { type: "number", minimum: 0.25, maximum: 16 },
outlineColor: { type: "string", pattern: "^#[0-9A-Fa-f]{6}$" },
outlineOpacity: { type: "number", minimum: 0, maximum: 1 },
outlineWidthPx: { type: "number", minimum: 0, maximum: 8 },
hideCameraHeightMeters: { type: "number", minimum: 1, maximum: 100000000 },
},
{
type: "object",
additionalProperties: false,
required: ["variant", "outlineColor", "outlineOpacity", "outlineWidthPx", "hideCameraHeightMeters"],
properties: {
variant: {
type: "string",
enum: ["surface-fill"],
description: "Provider-neutral filled surface interpreted by the active Map adapter.",
},
outlineColor: { type: "string", pattern: "^#[0-9A-Fa-f]{6}$" },
outlineOpacity: { type: "number", minimum: 0, maximum: 1 },
outlineWidthPx: { type: "number", minimum: 0, maximum: 8 },
hideCameraHeightMeters: { type: "number", minimum: 1, maximum: 100000000 },
},
},
],
},
facets: {
type: "array",