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

Видимость слоев карты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 3 След.
RSS
Видимость слоев карты, Управление отображением слоев карты
 
Приветствую. Вопрос такой:

Открываю карту формата SIT (я так понимаю в ней много листов) функцией map = mapOpenData(lpszPathName, GENERIC_READ);.
Функция mapGetLayerCount(map); возвращает количество слоев карты равное 22.

Вопрос: как отключить видимость (отображение) определенного слоя (слоев)?

Допустим для 10 версии Панорамы... если это имеет значение.
 
Юрий, Ваш вопрос и уточняющая информация похожа на фразу "кто стучится в дверь мою, видишь дома нет никто"
-------
Ответ
1. в карте нет слоёв, слоя есть в классификаторе.
2. непонятно где и как Вы работаете... открываете карту mapOpenData редствами GisToolKit или средствами
Цитата
Допустим для 10 версии Панорамы
3. где Вы отображаете карту ? не видно объекта на котором он отображается (в GisToolKit это компонент класса TMapView, в ГИС Карте это окно карты TPanWindow)
4. может быть Вам просто нужно перебрать все объекты указанного слоя ?

Вне зависимости от варианта, отбор объектов по слоям классификатора выполняется посредством функций ядра с префиксом "mapSelect". Управление отображением на карте в GisToolKit осуществляется флагом MapView1.Selecting = true  
в котором состав объектов регулируется объектом MapView1.ViewSelect
В Вашем случае MapView1.ViewSelect.Layer[номер] := false (true)

Если приложение автономное и отображение на канвас "DC" пользуйтесь набором функций в той последовтательности которая указана ниже:
mapCreateSelectContext
mapSelectLayer
mapPaint95AndSelect
mapDeleteSelectContext
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Виноват.
Приложение автономное и отображение на канвас "DC".
Буду реализовывать. Спасибо за информацию.
 
Снова я.
Написал следующий код:

mainFrm->hSelect = mapCreateMapSelectContext(pDoc->map);
mapSelectLayer(mainFrm->hSelect, -1, 0);
mapSelectLayer(mainFrm->hSelect, 14, 1);
mapPaint95AndSelect(pDoc->map, safeHDC, 1, &mapRect, mainFrm->hSelect, 0xFF000000);
mapDeleteSelectContext(mainFrm->hSelect);

14 слой - сетка.
При такой реализации сетка закрашивается цветом фона. Получается, что я не "выключил", а выбрал слой(и), для которого(ых) задаю цвет. А мне необходимо именно отключить отрисовку...
Я что-то сделал не так?
 
Функция mapPaint95AndSelect рисует карту и выделяет (подсвечивает) те объекты (слои), которые указаны в hSelect.
А Вам нужно установить видимость слоев.

Для этого есть функция:
Код
  // Установить состав отображаемых объектов
  // hMap   - идентификатор открытой основной карты
  // hSite  - идентификатор открытой пользовательской карты
  // select - идентификатор контекста поиска/отображения

_MAPIMP void _MAPAPI mapSetSiteViewSelect(HMAP hMap, HSITE hSite, HSELECT select);


mapSetSiteViewSelect(pDoc->map, pDoc->map, mainFrm->hSelect);
mapDeleteSelectContext(mainFrm->hSelect);

...

mapPaint95(pDoc->map, safeHDC, 1, &mapRect);

Если переменная используется локально (HSELECT),
то лучше ее локально и объявлять.
То есть, не mainFrm->hSelect,
а

HSELECT hSelect = mapCreateMapSelectContext(pDoc->map);
 
Спасибо.
 
Здравствуйте.
Проблема следующая :
- открываю карту *.map (создал приложение по примеру myfirst);
- создаю для данной карты пользовательскую карту *.sit (создаю средствами MAPAPI);
- рисую на пользовательской карте линейные объекты в нескольких слоях (также средствами MAPAPI);
- открываю пользовательскую карту поверх основной;
- объекты пользовательской карты отображаются поверх основной карты.
Вопрос - как управлять слоями пользовательской карты для того, чтобы скрыть/отобразить один из слоев пользовательской карты?
AstraLinux, Qt4.8.6
 
Здравствуйте.

Управление слоями пользовательской карты описано в документе "Руководство программиста", в пункте 3.6.11 "Управление составом отображения объектов электронной карты",  на странице 95.
http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf
 
Я так и делаю, только состав отображения не меняется. Может быть я что-то делаю не так?

HSELECT hSelect = mapCreateSiteSelectContext(mainMap , userMap);
mapSelectLayer(hSelect , -1 , 0);//отключить отображение всех слоев.

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

 // Установить доступ к объектам с заданным номером
 // слоя (сегмента)
 // select - контекст условий поиска
 // layer  - номер слоя(сегмента), начинается с 0 (!),
 // если равен -1 (0xFFFFFFFF), то устанавливается
 // доступ ко всем слоям сразу;
 // check  - доступность слоя (0 - нет доступа, != 0 - есть)
 // Термин Layer явлется синонимом слова Segment

_MAPIMP void _MAPAPI mapSelectLayer(HSELECT select, long int layer,
                                   long int check);
а затем надо полученный фильтр (hselecy) применить к составу отображаемых объектов

 // Установить состав отображаемых объектов
 // hmap - идентификатор открытых данных
 // select - идентификатор устанавливаемого контекста поиска/отображения

_MAPIMP void _MAPAPI mapSetViewSelect(HMAP hmap, HSELECT select);
Страницы: 1 2 3 След.
Читают тему (гостей: 1)



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

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