Стили карты

В 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 — обводка геометрических элементов объекта;
    • 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.
    • 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 — объекты общественного транспорта, важность которых неизвестна.
  • structure — структуры:

    • building — здания:
      • entrance — входы в здания.
    • fence — заборы.
  • 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];
Предыдущая
Следующая