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

Проблема создания подписи на пользовательской карте

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Проблема создания подписи на пользовательской карте
 
Добрый день! Использую следующий продукт: GIS ToolKit Active Free MAPAPIVERSION = 0x0111305, MAPACCESSVERSION = 20160907.

При нанесении подписи на пользовательскую карту она почему-то рисуется на основной карте. Это наблюдается только в Windows, под Astra Linux с использование ГИС Конструктора 11-й версии такой проблемы не наблюдается.

Пример кода:
Код
    
    // m_baseMapHandler - хендлер открытой основной карты, m_userMapHandler - пользовательской карты
    HOBJ hObj = mapCreateSiteObject(m_baseMapHandler, m_userMapHandler, IDDOUBLE2, 0);
    if (hObj != 0) {
        mapRegisterDrawObject(hObj, 0, LOCAL_TITLE);

        IMGTEXT textParm;
        memset(&textParm, 0, sizeof(IMGTEXT));
        textParm.Color = RGB(0, 0, 0);
        textParm.BkgndColor = IMGC_TRANSPARENT;
        textParm.ShadowColor = IMGC_TRANSPARENT;
        textParm.Height = 4000;
        textParm.Weight = FW_NORMAL;
        textParm.Outline = 0;
        textParm.Align = FA_MIDDLE;
        textParm.Service = 0;
        textParm.Wide = UNIW_NORMAL;
        textParm.Horizontal = 1;
        textParm.Italic = 0;
        textParm.Underline = 0;
        textParm.StrikeOut = 0;
        textParm.Type = 0;
        textParm.CharSet = RUSSIAN_CHARSET;
        textParm.Flag = 1;
        mapAppendDraw(hObj, IMG_TEXT, reinterpret_cast<const char *>(&textParm));

        mapPutTextUn(hObj, PanoramaUtils::ushortToWChar(QString("any text").utf16()), 0);
        mapPutTextVerticalAlign(hObj, FA_MIDDLE, 0);
        mapPutTextHorizontalAlign(hObj, FA_CENTER, 0);


         // добавление метрики
         .....
         
         auto resCommit = mapCommitObject(hObj);
         Q_ASSERT_X(resCommit != 0, Q_FUNC_INFO, "resCommit");

        
    } else {
        qDebug() << "mapCreateObject error";
    }
Что я делаю не так или как это можно исправить?

Заранее спасибо.
 
Внешне все выглядит нормально. Осталось увидеть как получены m_baseMapHandler и m_userMapHandler и не равны ли они друг другу?
 
Цитата
Andrey Gheleznyakov написал:
Внешне все выглядит нормально. Осталось увидеть как получены m_baseMapHandler и m_userMapHandler и не равны ли они друг другу?
Они друг другу не равны - это я проверял, ну и под астрой нормально отрабатывает.
Получены следующим способом:
Код
// открытие основной карты, mapPath - путь к файлу карты
m_baseMapHandler = mapOpenAnyData(ushortToWChar(mapPath.utf16()), 0, &errcode);

....


// создание и открытие пользовательской карты
CREATESITEUN cs;
memset(&cs, 0, sizeof(cs));
cs.Length = sizeof(CREATESITEUN);
cs.Reserve = 0;
cs.EllipsoideKind = WGS_84;
cs.MapType = MAPTYPE::MERCATOR;
cs.MaterialProjection = MAPPROJECTION::WORLDMERCATOR;

MAPREGISTER map_reg;
LISTREGISTER list_reg;
if (mapGetMapInfo(m_baseMapHandler, 1, &map_reg, &list_reg)) {
    cs.MapType = map_reg.MapType;
    cs.Scale = map_reg.Scale;
    cs.MaterialProjection = map_reg.MaterialProjection;
    cs.FirstMainParallel = map_reg.FirstMainParallel;
    cs.SecondMainParallel = map_reg.SecondMainParallel;
    cs.AxisMeridian = map_reg.AxisMeridian;
    cs.MainPointParallel = map_reg.MainPointParallel;
} else {
    qDebug() << Q_FUNC_INFO << "Не удалось получить информацию о карте";
}

wcscpy(cs.MapName, ushortToWChar(QString("My map – user5").utf16()));
// siteName - путь к создаваемой пользовательской карте, rscFileName - путь к файлу классификатора
m_userMapHandler = mapCreateAndAppendSiteUn(m_baseMapHandler, ushortToWChar(siteName.utf16()),
                                 ushortToWChar(rscFileName.utf16()), &cs);
qDebug() << Q_FUNC_INFO << siteName << mapGetSiteEditFlag(m_baseMapHandler, m_userMapHandler);
mapSetSiteEditFlag(m_baseMapHandler, m_userMapHandler, 1);
qDebug() << Q_FUNC_INFO << siteName << mapGetSiteEditFlag(m_baseMapHandler, m_userMapHandler);
mapSetSiteTransparent(m_baseMapHandler, m_userMapHandler, 100);

mapSetActiveSite(m_baseMapHandler, m_userMapHandler); 


 
К тексту вопросов нет. Чтобы дальше разбираться, просьба попробовать этот же текст с текущей 11-й версией библиотек ГИС-ядра http://gisinfo.ru/download?id=101
 
Цитата
Andrey Gheleznyakov написал:
К тексту вопросов нет. Чтобы дальше разбираться, просьба попробовать этот же текст с текущей 11-й версией библиотек ГИС-ядра  http://gisinfo.ru/download?id=101
Спасибо. Если будет время, проверю с этой версией. На своей версии получилось обойти проблему путем установки флага запрета редактирования основной карты перед нанесением текста на пользовательской карте:
Код
mapSetSiteEditFlag(m_baseMapHandler, m_baseMapHandler, 0);
Страницы: 1
Читают тему (гостей: 1)



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

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