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

Проблема выделения объектов

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1 2 3 След.
RSS
Проблема выделения объектов, Не выделяются точечные объекты и векторные объекты малых размеров.
 
Добрый день!
Использую ГИС Конструктор Free для Qt Designer x64 (версия 12, Qt 4, Qt 5, для платформы "x64", ОС "Astra Linux Special Edition", релиз "Смоленск" 1,5;
разработка приложений без ограничения распространения, не включает компонент отображения 3D-модели - от 2018-05-28).
Пытаюсь выделить объекты по клику мыши, но выделяются объекты только больших размеров. Хотя в предыдущей версии(ГИС Конструктор  для Qt Designer x64 (версия 12, Qt 4, Qt 5, для платформы "x64", ОС "Astra Linux Special Edition", релиз "Смоленск" 1,5;(с ключом) от 2017-09-14) все было нормально.

Подскажите пожалуйста, что еще надо сделать. Использую компоненты QDMapObj и QDMapFind.
Мой код:
               ui.frame_Find->SetActive(false);
               ui.frame_obj->SetStyle(QDMapObj::OS_NORMAL);

               if(ui.frame_obj->GetLocal()==LOCAL_POINT || ui.frame_obj->GetLocal()==LOCAL_TITLE)
                   ui.frame_obj->SetStyleSelect(IMG_OBJECT);
               else
                   ui.frame_obj->SetStyleSelect(IMG_LINE);

               ui.frame_obj->SetColorImage(0x00ffff);
               ui.frame_Find->SetMapObj(ui.frame_obj);
               ui.frame_Find->SetFindPoint (true);
               ui.frame->GetMapLeftTop(&valx, &valy);
               ui.frame_Find->SetCoordPoint((double)(valx + x), (double)(valy + y));
               ui.frame_Find->SetRadius(3);
               ui.frame_Find->SetActive(true);

               if (ui.frame_Find->First())
               {
                       setToolText(ui.frame_obj,x,y);//Функция выводит сообщение об объекте
                 ui.frame_obj->SetStyle(QDMapObj::OS_SELECT);
               }
С уважением, Елена.
 
Приветствую!

Проблема именно в выделении или поиск в точке ничего не находит?

С уважением,Матвеев П.В.
Изменено: Павел Матвеев - 04.09.2018 14:13:51 (уточнение вопроса)
 
Здравствуйте. Спасибо, что ответили. Да, проблема именно в выделении. Информацию об объекте я получаю.
С уважением, Елена.
 
Здравствуйте!

Функция SetRadius устанавливает радиус области поиска в пикселах.
Поиск по карте осуществляется в метрах, поэтому размер области поиска также будет зависеть от разрешения экрана, которое Вы установили в программе.
Запросить и установить разрешение экрана можно с помощью семейства функций mapGetScreenPrecision / mapSetScreenPrecision (mapapi.h):
Код
// Запросить/Установить точность текущего режима экрана в точках
// на метр (1000 - 100000). При установке возвращает старое
// значение и пересчитывает коэффициент масштабирования экрана
// При ошибке возвращает 0

_MAPIMP long int _MAPAPI mapGetScreenPrecision();
_MAPIMP double _MAPAPI mapGetHorizontalScreenPrecision();
_MAPIMP double _MAPAPI mapGetVerticalScreenPrecision();
_MAPIMP long int _MAPAPI mapSetScreenPrecision(long int value);
_MAPIMP void _MAPAPI mapSetScreenPrecisionEx(double valueHor, double valueVer);
Примечание: данные функции должны вызываться до первого открытия данных в программе.
 
Приветствую!

Как было сказано выше: проблема не в поиске, а в отрисовке выделенного объекта)

С уважением,
Матвеев П.В.
 
Приветствую. Изменение разрешения экрана не повлияло на выделение объектов, по-прежнему не выделяются точечные объекты и векторные объекты малых размеров. Но ведь на старой версии ГИС Конструктор все было нормально.
 
Приветствую!

Посмотрел на изменения в QDMapObj::Paint... раньше в параметры для отрисовки объектов (кроме линейных и площадных) для PAINTPARM aImage в качестве значения Parm устанавливался цвет, а в новых версиях устанавливаются параметры объекта (IMGOBJECT). Возможно это как-то повлияло на результат выполнения mapDrawImageMapObject

У себя для отрисовки выделенных объектов использую mapPaintMapObjectToDib и тоже в качестве PAINTPARM.Parm устанавливаю цвет. И отрисовка выделения работает без нареканий.

С уважением,
Матвеев П.В.
 
Добрый день.
Благодарю за ответ. Но мне не совсем понятно, что надо сделать, чтобы выделялись объекты с применением компонентов. В отладке я вижу, что переменная VarStyleSelect = IMG_OBJECT, а функция Paint (..) работает так, как буд-то VarStyleSelect ==SEL_LINE).
С уважением Елена.
 
Добрый день. Иногда при попытке выделить объект у меня получается вот такая картинка. Что я не так делаю. Пожалуйста, подскажите.
С уважением, Елена.
 
Приветствую!

Ну вариантов не очень много.
1. Ждать ответа разработчиков
2. Вернуть в QDMapObj::Paint  установку цвета в PAINTPARM.Parm вместо того что там сейчас,  пересобрать библиотеку, проверить что все работает (или не работает))

Картинка интересная, но код который указан в первом сообщении наверно к такому результату не должен привести..

С уважением,
Матвеев П.В.
Страницы: 1 2 3 След.
Читают тему (гостей: 1)



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

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