На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

gislinux (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » gislinux
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 160 След.
Толщина линии выделения
 
Проверял именно на данной функции:[CODE] // Вывести изображение карты в XImage (массив) и выделить
 // на карте отобранные объекты
 // Описание структуры XIMAGEDESC в maptype.h
 // x,y - координаты левого верхнего угла внутри
 // битовой области XImage для размещения изображения
 // rect - выводимый фрагмент карты
 // select - условия отбора объектов, если равны 0, то применяются
 //          условия обобщенного поиска\выделения (см. mapTotalPaintSelect95).
 // color  - цвет, которым будут выделяться объекты на карте
 // При ошибке в параметрах возвращает ноль

_MAPIMP long int _MAPAPI mapPaintAndSelectToXImage(HMAP hMap, XIMAGEDESC *imagedesc,
                                                   long int x, long int y, RECT *rect,
                                                   HSELECT select, COLORREF color);
[/CODE]
Толщина линии выделения
 
Проверил работу функции [CODE] // Установить толщину линии для отрисовки выделенных на карте
// объектов (при вызове mapPaint95AndSelect и т.п.)
// thick - толщина линии в mkm (из пикселов - PIX2MKM(pixel))
// Возвращает установленное ранее значение

_MAPIMP long int _MAPAPI mapSetSelectLineThick(HMAP hmap, long int thick);
[/CODE]Изменял значение thick согласно описанию [QUOTE] thick - толщина линии в mkm (из пикселов - PIX2MKM(pixel))[/QUOTE]
Замечаний не выявил,толщина линии меняется корректно.
Выделение объектов
 
Предлагаю для площадных и линейных объектов следующий код выделения линией:[CODE] IMGLINE img_obj;
     memset(&img_obj,0,sizeof(IMGLINE));
     img_obj.Color = color;
     img_obj.Thick = PIX2MKM(3);

     PAINTPARM image;
     memset(&image,0,sizeof(PAINTPARM));
     image.Image = IMG_LINE;
     image.Mode  = R2_COPYPEN;
     image.Parm  = (char*)(&img_obj);

     XCONTEXT FxDC;
     memset(&FxDC,0,sizeof(XCONTEXT));
     FxDC.xcDisplay = QX11Info::display();
     FxDC.xcWindow  = win_id;
     FxDC.xcContext = XCreateGC(FxDC.xcDisplay,FxDC.xcWindow,0,NULL);
     FxDC.xcPoint.X = 0;
     FxDC.xcPoint.Y = 0;

     DOUBLEPOINT dp;
     dp.x = top_left_display.x();
     dp.y = top_left_display.y();

     if(!_core->mapViewMapObject(hmap,(HWND)&FxDC,&dp,&image,hobj,PP_PICTURE))
        throw std::runtime_error("Не удалось отрисовать объект");[/CODE]
Переместить графический объект в другой слой
 
Вам должны помочь следующие функции:[CODE] // Переместить объект в цепочке в конец (рисуется над всеми) // 19/02/14
// Объекту присваивается признак "выше всех"
// info  - идентификатор объекта карты в памяти
// Возвращает новый последовательный номер объекта на карте - mapGetObjectNumber()
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapUpdateObjectUp(HOBJ info);

// Переместить объект в цепочке в начало (рисуется под всеми)     // 19/02/14
// Объекту присваивается признак "ниже всех"
// info  - идентификатор объекта карты в памяти
// Возвращает новый последовательный номер объекта на карте - mapGetObjectNumber()
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapUpdateObjectDown(HOBJ info);

// Сбросить признаки "выше всех" и "ниже всех" в объекте          // 19/02/14
// Положение объекта в соответствии с его слоем и локализацией
// изменится после сортировки карты
// info  - идентификатор объекта карты в памяти
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapUpdateObjectNormal(HOBJ info);

// Запросить флаг размещения объекта (2 - над всеми, 3 - под всеми, 1 - не задано)
// info  - идентификатор объекта карты в памяти
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapObjectUpDownState(HOBJ info);         // 28/04/16
[/CODE]
Движущиеся объекты на карте, Слишком медленная отрисовка движущихся объектов
 
Пожалуйста, скачайте актуальную версию ГИС Конструктор по ссылке: [URL=http://gisinfo.ru/download_linux?id=56]http://gisinfo.ru/download_linux?id=56[/URL] Обратите внимание на пример в SDK: ./Qt5/MapImage, он и представляет реализацию запрашиваемого функционала.
Странное рисование объектов из operator.rsc, на целевой машине
 
Объекты классификатора operator.rsc для отрисовки используют данные IML-библиотеки. Их присутствие в инсталляции необходимо вместе с классификатором operator.rsc.
Запуск ГИС Оператора, Запуск ГИС Оператора сразу с запуском протокола обмена
 
Для запуска ГИС Оператор с активированным протоколом обмена необходимо в файл запуска /usr/Operator11/startgis.bat добавить ключ "-p".
Таким образом строка запуска будет иметь вид:
/usr/Operator11/operator.exe -p
Переоткрыть основную карту, И подключить к ней существующую пользовательскую
 
Для сохранения текущего состояния локальной карты на диск Вам поможет функция:[CODE] // Сохранить текущее состояние карты на диск
 // hMap - идентификатор основной векторной карты
 // hSite - идентификатор открытой пользовательской карты
 // force - сохранять всегда, если не 0, или только при редактировании
 // При выполнении редактирования карты с отключенным
 // журналом транзакций состояние карты в памяти и
 // на диске может отличаться, в этом случае можно
 // вызвать mapSaveSite

_MAPIMP void _MAPAPI mapSaveSite(HMAP hMap, HSITE hSite, long int force);
[/CODE]Далее при следующем сеансе работы с hMap Вы сможете добавить карту к базовой функциями:[CODE] // Открыть пользовательскую карту в заданном районе работ
 // (добавить в цепочку пользовательских карт (в обстановку))
 // Возвращает идентификатор открытой пользовательской карты
 // hMap     - идентификатор открытой карты
 // sitename - имя открываемого файла пользовательской карты
 // mode     - режим чтения/записи (GENERIC_READ, GENERIC_WRITE
 //            или 0) GENERIC_READ - все данные только на чтение
 // transform - признак трансформирования пользовательской карты
 //             к ранее открытым данным (если проекции разные):
 //             0 - не трансформировать данные (преобразовывать "на лету"),
 //             1 - трансформировать данные при открытии и сохранить карту
 //                 в новой проекции,
 //            -1 - задать вопрос пользователю.
 // В серверной версии (-1) обрабатывается, как 0.
 // password - пароль доступа к данным из которого формируется 256-битный код
 //            для шифрования данных (при утрате данные не восстанавливаются)
 // size     - длина пароля в байтах !!!
 // Передача пароля необходима, если при создании карты он был указан.
 // Если пароль не передан, а он был указан при создании,
 // то автоматически вызывается диалог scnGetMapPassword из mapscena.dll (gisdlgs.dll)
 // Если выдача сообщений запрещена (mapIsMessageEnable()), то диалог
 // не вызывается, а при отсутствии пароля происходит отказ открытия данных
 // При ошибке возвращает ноль

_MAPIMP HSITE _MAPAPI mapOpenSiteForMapPro(HMAP hMap,
                                          const WCHAR *sitename,
                                          long int mode,
                                          long int transform,
                                          const WCHAR *password, long int size);

_MAPIMP HSITE _MAPAPI mapOpenSiteForMap(HMAP hMap, const char *sitename,
                                 long int mode);

_MAPIMP HSITE _MAPAPI mapOpenSiteForMapEx(HMAP hMap, const char *sitename,
                                         long int mode, long int transform);

_MAPIMP HSITE _MAPAPI mapOpenSiteForMapUn(HMAP hMap, const WCHAR *sitename,
                                         long int mode);

_MAPIMP HSITE _MAPAPI mapOpenSiteForMapExUn(HMAP hMap, const WCHAR *sitename,
                                           long int mode, long int transform);
[/CODE]Удалить карту и все данные Вы сможете функцией:[CODE] // Удалить пользовательскую карту (все файлы данных)
 // hMap - идентификатор открытой карты
 // number - номер пользовательской карты в цепочке от 1 до числа карт
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapDeleteSite(HMAP hMap, long int number);
[/CODE]
Нанесение объекта из классификатора на карту, Нанесение объектов из RSC классификатора
 
HOBJ можно получить с помощью функций:[CODE] // Cоздать пустой объект векторной карты
 // (создание подобъекта - см. редактирование метрики)
 // По умолчанию метрика FLOAT 2-ух мерная
 // hmap - идентификатор открытых данных
 // sheetnumber - номер листа в котором будет расположен
 // kind - тип создаваемой метрики, описан в maptype.h
 // создаваемый объект
 // text - признак метрики с текстом (объекты типа "подпись")
 // (устанавливается автоматически при вызове mapPutText(...))
 // После вызова функций типа What...() и Seek...() все параметры
 // полученного объекта могут измениться (text,kind,list и т.п.)
 // При ошибке возвращает ноль
_MAPIMP HOBJ _MAPAPI mapCreateObject(HMAP hMap, long int sheetnumber = 1,
                                    long int kind = IDDOUBLE2,
                                    long int text = 0);

 // Cоздать пустой объект пользовательской карты (обстановки)
 // (создание подобъекта - см. редактирование метрики объекта)
 // По умолчанию метрика 2-ух мерная
 // hMap  - идентификатор открытой основной карты
 // hSite - идентификатор открытой пользовательской карты
 //         в которой будет расположен создаваемый объект
 // text  - признак метрики с текстом (объекты типа "подпись")
 // kind  - формат метрики
 // После вызова функций типа What...() и Seek...() все параметры
 // полученного объекта могут измениться (text,kind и т.п.)
 // Для каждого полученного и больше не используемого
 // идентификатора HOBJ необходим вызов функции FreeObject()
 // При ошибке возвращает ноль
_MAPIMP HOBJ _MAPAPI mapCreateSiteObject(HMAP hMap, HSITE hSite,
                                        long int kind = IDDOUBLE2,
                                        long int text = 0);[/CODE]Если Вы работаете на WINAPI, пожалуйста задавайте вопросы в соответствующем разделе форума [URL=http://www.gisweb.ru/forum/forum2/]http://www.gisweb.ru/forum/forum2/[/URL]
Сборка Си-компилятором, Feature request : Pure C, не C++
 
ГИС Конструктор для Qt Designer x64 Free в целом и libqdmapacces.so в частности собраны компилятором C++, так как основаны на классах. Поэтому на каждом этапе сборки ГИС-приложения целесообразно применять С++-компилятор.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 160 След.



© КБ Панорама, 1991-2020

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности