Для работы картографического ядра используется массив с данными о стилевом оформлении слоя и карты в формате json. Такой подход используется для совместимости с различными форматами стилевых описаний ресурса без изменения ядра самого картографического приложения.
Выходной массив данных для слоя
layer => array(
version => const [1]
labelitem => string (поле атрибутивных данных для подписей объектов слоя)
minscale => float (минимальный масштаб видимости слоя)
maxscale => float (максимальный масштаб видимости слоя)
opacity => integer [0-100] (прозрачность в %)
application => array(
media => array(
project => string (идентификатор проекта)
keyfield => string (поле для привязки фотографий)
prefix => string (префикс)
)
)
tile => string (guid тайлового слоя)
tilefixed => integer [0|1] (флаг выпадающего списка с подложками, 1 - нет списка, 0 - список есть)
type => string ['thema'|'chart'|'sld'] ('thema' или '') (тип слоя)
class => array(
[0] => array(
condition => string (условие выборки объектов для класса по правилам mapserver, http://www.mapserver.org/mapfile/expressions.html)
minscale => float (минимальный масштаб видимости класса)
maxscale => float (максимальный масштаб видимости класса)
legendlabel => string (подпись класса в легенде)
label => array(
size => integer (размер шрифта)
color => string [r g b] (цвет заливки)*
outlinecolor => string [r g b] (цвет контура)*
fontid => string (ид библиотеки со шрифтами)
fontcode => string (код шрифта из библиотеки)
position => string ['ul'|'uc'|'ur'|'cl'|'cc'|'cr'|'ll'|'lc'|'lr'|'auto'] (позиция подписи от центра)
angle => mixed [(double)angle|(string)'auto'|(string)'follow'] (направление подписи)
force => boolean [true|false] (флаг перекрытия)
offset => array [x,y] (смещение по x и y)
border => string [''|'ghosted'|'opaque'] (ghosted - кайма, opaque - рамка)
repeatdistance => integer (дистанция для повторения подписей в пикселях)
) // end label
style => array(
[0] => array(
type => string ['none', 'image', 'font', 'library'] (тип оформления, 'image' - бинарное изображение, 'font' - символ шрифта, 'library' - символ из библиотеки)
size => integer (размер символа, 1 для изображения = оригинальный размер)
color => string [r g b] (цвет заливки)*
outlinecolor => string [r g b] (цвет контура)*
backgroundcolor => string [r g b] (цвет фона)*
img => бинарный код gif картинки (только для типа image)
fontid => string (ид библиотеки со шрифтами) (только для типа font)
fontcode => string (код шрифта из библиотеки) (только для типа font)
fontchar => byte (код символа шрифта) (только для типа font)
libraryid => string (ид библиотеки с символами) (только для типа library)
librarycode => string (код символа из библиотеки) (только для типа library)
)
[1] => array(
…
)
…
) // end style
styleline => array(**
[0] => array(
type => string ['none', 'image', 'font', 'library'] (тип оформления, 'image' - бинарное изображение, 'font' - символ шрифта, 'library' - символ из библиотеки)
size => integer (размер символа, 1 для изображения = оригинальный размер)
color => string [r g b] (цвет заливки)*
outlinecolor => string [r g b] (цвет контура)*
backgroundcolor => string [r g b] (цвет фона)*
img => бинарный код gif картинки (только для типа image)
fontid => string (ид библиотеки со шрифтами) (только для типа font)
fontcode => string (код шрифта из библиотеки) (только для типа font)
fontchar => byte (код символа шрифта) (только для типа font)
libraryid => string (ид библиотеки с символами) (только для типа library)
librarycode => string (код символа из библиотеки) (только для типа library)
)
[1] => array(
…
)
…
) // end styleline
)
[1] => array(
…
)
…
) // end class
)
* Значение цвета r, g, b изменяется от 0 до 255, '-1 -1 -1' - прозрачный цвет).
** Массив styleline заполняется только для полигональных слоев. В нем содержится описание стиля границы полигонов.
Для SLD:
layer => array(
version => const [1]
type => string ['thema'|'chart'|'sld'] ('sld') (тип слоя)
sld => string [xml] (для type = sld не пустое, для остальных типов пустая строка)
)
Для формата диаграмм:
layer => array(
version => const [1]
minscale => float (минимальный масштаб видимости слоя)
maxscale => float (максимальный масштаб видимости слоя)
opacity => integer [0-100] (прозрачность в %)
tile => string (guid тайлового слоя)
tilefixed => integer [0|1] (флаг выпадающего списка с подложками, 1 - нет списка, 0 - список есть)
type => string ['thema'|'chart'|'sld'] ('chart') (тип слоя)
chart => string ['pie'|'bar'|'vbar'] (тип картограмм: 'pie' - круговая, 'bar' - столбчатая, 'vbar' - столбчатая с накоплением (bar составленый в один столбик))
width => integer (размер картограммы)
height => integer (высота картограммы, необязательный параметр и только для гистограмм)
range => string [attribute] (диаметр круговой диаграммы, атрибутивное поле)
minsize => integer (минимальный размер диаметра круговой диаграммы)
maxsize => integer (максимальный размер диаметра круговой диаграммы)
minval => float (значение атрибутивного поля для минимального размера диаметра круговой диаграммы)
maxval => float (значение атрибутивного поля для максимального размера диаметра круговой диаграммы)
exponent => float (экспоненциальный фактор для размера диаметра круговой диаграммы)
class => array(
[0] => array(
condition => string [attribute] (название атрибутивного поля объекта для блока картограммы)
legendlabel => string (подпись класса в легенде)
style => array (
[0] => array(
size => integer (размер контура)
color => string [r g b] (цвет заливки)*
outlinecolor => string [r g b] (цвет контура)*
)
[1] => array(
…
)
…
) // end style
)
[1] => array(
…
)
…
) // end class
)
* Значение цвета r, g, b изменяется от 0 до 255, '-1 -1 -1' - прозрачный цвет).
Выходной массив данных для карты
map = array(
version => const [1]
extent => array [minx, miny, maxx, maxy] (границы начального вида карты)
fullextent => array [minx, miny, maxx, maxy] (границы полного вида карты)
imagecolor => string [r g b] (цвет фона)
minscale => float (минимальный масштаб карты)
maxscale => float (максимальный масштаб карты)
tile => string (guid тайлового слоя)
tilefixed => integer [0|1] (флаг выпадающего списка с подложками, 1 - нет списка, 0 - список есть)
checkbox => boolean [true|false] (показывать переключатели в легенде или нет)
layers => array(
[0] => array(
groupname => string (имя группы) (если слой без группы, значение должно быть пустым)
legendlabel => string (имя слоя/группы в легенде) (перекрывает аналогичный параметр в стандартном описании слоя) (пробел вместо имени в легенде заменяется стилевым оформлением)
legendindex => integer (порядок слоя/группы в легенде с 0)
queryable => boolean [true|false] (показывать или нет ответ запроса по клику мыши для слоя)
visible => boolean [true|false] (показывать или нет в слой легенде)
expanded => boolean [true|false] (раскрывать или нет изначально слой в легенде)
display => boolean [true|false] (показывать или нет слой в карте по умолчанию) (работает, когда checkbox = true)
guid => string (guid слоя) (если группа, то параметр должен быть пустым)
layer => mixed [''|array] (либо пустая строка - используем настройки самого слоя, либо выходной массив данных для слоя в формате описанном выше)
opacity => integer [0-100] (непрозрачность слоя в карте в %)
)
[1] => array(
…
)
…
)
)
Замечание:
- Проекция и экстенты карты хранятся у ресурса.
- Порядок слоев сверху-вниз. Первый слой массива layers самый нижний в карте.
- Порядок отображения слоев задается порядком слоев/групп в массиве layers.
- При создании карты группы игнорируются и могут находится в любом месте и порядке в массиве layers.
- В layers 2 сущности: слой (guid не пустой), группа (guid пустой).
Версия от 05.03.2018