Вот часть кода из примера
void MainForm1::MapObjCreateAction_activated()
{
if ((!ui.DMapView1) || (!ui.DMapPoint1)) return;
if (!ui.DMapView1->GetMapHandle()) return;
if (ui.DMapView1->GetMapFileName().contains("Noginsk.sit") == false)
{
QString message, caption, namebut;
message = WcharToQString(WTEXT("Не открыта базовая карта Noginsk.sit"));
caption = WcharToQString(WTEXT("Создание объекта карты"));
namebut = WcharToQString(WTEXT("Да"));
QMessageBox::critical(0, caption, message, namebut);
return;
}
memset((char *)ui.DMapSelectObjectRsc1->FLocals, 0, sizeof(ui.DMapSelectObjectRsc1->FLocals));
ui.DMapSelectObjectRsc1->FLocals[LOCAL_SQUARE] = 1;
QDMapObj *DMapObj2 = new QDMapObj(centralWidget(), "DMapObj2");
DMapObj2->SetMapView(ui.DMapView1);
DMapObj2->CreateNullObj(0);
MEDRSCPARM medrscparm1;
memset(&medrscparm1, 0, sizeof(medrscparm1));
medrscparm1.Regime = MC_POLYLINE;
if (ui.DMapSelectObjectRsc1->ExecuteForMapObj(DMapObj2, true, &medrscparm1))
{
// Установить метрику созданного объекта
ui.DMapPoint1->SetPlaceIn(PP_PLANE);
ui.DMapPoint1->SetPoint(6205000, 7456000);
DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
ui.DMapPoint1->SetPoint(6204600, 7459010);
DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
ui.DMapPoint1->SetPoint(6203600, 7457860);
DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
ui.DMapPoint1->SetPoint(6207000, 7456020);
DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
DMapObj2->Commit(); // запишем объект
DMapObj2->Center();
}
delete DMapObj2;
DMapObj2 = 0;
}
Тип объекта выбирается в диалоге DMapSelectObjectRsc1->ExecuteForMapObj(DMapObj2, true, &medrscparm1)).
Тип можно задать не в диалоге., а вызовом метода CreateObject
Из документации
Каждый объект векторной карты состоит из описания объекта, метрики объекта, семантики
объекта. Описание объекта векторной карты содержит информацию о классификационном коде,
типе локализации, внутреннем коде. Метрика объекта содержит информацию о его плановом
положении. Семантика объекта содержит набор описательных характеристик. Под
классификационным кодом объекта понимается его учетный номер, заданный в файле
классификатора (.RSC). Локализация объекта задает его вид: точечный, линейный, площадной,
подпись, векторный. Внутренний код объекта – это его учетный номер для функций отображения
векторной карты.
Внутренние коды объектов никогда не повторяются. Внутренний код объекта пользователем
изменяться не может и определяется в момент создания нового вида объекта в файле
классификатора. В общем случае в файле классификаторе можно создать несколько объектов с
одинаковым классификационным кодом, но разным типом локализации. Такие объекты будут
иметь разные внутренние коды.
void CreateObject(int site, int kind, bool text, int list, int excode, int local);
Процедура создает новый объект карты. Если параметр site=0, то объект создается на
основной карте в листе с номером list, которая открыта в компоненте QDMapView, иначе site
задает порядковый номер карты в списке открытых пользовательских карт. Объекту карты
устанавливается типом метрики kind (см. KIND в maptype.h), внешним кодом excode и характером
локализации local (см. OBJECT_LOCAL в maptype.h).
void MainForm1::MapObjCreateAction_activated()
{
if ((!ui.DMapView1) || (!ui.DMapPoint1)) return;
if (!ui.DMapView1->GetMapHandle()) return;
if (ui.DMapView1->GetMapFileName().contains("Noginsk.sit") == false)
{
QString message, caption, namebut;
message = WcharToQString(WTEXT("Не открыта базовая карта Noginsk.sit"));
caption = WcharToQString(WTEXT("Создание объекта карты"));
namebut = WcharToQString(WTEXT("Да"));
QMessageBox::critical(0, caption, message, namebut);
return;
}
memset((char *)ui.DMapSelectObjectRsc1->FLocals, 0, sizeof(ui.DMapSelectObjectRsc1->FLocals));
ui.DMapSelectObjectRsc1->FLocals[LOCAL_SQUARE] = 1;
QDMapObj *DMapObj2 = new QDMapObj(centralWidget(), "DMapObj2");
DMapObj2->SetMapView(ui.DMapView1);
DMapObj2->CreateNullObj(0);
MEDRSCPARM medrscparm1;
memset(&medrscparm1, 0, sizeof(medrscparm1));
medrscparm1.Regime = MC_POLYLINE;
if (ui.DMapSelectObjectRsc1->ExecuteForMapObj(DMapObj2, true, &medrscparm1))
{
// Установить метрику созданного объекта
ui.DMapPoint1->SetPlaceIn(PP_PLANE);
ui.DMapPoint1->SetPoint(6205000, 7456000);
DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
ui.DMapPoint1->SetPoint(6204600, 7459010);
DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
ui.DMapPoint1->SetPoint(6203600, 7457860);
DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
ui.DMapPoint1->SetPoint(6207000, 7456020);
DMapObj2->VarMetric->Append(0, ui.DMapPoint1->VarMapPoint);
DMapObj2->Commit(); // запишем объект
DMapObj2->Center();
}
delete DMapObj2;
DMapObj2 = 0;
}
Тип объекта выбирается в диалоге DMapSelectObjectRsc1->ExecuteForMapObj(DMapObj2, true, &medrscparm1)).
Тип можно задать не в диалоге., а вызовом метода CreateObject
Из документации
Каждый объект векторной карты состоит из описания объекта, метрики объекта, семантики
объекта. Описание объекта векторной карты содержит информацию о классификационном коде,
типе локализации, внутреннем коде. Метрика объекта содержит информацию о его плановом
положении. Семантика объекта содержит набор описательных характеристик. Под
классификационным кодом объекта понимается его учетный номер, заданный в файле
классификатора (.RSC). Локализация объекта задает его вид: точечный, линейный, площадной,
подпись, векторный. Внутренний код объекта – это его учетный номер для функций отображения
векторной карты.
Внутренние коды объектов никогда не повторяются. Внутренний код объекта пользователем
изменяться не может и определяется в момент создания нового вида объекта в файле
классификатора. В общем случае в файле классификаторе можно создать несколько объектов с
одинаковым классификационным кодом, но разным типом локализации. Такие объекты будут
иметь разные внутренние коды.
void CreateObject(int site, int kind, bool text, int list, int excode, int local);
Процедура создает новый объект карты. Если параметр site=0, то объект создается на
основной карте в листе с номером list, которая открыта в компоненте QDMapView, иначе site
задает порядковый номер карты в списке открытых пользовательских карт. Объекту карты
устанавливается типом метрики kind (см. KIND в maptype.h), внешним кодом excode и характером
локализации local (см. OBJECT_LOCAL в maptype.h).