Структура хранения легенды слоёв
Легенда слоя описывается в виде структуры, где для каждого уникального диапазона зума задаётся внешний вид объектов.
Каждый элемент структуры включает:
- Диапазон зума (
fromиto) – указывает, на каких уровнях масштаба применяется стиль. - Описание зума (
zoomDescription) – текстовое пояснение (необязательно). - Массив
properties, содержащий набор стилей.
Каждый стиль в массиве properties состоит из четырёх полей:
color– цвет заливки:type: тип заливки (из перечисленияColorType);colorValues: массив цветов в формате HEX.
stroke(опционально) — обводка:type: тип линии обводки (из перечисленияStrokeType);colorValues: массив цветов в формате HEX.
title– уникальное текстовое название стиля (отображается в легенде).geometryType– тип геометрии (из перечисленияGeometryType).
Формат структуры:
json
[
{
"zoom": {
"from": int,
"to": int
},
"zoomDescription": string,
"properties": [
{
"color": {
"type": ColorType,
"colorValues": [string]
},
"stroke": { // опционально
"type": StrokeType,
"colorValues": [string]
},
"title": string,
"geometryType": GeometryType
}
]
}
]
Соответствие типов для легенды слоёв
GeometryType – тип геометрии:
0– Точка (Point)1– Линия (Line)2– Полигон (Polygon)3– Тепловая карта (HeatMap)
ColorType – тип заливки:
0– Сплошной цвет (Solid)1– Градиент (Gradient)2– Пунктир (Dashed)3– Прозрачный (Transparent)
StrokeType – тип обводки:
0– Сплошная линия (Solid)1– Двойная линия (Double), например, у слоя «Опоры освещения»2– Пунктирная линия (Dashed)
Пример легенды: слой ДТП stat.gibdd.ru
JSON-представление:
json
[
{
"zoom": { "from": "min", "to": "7" },
"properties": [
{
"color": {
"type": "1",
"colorValues": ["#67a9cf", "#ef8a62", "#b2182b"]
},
"title": "Тепловая карта",
"geometryType": "3"
}
]
},
{
"zoom": { "from": "7", "to": "14" },
"properties": [
{ "color": { "type": "1", "colorValues": ["#FFE800"] }, "title": "0 - 1 погибших", "geometryType": "0" },
{ "color": { "type": "1", "colorValues": ["#FFB700"] }, "title": "1 - 3 погибших", "geometryType": "0" },
{ "color": { "type": "1", "colorValues": ["#FF7400"] }, "title": "3 - 5 погибших", "geometryType": "0" },
{ "color": { "type": "1", "colorValues": ["#FF0000"] }, "title": "более 5 погибших", "geometryType": "0" }
],
"zoomDescription": [
"Кластеры",
"Цвет: количество погибших",
"Контур: наличие погибших",
"Число: количество ДТП в кластере"
]
},
{
"zoom": { "from": "14", "to": "max" },
"properties": [
{ "color": { "type": "0", "colorValues": ["#FFBE40"] }, "title": "Съезд с дороги", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#0772A1"] }, "title": "Наезд на препятствие", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#ff0000"] }, "title": "Наезд на пешехода", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#D2006B"] }, "title": "Опрокидывание", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#FF8700"] }, "title": "Наезд на велосипедиста", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#ffc59a"] }, "title": "Наезд на животное", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#ff4149"] }, "title": "Наезд на лицо, не являющееся участником дорожного движения, осуществляющее несение службы", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#ff2800"] }, "title": "Наезд на лицо, не являющееся участником дорожного движения, осуществляющее какую-либо другую деятельность", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#ffc59a"] }, "title": "Наезд на внезапно возникшее препятствие", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#b486ff"] }, "title": "Отбрасывание предмета", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#ff1c4d"] }, "title": "Наезд на лицо, не являющееся участником дорожного движения, осуществляющее производство работ", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#5EC8AF"] }, "title": "Наезд на стоящее ТС", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#a8beff"] }, "title": "Падение груза", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#52026E"] }, "title": "Падение пассажира", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#81A9FF"] }, "title": "Столкновение", "geometryType": "0" },
{ "color": { "type": "0", "colorValues": ["#808080"] }, "title": "Иной вид ДТП", "geometryType": "0" }
]
}
]