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

Один объект на пользовательской карте нужно рисовать поверх остальных. Как этого добиться.

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Один объект на пользовательской карте нужно рисовать поверх остальных. Как этого добиться., Один объект на пользовательской карте нужно рисовать поверх остальных. Как этого добиться.
 
На пользовательской карту, созданной на основе region.sit, рисую графические объекты. Они все рисуются, обновляются в разное время и в разной последовательности.
Один из них всегда должен рисоваться поверх остальных.  Выбираю слой пользовательской карты с наибольшим порядком вывода , т е в слой 8 Дорожная сеть (mapGetRscSegmentOrder=8) и рисую на нем этот объект, остальные рисую в слой 6 Административный район (mapGetRscSegmentOrder=6).  Затем общий Repaint (mapview->Repaint) . Но это не решило проблему.
Вопрос - в чем проблема ? Или нужно было еще одну пользовательскую карту создавать на основе region.rsc , добавлять ее к основной последней и рисовать в нее этот объект?
Если можно, пример приведите.
 
Цитата
Елена написал:
Или нужно было еще одну пользовательскую карту создавать на основе region.rsc , добавлять ее к основной последней и рисовать в нее этот объект?
Так точно сработает.

Цитата
Елена написал:
Выбираю слой пользовательской карты с наибольшим порядком вывода , т е в слой 8 Дорожная сеть (mapGetRscSegmentOrder=8) и рисую на нем этот объект, остальные рисую в слой 6 Административный район (mapGetRscSegmentOrder=6)
А это разве не относится к слоям классификатора и к объектам, входящим в эти слои. Ну в смысле а как у вас получается рисовать произвольные объекты в слои классификатора?
Мне кажется mapGetRscSegmentOrder есть смысл использовать только чтобы понять, в каком порядке объекты из одного слоя классификатора отрисуются по отношению к объектам из другого слоя классификатора в рамках одного пользовательского слоя (sit)
Изменено: Владимир Егоров - 21.05.2019 13:07:05
 
То есть вы считаете, что нужно создавать 2 пользовательские карты?  Я пока создаю одну, на основе region.rsc. Как и region.rsc, она имеет 11 слоев. Я посчитала, что в ней объекты будут прорисовываться согласно порядку вывода слоев, как и в классификаторе. Вы же, когда рисуете на своей пользовательской карте, номер слоя указываете? Я посмотрела порядок слоев в соответствующем rsc и попыталась взять оттуда номер слоя верхний, как я посчитала, и под ним.
А если создать еще одну пользовательскую карту, то в ее любой выводить объект?
 
Я на пользовательской карте ничего не рисую.
Я могу создать на пользовательской карте некий объект (по ключу или коду+локализации) из классификатора (относящийся к некоторому слою классификатора), и он будет отрисован при вызове mapPainToXImage.
Объект создаётся последовательностью вызовов mapCreateSiteObject/mapRegisterObject/mapCommitObject (в точности названия функций сейчас не напишу)

Если же речь идёт о каком-то другом способе именно отрисовки объекта, да ещё и с указанием слоя классификатора, то я так не умею и в таком методе не разбираюсь.
Изменено: Владимир Егоров - 22.05.2019 22:47:07
 
Здравствуйте!

Для того, чтобы один объект отрисовывался поверх всех остальных, можно использовать один из двух подходов:

- использовать функцию mapUpdateObjectUp (mapapi.h):
Код
// Переместить объект в цепочке в конец (рисуется над всеми)
// Объекту присваивается признак "выше всех"
// info - идентификатор объекта карты в памяти
// Возвращает новый последовательный номер объекта на карте - mapGetObjectNumber()
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapUpdateObjectUp(HOBJ info);

- как описано выше, создать отдельную пользовательскую карту (например, временную) и нанести на нее объект.
 Про работу с пользовательскими картами можно посмотреть в разделе 3.6.3 "Открытие и создание пользовательских карт" Руководства программиста (http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf).
 

-

Изменено: Елена - 28.05.2019 16:36:43
Страницы: 1
Читают тему (гостей: 1)



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

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