Кастомизация карты
При использовании преднастроенного слоя 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 — объекты общественного транспорта, важность которых неизвестна.
- transit_location — все точки на карте, связанные с общественным транспортом (станции метро, остановки, входы)
- structure — структуры:
- building — здания:
- entrance — входы в здания.
- fence — заборы.
- building — здания:
- 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
.