Здравствуйте, имеется основная карта и слой, подготовленный для создания графа дорог, где присутствуют только нужные объекты, которые нужно выделить и запустить диалог создания графа.
Пытаюсь программно создать граф через встроенный в netapi диалог:
Выделяет все 7387 объектов на нужном слое (в Панораме столько же), а вот граф строит по основной карте, огромный такой получается, никчемный.
vMap - это написанное на чистом mapapi отображение карты, аналог MapView.
Кстати, а как подсветить выделенные объекты?
Поскольку отображение карты я делаю сам в paintEvent своей функцией DrawContents и у меня там предусмотренна ссылка на выделенный и мигающий объект, который вызовом mapDrawImageMapObject отображается разными цветами.
Потом весь буфер вывожу через mapViewImageToXImage.
Получается надо все выделенные объекты занести в отдельный список и отобразить аналогично одиночно выделяемому в DrawContents ?
Или есть какая-то функция, которая выставит какой-нибудь флаг для этих объектов и они сами будут отображаться малиновым, как в Панораме?
Пытаюсь программно создать граф через встроенный в netapi диалог:
| Код |
|---|
void MainWindow::makeNetGraph()
{
//текущий из списка SIT-ов карты
int siteIdx=ui->lwSites->currentRow();
if (siteIdx==-1){
QMessageBox::warning(this,"Внимание","Не выбран слой карты");
return;
}
HSELECT select;
HSITE site;
long int res;
//узнать HSITE по номеру
site=mapGetSiteIdent(vMap->mapHandle(),siteIdx);
//контекст поиска на SIT-е
select = mapCreateSiteSelectContext(vMap->mapHandle(),site);
//все объекты
mapSelectLayer(select, -1, 1);
mapSelectObject(select, -1, 1);
//искать
res=mapSetSiteSeekSelect(vMap->mapHandle(),site,select);
if (res){
//для контроля, сколько выбрано объектов
int count=mapSeekSelectObjectCount(vMap->mapHandle(),select);
QMessageBox::information(this,"Выбор",QString("Выбрано %1 объектов").arg(count));
if (count) {
//открыть диалог построения графа дорог
TASKPARMEX param;
param.Handle = (HWND)vMap->winId();
param.Handle = (HWND)winId();
HSITE gsite=onCreateNetDlg(vMap->mapHandle(),¶m);
}
}
mapDeleteSelectContext(select);
} |
vMap - это написанное на чистом mapapi отображение карты, аналог MapView.
Кстати, а как подсветить выделенные объекты?
Поскольку отображение карты я делаю сам в paintEvent своей функцией DrawContents и у меня там предусмотренна ссылка на выделенный и мигающий объект, который вызовом mapDrawImageMapObject отображается разными цветами.
Потом весь буфер вывожу через mapViewImageToXImage.
Получается надо все выделенные объекты занести в отдельный список и отобразить аналогично одиночно выделяемому в DrawContents ?
Или есть какая-то функция, которая выставит какой-нибудь флаг для этих объектов и они сами будут отображаться малиновым, как в Панораме?
Изменено: - 19.03.2025 06:54:28