Стили внешних слоев

В разделе «Стили» будут подробно рассмотрены создание и работа со стилями, но в них не будет затронута работа со стилями во внешних слоях. Основная часть действий сохраняется неизменной, а в случае если слой раскрашивается единообразно, то разницы в работе стилей нет.

Рассмотрим пример создания слоя, при котором необходимо раскрашивать объект в зависимости от значения атрибута в определенной колонке таблицы. В листинге ниже приводится пример создания слоя под названием «Киоски» и в зависимости от значения колонки «electricity» мы будет представлять объекты слоя в разных стилях.

ExternalSource source = mvMyMap.CreateExternalSource(mvExternalSourceTypes.mvPostGIS);
source.prepare("host =localhost port=5432 user=fail password=112233 dbname=kultura", 32639); 
source.Connect();
mvLayer workLayer = source.addLayer("data.kiosks", "Киоски", "id", "the_geom", "name", "electricity", "", "", "");
int dot_style = 0;
#region Если electricity = 0
mvSymbolObject symbol = new mvSymbolObject();
symbol.shape = 0x21;
mvFontObject font = new mvFontObject();
font.fontname = "Map Symbols";
font.size = 15;
font.Color = 0xFFFFFF; // Белый цвет точки
font.framecolor = 0x000000;
dot_style = workLayer.CreateDotStyle(symbol, font);
workLayer.SetExtStyle(0, dot_style);
#endregion
#region Если electricity = 1
font = new mvFontObject();
font.fontname = "Map Symbols";
font.size = 15;
font.Color = 0x000000;  // Черный цвет точки
font.framecolor = 0xFFFFFF;
dot_style = workLayer.CreateDotStyle(symbol, font);
workLayer.SetExtStyle(1, dot_style);
#endregion

Единственная разница в при создании стиля для таких слов только в том, что при создании объектов непосредственно в коде вам приходилось использовать свойство style объекта. Тут же этого делать не надо, но зато необходимо с помощью метода SetExtStyle слоя произвести сопоставление значение атрибута объекта с идентификатором стиля в слое.

Метод SetExtStyle не единственный метод, работающий со стилями в слоях, подгружаемых из внешних источников. Полный набор всех методов, необходимых для работы, представлены в таблице ниже:

Наименование Возвращаемый тип Описание
GetExtStyle(int dbstyle) int Получение идентификатора стиля по связанному значению
AddExtStyle(int dbstyle, int mvstyle) void Установка связи между значением внешнего источника и идентификатора стиля в слое
ClearExtStyles() void Очистка таблицы соответствия
RemoveExtStyle(int dbstyle) bool Удаление соответствия по связанному значению
SetExtStyle(int dbstyle, int mvstyle) bool Переназначить соответствие