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

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

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

Страницы: Пред. 1 ... 12 13 14 15 16 17 18 19 20 21 22 ... 53 След.
Выделение объекта не визульными компонентами. Контроль за границами пользовательской карты, Выделение объекта не визульными компонентами. Контроль за границами пользовательской карты
 
Здравствуйте!

Вы не могли бы, пожалуйста, сделать два скриншота отображения карты ("до" и "после" нанесения объекта), чтобы мы могли лучше представить описываемую Вами проблему. Спасибо!
проблема с mapGetRscSemanticNameByNumber(Un)
 
Здравствуйте!

Да, такое поведение наблюдается - оно связано с тем, что сначала семантики в классификаторе хранились в однобайтовой кодировке (char), после чего добавили возможность хранения семантики в формате WCHAR (кодировка UTF16).
Вместе с этим расширился и максимальный хранимый размер семантики, поэтому в семантике формата WCHAR хранится название длиннее (например,  "Признак цвета объекта" и "Признак цвета условного знака объекта").

В сумме, если Вы пишете новый программный код, то лучше опираться на функцию mapGetRscSemanticNameByNumberUn.
mapCreateSiteUn не работает
 
Здравствуйте!

В данном случае проблема связана с передачей имени файла из QString в функцию MAPAPI:
[CODE]HMAP hMap = mapCreateSiteUn( (WCHAR*)layerName.data(),
                            (WCHAR*)rscName.data(),
                            &crs);[/CODE]Функция QString::data() преобразует символы из внутреннего формата QString (UTF-32) в однобайтовый формат (QChar).
Поскольку тип WCHAR хранит информацию в кодировке UTF16, то для преобразования из QString в WCHAR необходимо воспользоваться функцией QString::utf16().

В дополнение, поскольку время жизни возвращаемой функцией QString::utf16() памяти неизвестно, можно скопировать ее содержимое во временный массив типа WCHAR, который уже использовать потом в MAPAPI-функциях:
[CODE]WCHAR layerNameW[MAX_PATH_LONG]; layerNameW[0] = 0;
WcsCopy(layerNameW, (WCHAR*)(layerName.utf16()), sizeof(layerNameW));[/CODE]
Myfirst and Mapinfo, Myfirst and Mapinfo Scale
 
Здравствуйте!

Вы не могли бы прислать скриншот данного поведения и уточнить функцию, которую перенесли?
QDMapView, QDMapView отображение карты
 
Таких функций не предусмотрено: предполагается, что все, что находится внутри габаритов карты, отображается как единое целое (фон + сами объекты).
Возможно, Вам окажется полезным смежный раздел 3.6.16 "Редактирование объектов" Руководства программиста ГИС Конструктор ([URL=http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf]http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf[/URL]).
Обновление версии ГИС Конструктор, Нелегальная копия модуля - libqdmapacces.so
 
Здравствуйте!

3. Функции mapViewImage и mapViewImageEx вернули в состав ГИС Конструктор. Изменения также войдут в следующую версию - о выходе оповестим Вас в этом топике. Спасибо!
QDMapView, QDMapView отображение карты
 
Здравствуйте!

Фон карты отображается также ГИС-ядром (как и сами объекты карты). При необходимости его можно поменять с помощью функции mapSetBackColor (mapapi.h):
[CODE]// Установить/Запросить цвет фона отображаемой карты
// hmap - идентификатор открытых данных
// color - цвет фона
// При изменении цвета фона необходимо перерисовать весь экран
// При ошибке возвращает 0x0FFFFFF (белый)

_MAPIMP COLORREF _MAPAPI mapSetBackColor(HMAP hmap, COLORREF color);
_MAPIMP COLORREF _MAPAPI mapGetBackColor(HMAP hmap);[/CODE]
Аварийное завершение программы при отрисовке образцов iml-значков
 
Здравствуйте!

Прошу прощения за задержку с ответом.

Отрисовка образца условного знака, использующего iml, с точки зрения программирования ничем не отличается от отрисовки образца обычного знака.
ГИС-ядро само определяет все необходимые параметры отображения исходя из порядкового номера объекта в классификаторе.

Привожу исходный код примера отрисовки iml-знака "Разграничительная линия между батальонами" из классификатора operator.rsc (проверено на текущей версии ГИС Конструктор 12 для ОС Astra Linux SE). Данный пример может быть применен для отрисовки образца любого знака из классификатора.

[CODE]#include <assert.h>
#include <iostream>

#include <QImage>

#include "mapapi.h"

int main()
{
 // Открыть карту
 HMAP mapHandle = mapOpenData("/usr/share/gisdesigner/examples/Data/Специальные\ карты/Оперативная\ обстановка/RedExample/battalion\ red/BattalionRed.sitx");
 assert(mapHandle);

 // Создать объект в памяти
 HOBJ objectHandle = mapCreateObject(mapHandle);
 assert(objectHandle);

 // Прочитать объект с карты
 int listNumber = 1;
 int objectNumber = 101;          // разграничительная линия между батальонами
 HOBJ readObject = mapReadObjectByKey(mapHandle, mapHandle, objectHandle, listNumber, objectNumber);
 assert(readObject);

 // Получить номер объекта в классификаторе
 long rscObjectNumber = mapObjectCode(objectHandle);
 assert(rscObjectNumber);
 std::cerr << "rsc object number: " << rscObjectNumber << std::endl;

 // Получить внешний код объекта в классификаторе
 long objectCode = mapObjectExcode(objectHandle);
 assert(objectCode);
 std::cerr << "object code: " << objectCode << std::endl;

 // Получить классификатор
 HRSC rscHandle = mapGetRscIdent(mapHandle, mapHandle);
 assert(rscHandle);

 // Получить номер функции отображения и параметры из классификатора
 long rscObjectFunctionNumber = mapGetRscObjectFunction(rscHandle, rscObjectNumber);
 assert(rscObjectFunctionNumber);
 std::cerr << "rsc object function number: " << rscObjectFunctionNumber << std::endl;

 const char* rscObjectParameters = mapGetRscObjectParameters(rscHandle, rscObjectNumber);
 assert(rscObjectParameters);

 // Запросить параметры палитры карты (для отображения объекта)
 COLORREF palette[256];
 long colorCount = mapGetSiteColorsCount(mapHandle, mapHandle);
 mapGetSitePalette(mapHandle, mapHandle, palette, colorCount);

 // Выделить память для отрисовки объекта
 const int ICON_SIZE = 32;
 XIMAGEDESC ximageDesc;
 ximageDesc.Width = ICON_SIZE;
 ximageDesc.Height = ICON_SIZE;
 ximageDesc.Depth = 32;
 ximageDesc.CellSize = ximageDesc.Depth / 8;
 ximageDesc.RowSize = ximageDesc.Width * ximageDesc.CellSize;

 char *paintMemory = new char[ximageDesc.Width * ximageDesc.Height * ximageDesc.CellSize];
 ximageDesc.Point = paintMemory;
 assert(paintMemory);

 // Отрисовать образец объекта
 RECT rectDraw;
 rectDraw.left = 0;
 rectDraw.top = 0;
 rectDraw.right = ICON_SIZE;
 rectDraw.bottom = ICON_SIZE;

 const char *objectText = NULL;
 long objectLocal = mapObjectLocal(objectHandle);
 long isPainted = mapPaintExampleObjectByFuncToXImage(mapHandle, &ximageDesc, &rectDraw, rscObjectFunctionNumber,
                                                      rscObjectParameters, colorCount, palette, objectText, objectLocal);
 assert(isPainted);

 // Вывести картинку в файл
 QImage image((uchar*)(ximageDesc.Point), ximageDesc.Width, ximageDesc.Height, QImage::Format_ARGB32);
 image.save("/tmp/out.png");

 mapFreeObject(objectHandle);
 mapCloseData(mapHandle);
 mapCloseMapAccess();

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

1. В диалоге поиска ошибку устранили и поправили - изменения войдут в следующий выпуск ГИС Конструктор.
2. Исправили ошибку нанесения объектов на карту, использующую для хранения координат дискреты (карта Подольска). Изменения также войдут в следующую версию ГИС Конструктор.
В качестве рекомендации использовать для хранения координат в карте метры.
3. Вопрос включения функций mapViewImage, mapViewImageEx в ближайшее время уточним.
4. Данное сообщение является штатным и указывает на то, что отсутствует компонент 3D для ГИС Конструктор - его можно приобрести отдельно.
SetScaleAllMapInWindow, Результат выполнения метода SetScaleAllMapInWindow
 
Здравствуйте!

В функции SetMapLeftTop реализовано поведение, аналогичное прокручиванию карты скролл-барами: если прокручивать "некуда" (карта вся в окне), то перемещения левого верхнего угла карты не производится.
Страницы: Пред. 1 ... 12 13 14 15 16 17 18 19 20 21 22 ... 53 След.



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

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