Линии и многоугольники

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

Ломаная линия состоит из набора вершин, последовательно соединенных отрезками прямой. Ломаная может иметь самопересечения. Если координаты первой и последней вершин ломаной совпадают, то эта ломаная называется замкнутой.

Многоугольник задается одной или несколькими замкнутыми ломаными.

Внимание

Static API позволяет одновременно отобразить на карте не более 5 ломаных и многоугольников, при этом совокупное количество вершин фигур не должно превышать 100.

Внешний вид геометрической фигуры задается с помощью специального описания. Описание ломаной содержит данные о толщине и цвете линии, а описание многоугольника - данные о толщине и цвете линий обводки и цвете заливки (см. ниже).

Вершины всех фигур привязаны к географическим координатам.

Координаты вершин и внешний вид линий и многоугольников задаются с помощью параметра pl. Параметр содержит набор описаний всех фигур, отображаемых на карте. Описания фигур перечисляются через тильду (~):

pl = ОписаниеФигуры1~ОписаниеФигуры2~ОписаниеФигуры3

Описание ломаной имеет следующий формат:

c:{цвет линии},w:{толщина},bc:{цвет обводки},bw:{толщина обводки},{вершины}
c:{цвет линии},f:{цвет заливки},w:{толщина},{вершины}
c:{цвет линии},w:{толщина},bc:{цвет обводки},bw:{толщина обводки},{вершины}

Цвет линии

Шестнадцатеричное представление цвета линии в формате RGBA (вида 0xFFFFFFFF). Первые 6 символов задают цвет в системе RGB, последующие два — прозрачность линии. Значение прозрачности лежит в диапазоне от 00 (прозрачная) до FF (непрозрачная).

Например: c:8822DDC0

Цвет заливки многоугольника

Используется тот же самый формат, что и для цвета ломаной (см. выше).

Например: f:00FF00A0

Для заливки многоугольника применяется алгоритм even-odd. То есть верно следующее правило: точка закрашивается, если луч, проведенный в бесконечность из этой точки, имеет нечетное количество пересечений с ребрами многоугольника.

Область пересечения нескольких многоугольников закрашивается всегда.

Толщина

Толщина линии (в пикселах).

Например: w:8

Примечание

Если цвет и толщина не заданы, используется сиреневая полупрозрачная линия толщиной 5 пикселов (8822DDC0).

Толщина обводки линии

Толщина линии обводки (в пикселах). По умолчанию толщина 0 пикселей.

Например: bw:8

Цвет обводки линии

Шестнадцатеричное представление цвета обводки линии в формате RGBA (вида 0xFFFFFFFF). Первые 6 символов задают цвет в системе RGB, последующие два — прозрачность линии. Значение прозрачности лежит в диапазоне от 00 (прозрачная) до FF (непрозрачная). По умолчанию используется обводка белого цвета.

Например: bc:8822DDC0

Вершины

Координаты вершин ломаной задаются одним из следующих способов:

  • Долгота1,Широта1,...,ДолготаN,ШиротаN;
  • Строкой, закодированной в Base64 формате.
Пример кодирования координат в формат Base64
  1. Запишите координаты вершин ломаной друг под другом, по одной вершине в строке.

    37.593578 55.735094
    37.592159 55.732469
    37.589374 55.734162
    
  2. Умножьте каждую координату на 1 000 000.

    37593578 55735094
    37592159 55732469
    37589374 55734162
    
  3. Рассчитайте смещения для второй и последующих точек ломаной.

    37593578 55735094
    -1419 -2625
    -2785 1693
    
  4. Переведите каждое из получившихся чисел в двоичную систему счисления. Дополните получившиеся значения недостающими нулями слева до 4 байтов (32 бита).
    В итоге последовательность чисел будет иметь следующий вид (по одной координате в строке):

    00000010001111011010000111101010
    00000011010100100111001100110110
    11111111111111111111101001110101
    11111111111111111111010110111111
    11111111111111111111010100011111
    00000000000000000000011010011101
    
  5. Произведите кодирование последовательно по четыре байта. Каждые шесть бит необходимо перевести в десятичную систему счисления — это будет номер символа в строке, используемой для кодирования.
    Строка, используемая для кодирования, имеет следующий вид:

    ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=
    

    Примечание

    Данная строка отличается от строки, которая используется при кодировании в Base64. Дело в том, что строка с закодированными вершинами должна без ограничений передаваться в качестве параметра URL, а символы "+" и "/" в URL являются спецсимволами.

    В качестве примера ниже приводится алгоритм кодирования первого набора из 4-х байтов:

  6. Измените порядок следования байтов на обратный.

    Прямой порядок:

    00000010 00111101 10100001 11101010
    

    Обратный порядок:

    11101010 10100001 00111101 00000010
    
  7. Считывайте последовательно по шесть бит, чтобы получить номера символов:

    111010 -> символ № 58 -> символ "6"
    101010 -> символ № 42 -> символ "q"
    000100 -> символ № 04 -> символ "E"
    111101 -> символ № 61 -> символ "9"
    000000 -> символ № 00 -> символ "A"
    10
    

    Недостающие для получения последнего символа биты берутся из следующей последовательности из четырех байтов.

    Примечание

    После обработки всех байтов может сложиться ситуация, когда останется либо два, либо четыре бита, которых недостаточно для получения номера символа. Тогда каждые два недостающих бита заменяются символом "=".

  8. Общий вид закодированной в Base64 строки:

    6qE9AjZzUgN1-v__v_X__x_1__-dBgAA
    

Координаты вершин многоугольника, заданного одной замкнутой ломаной (первая и последняя вершины совпадают), указываются аналогично.

Для того, чтобы задать многоугольник набором замкнутых ломаных, необходимо разделять последовательности вершин для каждой ломаной точкой с запятой: КоординатыВершинЛоманой1;...КоординатыВершинЛоманой2.

Примеры

Ломаная

Ниже приведен пример запроса фрагмента карты Измира с изображением маршрута от станции метро "Çankaya‎" до здания Turkiye Tarim Kredi Kooperatifleri. Вершины ломаной заданы перечислением координат вершин, цвет и ширина взяты по умолчанию:

https://static-maps.yandex.ru/v1?lang=ru_RU&pl=27.135483,38.422478,27.137685,38.422469,27.137736,38.422564,27.137789,38.424045,27.138519,38.423975,27.141899,38.423802,27.142215,38.423756,27.142333,38.423697,27.142376,38.423549,27.142596,38.423368,27.142971,38.423347,27.143285,38.423625,27.143245,38.423912,27.143015,38.424102,27.142795,38.424128,27.142795,38.424128,27.142387,38.423918,27.141909,38.423918,27.138275,38.42422&apikey=YOUR_API_KEY

Многоугольник, заданный одной ломаной

Ниже приведен пример запроса фрагмента карты Измира с изображением границы стен "İzmir Fuarı". Для обозначения границ использован многоугольник с красной линией обводки и светло-зеленой полупрозрачной заливкой:

https://static-maps.yandex.ru/v1?lang=ru_RU&pl=c:ec473fFF,f:00FF00A0,w:7,27.14325,38.43178,27.14855,38.430419,27.149794,38.428225,27.147327,38.425693,27.147305,38.424562,27.143142,38.424089,27.141426,38.427853,27.14325,38.43178&apikey=YOUR_API_KEY

Многоугольник, заданный набором ломаных

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

https://static-maps.yandex.ru/v1?lang=ru_RU&pl=f:30d5c844,w:7,29.085258,41.018105,29.100278,41.016024,29.097618,41.007508,29.086545,41.009978,29.085258,41.018105;29.089893,41.014724,29.096759,41.013814,29.096158,41.010303,29.091009,41.011669,29.089893,41.014724&apikey=YOUR_API_KEY

Пересечение многоугольников

Ниже приведен пример карты, на которой отображены два пересекающихся многоугольника. Наборы параметров для каждого многоугольника разделены тильдой (~).

Область пересечения многоугольников всегда закрашивается.

https://static-maps.yandex.ru/v1?lang=ru_RU&pl=f:2222DDC0,c:003399,29.088504,41.052278,29.097001,41.042141,29.08756,41.044935,29.088504,41.052278~c:00ff0055,f:3caa3c77,29.100434,41.048444,29.086187,41.04643,29.089791,41.042076,29.100434,41.048444&apikey=YOUR_API_KEY