Методы объекта

Самое важное и главное при работе с объектом – это умение создавать его. Данная операция очень просто, она состоит из следующих этапов:

  1. Создание пустого объекта, привязанного к определенному слою;
  2. Присвоение координат объекту;
  3. Присвоение атрибутивной информации;
  4. Присвоение идентификатора стиля, если стиль слоя не определен как единообразный;

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

Тип

Примеры

Point POINT (30 10)  ob_1
LineString LINESTRING (30 10, 10 30, 40 40)  ob_2
Polygon POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))  ob_3
POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10), (20 30, 35 35, 30 20, 20 30))  ob_4
MultiPoint MULTIPOINT ((10 40), (40 30), (20 20), (30 10))  ob_5
MULTIPOINT (10 40, 40 30, 20 20, 30 10)
MultiLineString MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))  ob_6
MultiPolygon MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))  ob_7
MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 45 20, 30 5, 10 10, 10 30, 20 35), (30 20, 20 25, 20 15, 30 20)))  ob_8

В формате WKT все очень просто. А значит, мы можем приступить непосредственно к созданию объектов на карте. В листинге, представленном ниже, создается объект в слое с наименованием Киоски:

private void CreateObj()
{
    workLayer = mvMyMap.getLayer("Киоски");
    if (workLayer == null)
        return;
    mvVectorObject cObj = workLayer.CreateObject();        
    string wkt = "POINT(45 73)";
    cObj.setWKT(wkt);
    mvStringArray attrs = new mvStringArray();
    attrs.count = 3;
    attrs.setElem(0, "1");
    attrs.setElem(1, "Бытовая химия");
    attrs.setElem(2, "ул. Восстание д.18");
    cObj.SetAttributes(attrs);
    cObj.style = CreateStyle();
}
private int CreateStyle()
{
    mvSymbolObject symbol = new mvSymbolObject();
    symbol.shape = 0x21;
    mvFontObject font = new mvFontObject();
    font.fontname = "Map Symbols";
    font.size = 15;
    font.Color = 0xFFFFFF;
    font.framecolor = 0x000000;
    return workLayer.CreateDotStyle(symbol, font);
}

В этом примере два метода: CreateObj() и CreateStyle(). В первом происходить создание объекта, как вы наверно заметили, перед созданием стоит проверка на существование слоя. Если со слоем у нас все хорошо, то с помощью метода CreateObject() мы создаем в слое пустой объект, в котором еще нет ни координат, ни атрибутики. Однако у объекта есть метод setWKT(String) в который мы передаем координаты в формате WKT. После выполнения этого метода наш объект уже должен оказаться на том месте карты, на которое указывают координаты.

Следующим этапом при создании объекта, является, заполнение объекта атрибутивной информацией. Для этого необходимо использовать метод SetAttributes(mvStringArray) объекта. Атрибуты предварительно заполняются в mvStringArray. И на последнем этапе создаем и присваиваем стиль новому объекту.

Таким образом, мы рассмотрели пример создание объекта. Рассмотрим пример получение информации из объекта. Данные операции нужны, например, при сохранении информации в базу данных или для вывода на дисплей. В следующем листинге мы рассмотрим пример получения атрибутивной информации:

mvVectorObject cObj = workLayer.getObject(1);
if (cObj == null)
    return;
mvStringArray attrs = cObj.getAttributes();
string name = attrs.getElem(1);
string address = (string)cObj.fieldValue("address");
MessageBox.Show("Киоск с названием \""+name+"\" находится по адресу: " + address); 

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

В таблице ниже приведены все методы класса mvVectorObject.

Наименование Тип Описание
AttributeWindow() void Открытие окна атрибутивной информации
Delete() void Удаление объекта
Duplicate() mvVectorObject Создание копии объекта
fieldValue(string name) object Получение значение атрибута по наименованию
getAttributes() mvStringArray Получение атрибутов
getWKT() string Получение координат объекта в формате WKT
Move(mvCenterGlobal coor) void Перемещение объекта указанием координат
SetAttribute(string FieldName, string fieldValue) bool Установка значения атрибута объекта
SetAttributes(mvStringArray @params) bool Установка значений атрибутов объекта
setWKT(string wkt) bool Задание координат объекта в формате WKT