Структура хранения легенды слоёв

Легенда слоя описывается в виде структуры, где для каждого уникального диапазона зума задаётся внешний вид объектов.

Каждый элемент структуры включает:

Каждый стиль в массиве properties состоит из четырёх полей:

Формат структуры:

[
  {
    "zoom": {
      "from": int,
      "to": int
    },
    "zoomDescription": string,
    "properties": [
      {
        "color": {
          "type": ColorType,
          "colorValues": [string]
        },
        "stroke": {  // опционально
          "type": StrokeType,
          "colorValues": [string]
        },
        "title": string,
        "geometryType": GeometryType
      }
    ]
  }
]

Соответствие типов для легенды слоёв

GeometryType тип геометрии:

ColorType тип заливки:

StrokeType тип обводки:

Пример легенды: слой ДТП stat.gibdd.ru

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" }
    ]
  }
]