Стили карты
В MapKit можно менять внешний вид как всей отображаемой карты, так и отдельных слоев. Стилизация карты задается в формате JSON-массива, содержащего объекты, каждый из которых задает один стиль. Каждый стиль может применяться к одному или нескольким объектам.
Формат JSON-массива
[{
"tags": {
"all": ["string", "string", ...],
"any": ["string", "string", ...],
"none": ["string", "string", ...]
},
"types": ["string", "string", ...],
"elements": ["string", "string", ...],
"stylers": {
"zoom": [integer, integer],
"visibility": "string",
"hue": "string",
"saturation": double,
"lightness": double,
"color": "string",
"opacity": double,
"scale": double
}
}]
-
tags
— Теги, определяющие подмножество объектов, к которым применяется стилизация. Список тегов для объектов подложки указан ниже. Если поле отсутствует, стили применяются ко всем объектам. Если указан неизвестный тег, стили не применяются.all
— У объекта должны присутствовать все указанные теги.any
— У объекта должен быть хотя бы один из указанных тегов.none
— У объекта не должно быть указанных тегов.
-
types
— Типы объектов, к которым применяется стилизация. Если поле отсутствует, стили применяются ко всем типам объектов. Можно задать только один элемент вместо массива. Возможные значения:- point — точки, например автобусные остановки или точки интереса;
- polyline — линии, например дороги или границы;
- polygon — многоугольники, например парки или озера.
-
elements
— Элементы объекта, у которого будут меняться свойства отображения. Если поле отсутствует, стилизация применяется ко всем элементам. Можно задать только один элемент вместо массива. Возможные значения:-
geometry — геометрические элементы объекта;
- geometry.fill — внутренняя область (заливка) геометрических элементов объекта;
- geometry.fill.pattern — картинка, которой мостится внутренняя область полигона или полилинии;
- geometry.outline — обводка геометрических элементов объекта;
- geometry.fill — внутренняя область (заливка) геометрических элементов объекта;
-
label — все элементы подписи объекта;
- label.icon — иконка объекта;
- label.text — текст подписи объекта;
- label.text.fill — заливка текста подписи объекта;
- label.text.outline — обводка текста подписи объекта.
-
-
stylers
— Один или несколько стилей, которые применятся к объектам. Стили применяются в указанном порядке.zoom
— Ограничивает применение стилей диапазоном масштабов. Можно указать одно значение или диапазон значений от меньшего к большему. Для применения стилей дробные значения масштаба округляются к ближайшему целому.visibility
— Задает видимость объекта. Возможное значение:off
.hue
— Меняет цветовой тон объекта на карте. Задается базовым цветом в формате#RRGGBB
. При базовом цвете с неопределенным тоном (белом, сером или черном) цвет объекта не изменяется.saturation
— Меняет насыщенность цветов на карте. Возможные значения: от -1 до 1. При -1 все цвета превращаются в оттенки серого, при 1 картинка приобретает очень высокую насыщенность цвета.lightness
— Меняет яркость цветов на карте. Возможные значения: от -1 до 1. При -1 объект становится черным, при 1 — белым.color
— Меняет цвет объекта. Поддерживаются следующие форматы:- Строка с hex-кодом цвета, например:
#RGB
,#RRGGBB
,0xRGB
,0xRRGGBB
,RGB
,RRGGBB
. - Строка с hex-кодом цвета и альфа-каналом, например:
#RGBA
,#RRGGBBAA
,0xRGBA
,0xRRGGBBAA
,RGBA
,RRGGBBAA
.
- Строка с hex-кодом цвета, например:
opacity
— Меняет относительную прозрачность объекта. Если в полеcolor
задан альфа-канал, значениеopacity
умножается на него.scale
— Меняет масштаб объекта. Размер объекта умножается на scale. Не применяется к selected-иконке.
Список тегов
Теги объектов зависят от слоя карты, для которого применяются стили. Ниже перечислены теги, с помощью которых можно менять подложку карты.
-
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 — строительные площадки.
- national_park — национальные парки и заповедники;
- terrain — рельеф.
-
poi — точки интереса:
- major_landmark — хорошо заметные объекты, отмеченные отдельной иконкой;
- outdoor — площадки на открытом воздухе:
- park — сады, парки;
- beach — пляжи.
- 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 — линия экватора, полярные круги.
Как применить стиль карты
Для применения стилей к карте используйте следующие методы:
setMapStyle
— для подложки карты.setLayerStyle
— для произвольного слоя.
String style = "[" +
" {" +
" \"types\": \"point\"," +
" \"tags\": {" +
" \"all\": [" +
" \"poi\"" +
" ]" +
" }," +
" \"stylers\": {" +
" \"color\": \"f00\"" +
" }" +
" }" +
" ]";
mapView.getMap().setMapStyle(style);
NSString *style = @"[" +
" {" +
" \"types\": \"point\"," +
" \"tags\": {" +
" \"all\": [" +
" \"poi\"" +
" ]" +
" }," +
" \"stylers\": {" +
" \"color\": \"f00\"" +
" }" +
" }" +
" ]";
[[YMKMap MapView] setMapStyleWithStyle:style];