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

Расстояние между подписью и точкой привязки

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Расстояние между подписью и точкой привязки
 
Расположением текста относительно точки привязки можно менять функциями mapPutTextHorizontalAlign и mapPutTextVerticalAlign. А от чего зависит расстояние между подписью и точкой привязки при выравнивании, например, сверху справа? Как можно изменить это расстояние?

Заранее спасибо.
 
Добрый день!

Для изменения положения подписи можно создать отдельный подобъект, в котором будет располагаться подпись, и изменять положение данного подобъекта.
Более подробно реализация данного поведения описана в данном сообщении форума: https://gisweb.ru/forum/messages/forum7/topic12156/message92077/12156-programmnoe-izmenenie-tochki-p...
 
Добрый день!

Как я понимаю, вы предлагаете менять положение подписи, задавая координаты на карте. А можно ли как-то задавать положение относительно точки привязки в пикселах?
 

Здравствуйте!

Реализовать установку требуемого положения подписи относительно точки привязки можно, выполнив следующие действия:

1. Установить базовый масштаб карты с помощью функции mapSetRealShowScale() (mapapi.h):

Код
// Установить точный масштаб отображения карты
// Возвращает значение знаменателя масштаба
_MAPIMP double _MAPAPI mapSetRealShowScale(HMAP hMap, double scale);

2. Запросить координаты точки привязки в пикселях в базовом масштабе карты с помощью функции mapPlaneToPicture() (mapapi.h):

Код
// Преобразование из метров на местности в пикселы на 
// изображении 
// hmap - идентификатор открытых данных 
// x,y  - преобразуемые координаты
_MAPIMP void _MAPAPI mapPlaneToPicture(HMAP hmap, double *x, double *y);

3. Рассчитать координаты первой точки подобъекта, к которому привязана подпись, в пикселях с учетом необходимого смещения;

4. Пересчитать координаты первой точки подобъекта в систему координат карты (в метрах) с помощью функции mapPictureToPlane() (mapapi.h) и создать подобъект c помощью функции mapCreateSubject() (mapapi.h):

Код
// Преобразование из пикселов в изображении в координаты на местности в метрах 
// hmap - идентификатор открытых данных 
// x,y  - преобразуемые координаты
_MAPIMP void _MAPAPI mapPictureToPlane(HMAP hmap, double *x, double *y);
Код
// Создать дескриптор подобъекта в записи метрики 
// В конец записи добавляется дескриптор подобъекта с нулевым числом точек 
// Если предыдущий подобъект не содержит ни одной точки, то новый подобъект не 
// будет создан // info    - идентификатор объекта карты в памяти 
// Возвращает номер созданного подобъекта (с 1) 
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapCreateSubject(HOBJ info);

5. Добавить подпись к подобъекту с помощью функции mapPutTextUn() (mapapi.h):

 

Код
// Установить новое содержание текстовой строки  
// info   - идентификатор объекта карты в памяти  
// text   - адрес новой строки UNICODE UTF-16  
// Если текст содержит латинские символы от 0x0001 до 0x007E  
// или кириллицу (0x0400 - 0x045F) и на компьютере  
// установлена русская Windows (OEM 866 или 1251), то текст  
// автоматически запишется в ANSI,  
// иначе новое значение сохранится в UTF-16  
// subject - номер подобъекта  
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapPutTextUn(HOBJ info, const WCHAR * text, long int subject);

Изменено: Эдуард Портнягин - 07.10.2022 10:49:21
Страницы: 1
Читают тему (гостей: 1)



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

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