Здравствуйте!
Реализовать установку требуемого положения подписи относительно точки привязки можно, выполнив следующие действия:
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); |