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
+91
View File
@@ -102,6 +102,97 @@
{ "field": "availability_state", "order": ["online", "offline"] },
{ "field": "motion_state", "order": ["moving", "stationary"] }
]
},
{
"id": "map.zone.operational.default",
"version": "1.0.0",
"title": "Геозоны",
"semanticTypes": ["map.zone"],
"label": {
"mode": "attributes",
"fields": ["display_name"],
"fontWeight": 600,
"sizePx": 14,
"color": "#f5f5f5",
"outlineColor": "#0c0d12",
"outlineWidthPx": 1,
"backgroundColor": "#0c0d12",
"backgroundOpacity": 0.82,
"paddingX": 8,
"paddingY": 5,
"maxLength": 80,
"offsetX": 10,
"offsetY": 8,
"hideCameraHeightMeters": 160000
},
"target": {
"variant": "surface-fill",
"outlineColor": "#f5f5f5",
"outlineOpacity": 0.72,
"outlineWidthPx": 1.5,
"hideCameraHeightMeters": 220000
},
"facets": [
{
"id": "geometry-kind",
"field": "geometry_kind",
"label": "Форма",
"filterable": true,
"counter": true,
"values": [
{ "value": "polygon", "label": "Полигоны", "order": 0 },
{ "value": "circle", "label": "Окружности", "order": 1 },
{ "value": "corridor", "label": "Коридоры", "order": 2 }
]
},
{
"id": "source-kind",
"field": "source_kind",
"label": "Источник",
"filterable": true,
"counter": true,
"values": [
{ "value": "live_api", "label": "Live API", "order": 0 },
{ "value": "versioned_snapshot", "label": "Версионный snapshot", "order": 1 }
]
}
],
"styles": [
{ "id": "polygon", "color": "#8e63ef", "opacity": 0.28 },
{ "id": "circle", "color": "#52c7b8", "opacity": 0.25 },
{ "id": "corridor", "color": "#6fb5fb", "opacity": 0.25 }
],
"classes": [
{
"id": "geometry-polygon",
"label": "Полигоны",
"priority": 300,
"match": [{ "field": "geometry_kind", "equals": "polygon" }],
"styleId": "polygon",
"renderable": true
},
{
"id": "geometry-circle",
"label": "Окружности",
"priority": 200,
"match": [{ "field": "geometry_kind", "equals": "circle" }],
"styleId": "circle",
"renderable": true
},
{
"id": "geometry-corridor",
"label": "Коридоры",
"priority": 100,
"match": [{ "field": "geometry_kind", "equals": "corridor" }],
"styleId": "corridor",
"renderable": true
}
],
"defaultClassId": "geometry-polygon",
"sort": [
{ "field": "geometry_kind", "order": ["polygon", "circle", "corridor"] },
{ "field": "source_kind", "order": ["live_api", "versioned_snapshot"] }
]
}
]
}