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

Александр Савелов (Все сообщения пользователя)

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

Страницы: Пред. 1 ... 8 9 10 11 12 13 14 15 16 17 18 ... 53 След.
Вопрос по работе с классификатором и Iml-бибилиотеками
 
Здравствуйте!

Предлагаю попробовать следующие варианты:
- подготовить маленький автономный пример Qt-плагина, который Вы создаете, чтобы мы могли повторить у себя данное поведение;
- выполнить отладку целого приложения с помощью утилиты strace и проанализировать системные вызовы на предмет поиска iml-библиотеки:[CODE]sudo strace -f <имя_приложения> &> /tmp/strace.log[/CODE]
Вопрос по работе с классификатором и Iml-бибилиотеками
 
Здравствуйте!

Функции MAPAPI используются одинаково как из приложения, так и из библиотеки.
Дополнительно привожу последовательность, в которой ГИС-ядро производит поиск библиотек iml при открытии карты :
- рядом с открываемым файлом классификатора;
- в каталоге, где хранятся общие классификаторы, установленным с помощью функции mapSetCommonRscPath (mapapi.h):
[CODE] // Установить путь к общим файлам классификаторам (RSC)
 // При ошибке возвращает ноль

_MAPIMP const char* _MAPAPI mapSetCommonRscPath(const char *rscpath);
_MAPIMP long int _MAPAPI mapSetCommonRscPathUn(const WCHAR *rscpath);[/CODE]- по пути приложения, установленным с помощью функции mapSetCommonRscPath (mapapi.h):
[CODE] // Установить/Запросить путь к директории приложения, где
 // располагаются вспомогательные файлы для функционирования
 // ГИС-ядра (библиотеки ядра, библиотеки отрисовки программируемых знаков *.iml,
 // файлы базы данных epsg.*, wmslist_xx.xml, xml-схемы и другие файлы)
 // Рекомендуется устанавливать при запуске приложения

_MAPIMP void _MAPAPI mapSetPathShellUn(const WCHAR *path);
_MAPIMP void _MAPAPI mapGetPathShellUn(WCHAR *path, long int size);
_MAPIMP const WCHAR * _MAPAPI mapGetPathShellUnicode();

_MAPIMP void _MAPAPI mapSetPathShell(const char *path);
_MAPIMP const char* _MAPAPI mapGetPathShell();
_MAPIMP void _MAPAPI mapGetPathShellEx(char *path, long int size);[/CODE]
В каких библиотеках находятся определения функций?
 
Здравствуйте!

Данное поведение связано с тем, что функция wcsncpy собрана в составе библиотеки mapacces с входными параметрами типа wchar_t.
В Вашем приложении используется тип WCHAR, который в данном случае является синонимом unsigned short.

Данное объявление реализовано в mapsyst.h:
[CODE]#ifdef BUILD_DLL
 // С BUILD_DLL транслируются только библиотеки ядра
 // вместе с опцией компилятору -fshort-wchar, что
 // означает размер wchar_t равен 2 байтам
 typedef wchar_t  WCHAR;
#else
 typedef WORD     WCHAR;
#endif[/CODE]Для того, чтобы в Вашем приложении так же использовался тип wchar_t, необходимо добавить при сборке компилятору флаги -fshort-wchar и -DBUILD_DLL.
В качестве примера привожу Makefile для iml-библиотеки rscarmy (исходные тексты доступны в инсталляции ГИС Конструктор 12 с нашего сайта: [URL=https://gisinfo.ru/download/download_linux.htm#5]https://gisinfo.ru/download/download_linux.htm#5[/URL]):
[CODE]MAKE= make -${MAKEFLAGS}

OBJ =  imlline.o imlsemn.o imlserv.o imlsquare.o \
      rscarmy.o imlmain.o armydop.o semmain.o semkey.o

CPP =   ../imlcomm/imlline.cpp ../imlcomm/imlsemn.cpp ../imlcomm/imlserv.cpp ../imlcomm/imlsquare.cpp \
      rscarmy.cpp imlmain.cpp armydop.cpp semmain.cpp semkey.cpp

all:rscarmy.iml

ifeq ($(NAME_OS),MCBC_3.0)
LIBRSCARMY_NAME=rscarmy.iml
else
LIBRSCARMY_NAME=rscarmy.iml64
endif

rscarmy.iml:$(OBJ)
       g++ -shared -o $(LIBRSCARMY_NAME) $(OBJ)

$(OBJ):
       g++ -I../imlcomm -I../. ./include -DSHORT_WCHAR -fshort-wchar -DLINUXAPI -DHIDEMAXMIN -DBUILD_DLL -finput-charset=KOI8-R -fexec-charset=KOI8-R -fPIC -c $(CPP)

save:
       ./save.bat

clean:
       -rm *.o *.a *.iml*[/CODE]
В каких библиотеках находятся определения функций?
 
Здравствуйте!

В данной версии ГИС Конструктор функции SplitThePath и MakeThePath не могут вызываться из состава ГИС-приложения.
Для конвертирования строк из char в WCHAR и обратно можно использовать функции StringToUnicode и UnicodeToString.

Для использования функций SplitThePath и MakeThePath мы можем предложить Вам:
- использовать обновленную версию ГИС Конструктор версии 11 (для получения необходимо написать запрос на нашу почту [URL=mailto:panorama@gisinfo.ru]panorama@gisinfo.ru[/URL]);
- выполнить обновление до ГИС Конструктор версии 12.
При отображении карты возникает перекрытие случайным цветом.
 
Здравствуйте!

Проблема с отображением артефактов в случае, когда ширина отображаемого фрагмента больше ширины экрана, связана с недостаточным размером внутреннего буфера отрисовки.
По умолчанию, буфер выделяется в соответствии с размерами экрана. Чтобы увеличить размеры буфера, необходимо использовать функцию
mapSetMaxScreenImageSize (mapapi.h):
[CODE] // Установить предельные размеры буфера изображения (не влияет на расчет разрешения экрана)
 // Функция должна вызываться до открытия данных
 // Чтобы оставить ширину или высоту без изменения соответствующий параметр
 // должен быть равен 0
 // Если экран компьютера, на котором выполняется программа, имеет большие
 // размеры, то установленные значения будут автоматически увеличены до
 // размеров экрана
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetMaxScreenImageSize(long int width, long int height);[/CODE]
Данную функцию необходимо вызвать до первого открытия карты. Например, для myfirst пример использования может быть таким:
[CODE]MainForm1::MainForm1(QWidget *parent) :
// ...
{
mapSetMaxScreenImageSize(4096, 4096);

// ...
}[/CODE]Попробуйте, пожалуйста, данное решение. Спасибо!
Моргание при перетаскивании мышью карты, Моргание при перетаскивании мышью карты
 
Здравствуйте!

"Мерцание" при скроллировании карты проявляется только при сборке с библиотеками Qt4.
В этом случае можно добавить в конструктор главного окна тестового примера (например, myfirst) или Вашего ГИС-приложения следующую строку:
[CODE]setAttribute(Qt::WA_NoSystemBackground);[/CODE]На примере myfirst:
[CODE]MainForm1::MainForm1(QWidget *parent) :
// ... список инициализации
{
 setAttribute(Qt::WA_NoSystemBackground);

 // ... тело конструктора
}[/CODE]
Обновление версии ГИС Конструктор, Нелегальная копия модуля - libqdmapacces.so
 
Здравствуйте!

[QUOTE]Василий написал:
1. В диалоге Поиска/отображения некорректная фильтрация по объектам(было, оказывается и ранее).   Выбираем sit, а данные для фильтрации от map  -  Изображение . [/QUOTE]
Ошибку повторили - изменения планируем включить в следующую версию ГИС Конструктор.

Спасибо!
Ошибка сегментации при удалении объекта карты
 
Здравствуйте!

Ваши действия по созданию/удалению объекта корректны - в данном случае имеет место ошибка в используемой Вами версии ГИС Конструктор.

Мы можем предложить Вам следующие варианты решения:
- обновление ГИС Конструктор версии 11 (бесплатно);
- обновление ГИС Конструктор до версии 12 (по стоимости обновления).

Для выполнения любого из данных действий напишите, пожалуйста, письмо на нашу почту ([URL=mailto:panorama@gisinfo.ru]panorama@gisinfo.ru[/URL]) с указанием организации и номера лицензионного ключа.

Спасибо!
Моргание при перетаскивании мышью карты, Моргание при перетаскивании мышью карты
 
Здравствуйте!

Проблему с мерцанием изображения карты в ОС Astra Linux SE повторили - сейчас разбираемся, с чем это может быть связано.
На это потребуется дополнительное время - мы сообщим Вам о результатах.

Спасибо!
Ошибка сегментации при удалении объекта карты
 
Здравствуйте!

Не могли бы Вы, пожалуйста, дополнить данный пример на основе Вашего кода, чтобы он приводил к некорректному поведению?

Спасибо!
Страницы: Пред. 1 ... 8 9 10 11 12 13 14 15 16 17 18 ... 53 След.



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

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