Добрый день.
Используем ГИС Конструктор для Qt Designer x64 (версия 11.10.0), ОС Astra Linux.
На карте нанесено 2 объекта. Берем габариты карты и ищем все объекты. Результат поиска один объект.
Код для воспроизведения:
Используем ГИС Конструктор для Qt Designer x64 (версия 11.10.0), ОС Astra Linux.
На карте нанесено 2 объекта. Берем габариты карты и ищем все объекты. Результат поиска один объект.
Код для воспроизведения:
Код |
---|
#include <QString> #include <QDebug> #include <QImage> #include "mapapi.h" #include "sitapi.h" #include "rscapi.h" #include "mapcreat.h" #include "maptype.h" int main() { qDebug() << "MapApi " << mapGetMapAccessVer sion(); QString siteName("/tmp/searchTest.sitx"); QString rscName("/usr/Operator11/operator.rsc"); CREATESITEUN cs; memset((void*) &cs, 0, sizeof(cs)); cs.Length = sizeof(CREATESITEUN); cs.EllipsoideKind = 9; cs.MapType = 16; HMAP hsite = mapCreateSiteUn((const WCHAR*) siteName.constData(), (const WCHAR*) rscName.constData(), &cs); mapSetRealShowScale(hsite, mapScaleToRoundScaleEx(hsite,200000.)); if (hsite !=0) { double x = 6170046; double y = 7409328; HOBJ hobj = mapCreateSiteObject(hsite, hsite, IDDOUBLE2, 0); if (mapRegisterObject(hobj, 2, 1) != 0) { int size = 3000; mapAppendPointPlane(hobj,x,y,0); mapAppendPointPlane(hobj,x - size,y,0); mapAppendPointPlane(hobj,x - size,y + size,0); mapAppendPointPlane(hobj,x, y + size,0); mapAppendPointPlane(hobj,x,y,0); mapCommitObject(hobj); } else { qDebug() << "No sign 1"; } mapFreeObject(hobj); hobj = mapCreateSiteObject(hsite, hsite, IDDOUBLE2, 0); if (mapRegisterObject(hobj, 713230011 ,3) != 0) { QString text = "text"; mapPutTextUn(hobj,(const WCHAR*)text.constData() , 0); mapAppendPointPlane(hobj,x + 3500,y + 3500,0); mapAppendPointPlane(hobj,x + 4000,y + 4000,0); mapCommitObject(hobj); } else { qDebug() << "No sign 2"; } mapFreeObject(hobj); mapCloseData(hsite); hsite = mapOpenAnyData((const WCHAR*) siteName.constData()); mapSetRealShowScale(hsite, mapScaleToRoundScaleEx(hsite,200000.)); DFRAME frame; // габариты карты mapGetTotalBorder(hsite, &frame, PP_PLANE); HSELECT select = mapCreateSiteSelectContext(hsite, hsite); HOBJ result = mapCreateSiteObject(hsite, hsite,IDDOUBLE2, 0L); MAPDFRAME mframe; mframe = frame; long rc = mapWhatObjectBySelect(hsite,result, &mframe,select, WO_FIRST, PP_PLANE); qDebug() << mapObjectKey(result); // нашли первый знак if(rc) { rc = mapWhatObjectBySelect(hsite,result, &mframe,select, WO_NEXT, PP_PLANE); // если раскомментировать то второй знак будет найден // rc = mapWhatObjectBySelect(hsite,result, &mframe,select, WO_BACK, PP_PLANE); if(rc) { qDebug() << mapObjectKey(result); // нашли подпись } else { qDebug() << "no second sign"; } } mapFreeObject(result); mapCloseData(hsite); } else { qDebug() << "Wrong site"; } } |