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

Сергей Геннадьевич (Все сообщения пользователя)

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

Страницы: 1 2 3 След.
Работа c MapAPI в ОС AstraLinux на языке PASCAL
 
Добрый день
Предлагаю небольшой проект для Lazarus, который показывает возможность использования интерфейса MAPAPI в среде Lazarus для программ на языке Pascal.
Функциональность примера: открывает, отображает, масштабирует и закрывает картографические данные.
Использовал Lazarus 1.6.2, операционную систему Astra Linux 1.5, ГИС Конструктор для Qt Designer версии 11.10.x
В приложении – исходные тексты примера.
Работа c MapAPI в ОС AstraLinux на языке PASCAL
 
Здравствуйте!

Предлагаю обратить внимание на ветку по обсуждению Lazarus - среды разработки на Паскале для Linux.
Ссылка - [URL=http://gisweb.ru/forum/messages/forum2/topic3325/message20801/3325#message20801]http://gisweb.ru/forum/messages/forum2/topic3325/message20801/3325#message20801[/URL]
В данной теме я изложил пути адаптации GisToolkit для Lazarus, выложил исходные тексты прикладных задач на Паскале для ГИС Панорамы под Linux как с использованием только MAPAPI-интерфейса, так и с применением PANAPI-интерфейса, описал шаги по настройке принтерно-растрового вида карты в Lazarus.
Lazarus ?, Lazarus и компоненты GIS Toolkit Free
 

Здравствуйте!
   За последний год отечественные производители операционных систем (ОС) Astra Linux, AltLinux начали включать в дистрибутивы среду разработки Lazarus.  

  В продолжении знакомства с программированием прикладных задач в среде Lazarus (Операционная система Astra Linux CE) для ГИС Оператор предлагаю краткий обзор разработки с применением классов TPanTask, TPanWindow, TPanAction. Сначала напомню, что необходимо учитывать:

1.Задача разрабатывалась на базе исходных текстов из архива SDK для ГИС Оператор, который можно скачать по ссылке [URL=http://gisinfo.ru/download?id=131]http://gisinfo.ru/download?id=131[/URL]

2. Структуры и параметры необходимо привести к требованиям 64-битной ОС. Пример:

[CODE]TTASKPARMEX = packed record
Language:int64;    
Resource : int64;    
HelpName : int64;    
IniName  : int64;    
PathShell: int64;    
ApplicationName : int64;    
Handle : int64;    
DocHandle : int64;    
StayOnTop : int64;  
end;[/CODE]

 За образец я взял исходные тексты на C++.

3.При использовании диалогового интерфейса необходимо учитывать последовательность объявления unit. Главное: unit Interfaces должен быть объявлен до unit Forms.

4.Перед началом разработки необходимо сделать “линк”-ссылку на библиотеку ГИС Оператор – libmapacces.so командой: ln –s /usr/Operator11/libmapacces.so /usr/lib/libmapacces.so

Далее для работы необходимо адаптировать классы TPanTask, TPanWindow, TPanAction для работы в Lazarus. В качестве эталона я использовал тексты на С++: pantask.cpp, h, panwin.h, panact.h. Главное, как упоминал выше, необходимо привести структуры и параметры к требованиям 64-битной ОС. В моем случае – это ОС Astra Linux CE (релиз Орел). Опишу главные моменты:

1.В описание TPanWindow необходимо добавить ссылку на функцию-обработчик главной программы:

[CODE]{$IFDEF LINUXAPI} MessageHandler: MSGHANDLER;{$ENDIF}[/CODE]

Описание типа функции представлено ниже:

[CODE]{$IFDEF LINUXAPI} MSGHANDLER = function (hwnd : int64; code : int64; p1 : int64; p2: int64; typemsg: int64) : int64; cdecl;{$ENDIF}[/CODE]

2.Далее в конструкторе класса укажем реальный адрес:

[CODE]{$IFNDEF LINUXAPI}
FHMainWindow := parm.Handle;      
{$ELSE}        
FHMainWindow := 0;        
MessageHandler := MSGHANDLER(aparm.Handle);
{$ENDIF}[/CODE]

3.Для функций класса TPanWindow необходимо для указателей-параметров задавать  преобразование к 64-битной переменной:

[CODE] procedure TPanWindow.SetWindowTitle(const amessage : PChar);
begin  
{$IFDEF LINUXAPI}    
if GetHandle <> 0         then MessageHandler(GetHandle,int64(MT_MAPWINPORT), int64(MWP_SETWINDOWTEXT),int64(amessage),0);  
{$ENDIF}  
end;[/CODE]

4.В функцию добавления кнопки в панель для Lazarus необходимо внести следующие изменения:

[CODE]function TPanTask.InsertButton(panelId : integer ; bmpFace : int64; bmpName : Pchar; command : integer; after : integer): integer;
var  BitmapH : HBITMAP;  
hInst   : HMODULE;
buttonInfo : TBUTTONINFO ;  
res : integer;
begin{$IFDEF LINUXAPI}  
if Assigned(MessageHandler) then   begin    
buttonInfo.Command := command;    
buttonInfo.BitmapIdent := bmpface;    
buttonInfo.Sibling := 0;    
result := MessageHandler(0,  AW_INSERTBUTTON, WPARAM(panelID), LPARAM(@buttonInfo), 0);  
end   else result := 0;
{$ENDIF}
end;[/CODE]

В указанном выше описании я привел основные ньюансы по созданию прикладной задачи в среде Лазарус для Linux.[B] Исходные тексты прилагаются к данной теме. На рисунках представлен результат работы задачи в среде ГИС Оператор под Astra Linux CE.[/B]

Изменено: Сергей Геннадьевич - 27.03.2018 11:47:34
Проблемы с открытием карт в PandroidMini, Не открывается пользовательская карта
 
Скачал "ГИС Панорама Мини для ОС Android". Протестировал на карте Москвы. Карта отображается, изменение масштаба работает, местоположение определяется, трек записывается.
Нет опции выхода из приложения. ОС Андроид 7.1.1
Изменено: Сергей Геннадьевич - 21.12.2017 15:57:10
ГИС "Оператор 12" не открываются карты инсталляции
 
Карта из примера RedExample имеет всего 158 объектов и соответствует масштабу 25 000. Не удовлетворяет условиям только базовый масштаб.
ГИС "Оператор 12" не открываются карты инсталляции
 
Скачал последнюю версию ГИС "Оператор" для силовых структур (версия 12.5.2, для платформы "x64"). При попытке открыть карту из примера RedExample выдается сообщение "Нелегальная копия модуля  - MAPACCES64.DLL". На мой взгляд карты инсталляции должны открываться и без электронного ключа защиты.
Изменено: Сергей Геннадьевич - 21.12.2017 10:54:23
Компонент граф дорог, ГИС Конструктор версия 12, вопросы
 
Скачал последнюю версию, проверил. 3амечание устранено. Спасибо.
По диалогу. У меня не стандартное разрешение 1366 x 663  - в этом проблема. Вопрос снимается.
Изменено: Сергей Геннадьевич - 13.12.2017 16:53:11
использование функции mapViewSelect, прикладная задача для ГИС Панорама12
 
Использую функцию [B]mapSelectSampleByNumber [/B]в версии 12 под Astra Linux. После создания контекста функцией [B]mapCreateSiteSelectContext[/B], вызываю функцию очистки [B]mapClearSample[/B]. Затем пользуюсь функцию [B]mapSelectSampleByNumber[/B]. Пока замечаний нет.
Компонент граф дорог, ГИС Конструктор версия 12, вопросы
 
Здравствуйте!

Собираемся закупать указанный продукт. Скачал для ознакомления  ГИС Конструктор для Qt Designer x64 (версия 12.1.0, Qt 4.8, Qt 5.5, платформа x64, ОС "Astra Linux Special Edition", релиз "Смоленск"). Попробовал протестировать функцию создания графа с диалогом и в бездиалоговом режиме [B]onCreateNetDlgEx[/B]. Что не устраивает:
1.В бездиалоговом режиме отсутствует возможность настройки параметров построения. В частности нет возможности записи семантики в объекты создаваемого графа. Хотелось бы это видеть.
2.Диалог построения графа для Qt5 не читабелен.
3.Открыл карту Подольска, вызвал диалог построения графа, нажал кнопку построить, выдает сообщение: "Нелегальная копия модуля - libqdmapacces.so"
Мне кажется, что на тестовых данных такой ошибки быть не должно.
Отключение вывода ошибок, Отключение вывода ошибок
 
Понадобились тексты mapvecex. Скачал последнюю версию sdk12, обновление для данного проекта от 23.11.2017. В файлах map2.sxf.h, map2sxfex.cpp, mapsorts.cpp, sxf2map.h, sxf2mapex.cpp есть ссылки на экземпляры классов TMapAccess, TMap. Проект не собирается, так как полностью не переведен на MAPAPI.
Страницы: 1 2 3 След.



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

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