Линии и многоугольники
С помощью ломаных линий и многоугольников на статической карте можно обозначить маршруты следования или границы объектов.
Ломаная линия состоит из набора вершин, последовательно соединенных отрезками прямой. Ломаная может иметь самопересечения. Если координаты первой и последней вершин ломаной совпадают, то эта ломаная называется замкнутой.
Многоугольник задается одной или несколькими замкнутыми ломаными.
Внимание
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
-
Запишите координаты вершин ломаной друг под другом, по одной вершине в строке.
37.593578 55.735094 37.592159 55.732469 37.589374 55.734162
-
Умножьте каждую координату на 1 000 000.
37593578 55735094 37592159 55732469 37589374 55734162
-
Рассчитайте смещения для второй и последующих точек ломаной.
37593578 55735094 -1419 -2625 -2785 1693
-
Переведите каждое из получившихся чисел в двоичную систему счисления. Дополните получившиеся значения недостающими нулями слева до 4 байтов (32 бита).
В итоге последовательность чисел будет иметь следующий вид (по одной координате в строке):00000010001111011010000111101010 00000011010100100111001100110110 11111111111111111111101001110101 11111111111111111111010110111111 11111111111111111111010100011111 00000000000000000000011010011101
-
Произведите кодирование последовательно по четыре байта. Каждые шесть бит необходимо перевести в десятичную систему счисления — это будет номер символа в строке, используемой для кодирования.
Строка, используемая для кодирования, имеет следующий вид:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=
Примечание
Данная строка отличается от строки, которая используется при кодировании в Base64. Дело в том, что строка с закодированными вершинами должна без ограничений передаваться в качестве параметра URL, а символы "+" и "/" в URL являются спецсимволами.
В качестве примера ниже приводится алгоритм кодирования первого набора из 4-х байтов:
-
Измените порядок следования байтов на обратный.
Прямой порядок:
00000010 00111101 10100001 11101010
Обратный порядок:
11101010 10100001 00111101 00000010
-
Считывайте последовательно по шесть бит, чтобы получить номера символов:
111010 -> символ № 58 -> символ "6" 101010 -> символ № 42 -> символ "q" 000100 -> символ № 04 -> символ "E" 111101 -> символ № 61 -> символ "9" 000000 -> символ № 00 -> символ "A" 10
Недостающие для получения последнего символа биты берутся из следующей последовательности из четырех байтов.
Примечание
После обработки всех байтов может сложиться ситуация, когда останется либо два, либо четыре бита, которых недостаточно для получения номера символа. Тогда каждые два недостающих бита заменяются символом "
=
". -
Общий вид закодированной в 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