Самое важное и главное при работе с объектом – это умение создавать его. Данная операция очень просто, она состоит из следующих этапов:
- Создание пустого объекта, привязанного к определенному слою;
- Присвоение координат объекту;
- Присвоение атрибутивной информации;
- Присвоение идентификатора стиля, если стиль слоя не определен как единообразный;
Необходимо также учитывать, что координаты объекта должны быть переданы в формате WKT. Этот формат очень простой и был разработан для представления объектов векторной геометрии. Ниже в таблице представлены примеры объектов в данном формате.
Тип |
Примеры |
|
Point | POINT (30 10) | |
LineString | LINESTRING (30 10, 10 30, 40 40) | |
Polygon | POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10)) | |
POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10), (20 30, 35 35, 30 20, 20 30)) | ||
MultiPoint | MULTIPOINT ((10 40), (40 30), (20 20), (30 10)) | |
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)) | |
MultiPolygon | MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5))) | |
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))) |
В формате 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 |
Свежие комментарии