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

Масштабирование подписей

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Масштабирование подписей
 
Приветствую!

ГИС Конструктор для Qt Designer x64 (версия 12.1.0), ОС Astra Linux

Столкнулся с проблемой:
Созданный графический объект - подпись (IMGTEXT), при достижении некоторого масштаба перестает сжиматься.
Признаки сжимаемости и масштабируемости установлены так:
mapSetObjectPress(hobj, 0);
mapSetObjectScale(hobj, 1);
При этом габариты подписи, получаемые при помощи mapObjectViewFrameEx уменьшаются.
В результате всего этого, мы видим на экране подпись, которая не должна быть видна, а поиск при попытке выделить эту подпись не возвращает объект (т.к. габариты очень маленькие)

Дополнительно:
mapObjectViewFrameEx игнорирует значения установленные при помощи mapSetObjectPress.

С уважением,
Матвеев П.В.
 
Здравствуйте, Павел!

Уточните, пожалуйста, каким образом Вы производите поиск.
 
Приветствую!

Для поиска использую mapWhatObjectBySelect

С уважением,
Матвеев П.В.
 
Приветствую!

ГИС Конструктор для Qt Designer x64 (версия 12.3.0), ОС Astra Linux

Хотелось бы понять: особенность сжимаемости подписей  (графический объект - подпись (IMGTEXT), при достижении некоторого масштаба перестает сжиматься.), с установленным признаком сжимаемости - это так задумано, или это ошибка?

С уважением,
Матвеев П.В.
 
В классификаторе есть много настроек для отображения объектов.
Например, для управления масштабированием можно указать предельное увеличение и сжатие изображения.
 
Приветствую!

В rscapi эти функции доступны? У меня подпись - графический объект, не из классификатора.

С уважением,
Матвеев П.В.
 
Для работы с объектами классификатора есть, например, такие функции:
Код
  /**************************************************************
  *                                                             *
  *     ФУНКЦИИ УПРАВЛЕНИЯ МАСШТАБИРОВАНИЕМ ОБЪЕКТОВ            *
  *                                                             *
  **************************************************************/

  // Запросить флаг сжатия изображения объекта
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта
  // Возвращает 0 - изображение сжимается, 1 - нет.

_MAPIMP  int _MAPAPI  mapGetRscObjectPressure(HRSC hRsc, long int incode);


  // Установить флаг сжатия изображения объекта
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта
  // flag - флаг сжатия изображения 0 - сжимается, 1 - нет.
  // При ошибке возвращает 0

_MAPIMP  int _MAPAPI  mapSetRscObjectPressure(HRSC hRsc, long int incode,long int flag);

  // Запросить размер максимального сжатия изображения объекта
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта
  // Возвращает коэффмциент максимального сжатия, умноженный на 10.

_MAPIMP  int _MAPAPI  mapGetRscObjectPressLimit(HRSC hRsc, long int incode);

  // Установить размер максимального сжатия изображения объекта
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта
  // presslimit - коэффмциент максимального сжатия, умноженный на 10.
  //              в интервале от 10 до 250)
  // При ошибке возвращает 0

_MAPIMP  int _MAPAPI  mapSetRscObjectPressLimit(HRSC hRsc, long int incode,
                                                 long int presslimit);

  // Запросить флаг масштабирования изображения объекта
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта
  // Возвращает 1 - изображение масштабируется, 0 - нет.

_MAPIMP  int _MAPAPI  mapGetRscObjectScale(HRSC hRsc, long int incode);

  // Установить флаг масштабирования изображения объекта
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта
  // flag - флаг масштабирования изображения 1 - масштабируется, 0 - нет.
  // При ошибке возвращает 0

_MAPIMP  int _MAPAPI  mapSetRscObjectScale(HRSC hRsc, long int incode,long int flag);

  // Запросить размер максимального увеличения изображения объекта
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта
  // Возвращает коэффмциент максимального увеличения, умноженный на 10.

_MAPIMP  int _MAPAPI  mapGetRscObjectScaleLimit(HRSC hRsc, long int incode);

  // Установить размер максимального увеличения изображения объекта
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта
  // scalelimit - коэффмциент максимального сжатия, умноженный на 10.
  //              в интервале от 10 до 250)
  // При ошибке возвращает 0

_MAPIMP  int _MAPAPI  mapSetRscObjectScaleLimit(HRSC hRsc, long int incode,
                                                long int scalelimit);

  // Установить границы видимости объекта на карте (диапазон масштабов
  // видимости объекта на карте
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта (внутренний код в классификаторе)
  // bottom - минимальное значение знаменателя масштаба при котором виден
  //          объект
  // top    - максимальное значение знаменателя масштаба при котором виден
  //          объект
  // При установке значений масштабов они округляются до ближайших
  // значений из таблицы стандартных масштабов с установкой признака "включая"
  // или "исключая" границу (в зависимости от устанавливаемого значения)
  // Например, для значений bottom = 1, top = 199999, объект будет
  // виден в масштабах крупнее 1:200 000 (при увеличении более 200 000),
  // у другого объекта может быть bottom = 200000, top = 1000000 - он
  // будет виден в масштабах 1:200 000 и мельче и может подменять предыдущий
  // объект (вместе они никогда не отобразятся).
  // Но если объектам поставить границы 160000 и 170000 - они приравняются
  // к 200 000 то есть будут одинаковыми.
  // При ошибке возвращает 0

_MAPIMP  int _MAPAPI mapSetRscObjectScaleBorder(HRSC hRsc, long int incode,
                                                long int bottom, long int top);

  // Запросить границы видимости объекта на карте (диапазон масштабов
  // видимости объекта на карте
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта (внутренний код в классификаторе)
  // bottom - минимальное значение знаменателя масштаба при котором виден
  //          объект
  // top    - максимальное значение знаменателя масштаба при котором виден
  //          объект
  // При ошибке возвращает 0

_MAPIMP  int _MAPAPI mapGetRscObjectScaleBorder(HRSC hRsc, long int incode,
                                                long int * bottom, long int * top);

  // Запросить вхождение верхней границы видимости объекта на карте
  // в диапазон видимости
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта (внутренний код в классификаторе)
  // Входит - возвращает 1, иначе 0

 _MAPIMP  int _MAPAPI mapGetRscObjectBotScaleInclude(HRSC hRsc, long int incode);

  // Запросить вхождение нижней границы видимости объекта на карте
  // в диапазон видимости
  // hRsc - идентификатор классификатора карты
  // incode - порядковый номер объекта (внутренний код в классификаторе)
  // Входит - возвращает 1, иначе 0

 _MAPIMP  int _MAPAPI mapGetRscObjectTopScaleInclude(HRSC hRsc, long int incode);
 
Приветствую!

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

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



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

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