Кастомизация карты

При использовании преднастроенного слоя YMapDefaultSchemeLayer, помимо основных настроек карты, вы также можете изменить внешний вид большинства геообъектов на ней. Например, перекрасить дороги или дома в другой цвет. Для этого передайте настройки кастомизации в поле customization.

Пример использования:

const map = new YMap(element, {
  location: {center: [37.588144, 55.733842], zoom: 5},
  mode: 'vector'
});

const layer = new YMapDefaultSchemeLayer({
  customization: [
    // Делаем прозрачными все геометрии водных объектов.
    {
      tags: {
        all: ['water']
      },
      elements: 'geometry',
      stylers: [
        {
          opacity: 0
        }
      ]
    },
    // Меняем цвет подписей для всех POI и узлов сети общественного транспорта.
    {
      tags: {
        any: ['poi', 'transit_location']
      },
      elements: 'label.text.fill',
      stylers: [
        {
          color: '#0000DD'
        }
      ]
    }
  ]
});
map.addChild(layer);

Редактировать стили кастомизации можно в удобном онлайн-редакторе.

Формат

Кастомизация задается массивом объектов, каждый из которых описывает блоки кастомизации (стайлеры). Каждый такой блок содержит:

  • tags — теги, определяющие подмножество объектов, к которым применяется стилизация. Подробнее об этом — в разделе Теги. Если поле отсутствует, стилизация применяется ко всем объектам. Если указан неизвестный тег, стилизация не применяется.
  • types — типы объектов, к которым применяется стилизация. Если поле отсутствует, стилизация применяется ко всем типам объектов. Возможные значения:
    • point — точки. Например, автобусные остановки, POI.
    • polyline — линии. Например, дороги, границы, русла рек.
    • polygon — полигоны. Например, парки, озера.
  • elements — элементы объекта, у которого меняются свойства отображения. Если поле отсутствует, стилизация применяется ко всем элементам. Возможные значения:
    • geometry — геометрические элементы объекта (является комбинацией geometry.fill и geometry.outline).
    • geometry.fill — внутренняя область (заливка) геометрических элементов объекта.
    • geometry.fill.pattern — картинка, которой мостится внутренняя область полигона или линии.
    • geometry.outline — обводка геометрических элементов объекта.
    • label — все элементы подписи объекта.
    • label.icon — иконка объекта.
    • label.text — текст подписи объекта (является комбинацией label.text.fill и label.text.outline).
    • label.text.fill — заливка текста подписи объекта.
    • label.text.outline — обводка текста подписи объекта.
  • stylers — один или несколько стайлеров, описывает изменяемые свойства. Стайлеры применяются в том порядке, в котором задаются.

Теги

Большинство объектов на карте имеют один или несколько тегов, которые позволяют их классифицировать. С помощью тегов вы можете определить подмножество объектов, к которым применяется каждый отдельный блок кастомизации.

"tags": {
  "all": ["tag1", "tag2", ...],
  "any": ["tag1", "tag2", ...],
  "none": ["tag1", "tag2", ...]
}

Поля tags имеют следующий смысл:

  • all — у объекта должны присутствовать все указанные теги.
  • any — у объекта должен быть хотя бы один из указанных тегов.
  • none — у объекта не должно быть указанных тегов.

Внимание.

При наличии в одном из полей незнакомого тега блок кастомизации не применяется.

Возможные теги

  • road — автомобильные дороги:
    • road_N — автомобильные дороги важности N, где N — значение от 1 (наиболее важные) до 7 (наименее важные);
    • road_limited — дороги с ограничением движения автомобильного транспорта, пешеходные зоны;
    • road_unclassified — неклассифицированные дороги, как правило, лесные и полевые;
    • road_minor — внутриквартальные проезды;
    • road_construction — строящиеся дороги;
    • ferry — паромные переправы;
    • path — дороги, непригодные для проезда автомобилей (тротуары, дорожки в парках и на кладбищах, велодорожки);
    • crosswalk — пешеходные и велосипедные переходы;
    • traffic_light — светофоры.
  • water — водные объекты:
    • bathymetry — карта глубин водоемов.
  • landscape — наземные объекты:
    • land — земная поверхность;
    • landcover — растительность, болота, ледники:
      • vegetation — растительность, включая газоны, внутриквартальную растительность и точечные растения.
    • urban_area — кварталы:
      • residential — жилые кварталы;
      • industrial — промышленные кварталы;
      • cemetery — территории кладбищ;
      • park — сады, парки;
      • medical — территории медицинских учреждений;
      • sports_ground — спортивные площадки и игровые поля;
      • beach — территории пляжей;
      • construction_site — строительные площадки;
      • parking — парковки.
    • national_park — национальные парки и заповедники;
    • terrain — рельеф.
  • poi — точки интереса:
    • major_landmark — хорошо заметные объекты, отмеченные отдельной иконкой;
    • outdoor — площадки на открытом воздухе:
      • park — сады, парки;
      • national_park — национальные парки и заповедники;
      • beach — пляжи.
    • parking — парковки;
    • shopping — магазины, торговые центры;
    • commercial_services — организации, предоставляющие коммерческие услуги:
      • fuel_station — заправочные станции;
      • hotel — гостиницы, жильё.
    • food_and_drink — рестораны, бары;
    • cemetery — кладбища;
    • medical — медицинские учреждения.
  • admin — подписи и границы административно-территориальных делений, полигоны населенных пунктов:
    • country — страны;
    • region — области или штаты;
    • locality — населенные пункты;
    • district — городские районы;
    • address — адресные точки.
  • transit — все объекты карты, связанные с общественным транспортом:
    • transit_location — все точки на карте, связанные с общественным транспортом (станции метро, остановки, входы)
      • transit_stop — остановки наземного общественного транспорта, где выполняется посадка и высадка пассажиров;
      • transit_entrance — физические входы на станцию метро или выходы из нее.
    • transit_line — линии транспорта как физический объект (железнодорожные и трамвайные пути, кабельные линии на поверхности);
    • transit_schema — схематическое изображение линий общественного транспорта;
    • is_unclassified_transit — объекты общественного транспорта, важность которых неизвестна.
  • structure — структуры:
    • building — здания:
      • entrance — входы в здания.
    • fence — заборы.
  • is_tunnel — участок дороги или пути проходит в тоннеле.
  • geographic_line — линия экватора, полярные круги.

Свойства

Свойства меняют внешний вид объекта, применяются в следующем порядке:

  • zoom — ограничивает действие стайлера диапазоном масштабов. Можно указать одно целое число или массив из двух целых чисел (от меньшего к большему, закрытый интервал [zmin, zmax]).
  • visibility — задает видимость объекта. Возможное значение: off.
  • hue — меняет цветовой тон объекта на карте, при этом оставляет насыщенность и яркость без изменений. Задается базовым цветом в формате #RRGGBB (см. описание свойства color). При базовом цвете с неопределенным тоном (белом, сером или черном) цвет объекта не изменяется.
  • saturation — меняет насыщенность цветов на карте. Задается в виде вещественного числа из диапазона [-1, 1]. При -1 все цвета превращаются в оттенки серого, при 1 картинка приобретает очень высокую насыщенность цвета, при 0 цвет не изменяется. Оттенки серого не изменяются.
  • lightness — меняет яркость цветов на карте. Задается в виде вещественного числа из диапазона [-1, 1]. При -1 превращает все в черный, при 1 — в белый, при 0 цвет не изменяется.
  • color — меняет цвет объекта (в случае иконки — ее primary цвет). Поддерживаются следующие форматы:
    • #RGB, #RRGGBB, 0xRGB, 0xRRGGBB, RGB, RRGGBB — строка с hex-кодом цвета.
    • #RGBA, #RRGGBBAA, 0xRGBA, 0xRRGGBBAA, RGBA, RRGGBBAA — строка с hex-кодом цвета и альфа-каналом.
  • secondary-color — меняет вторичный цвет иконки. Формат такой же, как у color.
  • tertiary-color — меняет третичный цвет иконки. Формат такой же, как у color.
  • opacity — определяет относительную прозрачность объекта. Задается в виде вещественного числа. Работает как scale для alpha: это значение не заменяет, а умножается на уже существующее значение alpha у цвета. Если нужно именно заменить значение alpha, следует использовать задание цвета при помощи color.
  • scale — меняет масштаб объекта. Задается в виде вещественного числа. Размер объекта умножается на scale.