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

Слои карты

Поиск  Пользователи  Правила  Войти
Форум » Linux » ГИС Панорама для Linux
Страницы: 1
RSS
Слои карты, Не работает функции mapSelectLayer, mapSetViewSelect
 
Добрый день! Не работает одна из функций: либо mapSelectLayer, либо mapSetViewSelect. Как проверить адекватен ли результат данных функций? Просто обе они ничего не возращают. Проблема в том, что данный код полностью скопирован с проекта под Windows. Реализовала в Linux`е: как результат - ни один слой не отключен, хотя были выбраны те слои, которые надо оставить в карте. Ниже приведен код:

   // Выводим слои карты.
   // Пользователь вводит, какие слои его интересуют.

   map.mapSelectLayer (hSelect, -1, 0);
   
   // Отключили все слои и по очереди включаем нужные.

   map.mapSelectLayer (hSelect, arrLayers[i], 1);

   map.mapSetViewSelect (hSelect);

Заранее спасибо за помощь! :)
Изменено: RTEF - 13.07.2015 06:20:28
 
Добрый день.
Сообщите в какой системе Вы работаете.
Для начала проверьте чтобы hSelect был не равен 0. Возможно он некорректно создается  отсюда вся проблема.
 
hSelect точно не равен нулю. У меня там ассерт стоит в качестве проверки. Использую гисовскую библиотеку для Linux`а.
 
- Напишите, пожалуйста, название и версию для операционной системы и продукта, которые Вы используете;

- Стандартный пример работы со слоями, который можно воспроизвести на основе примера myfirst,
 входящего в инсталляцию ГИС Конструктор для Qt Designer и карты Noginsk.sit:

Код
  long int arrLayers[3] = {8,10,11};
  HMAP hMap = ui.DMapView1->GetMapHandle();
  HSELECT hSelect = mapCreateMapSelectContext(hMap);
  mapSelectLayer(hSelect, -1, 0);
  for (int i = 0; i<3; i++)
    mapSelectLayer(hSelect, arrLayers[i], 1);
  mapSetViewSelect(hMap, hSelect);
  ui.DMapView1->Repaint();
 
Здравствуйте!
У меня возникла точно такая же проблема. Приведенный ниже код не работает, подскажите, как решить проблему.

//установка отображения слоев
void MainForm1::setLayers()
{
 HSELECT hSelect = mapCreateMapSelectContext(hMap);
 if(hSelect == 0) {
   QMessageBox::information(nullptr, "Ошибка", "select = 0");
   return;
 }
 mapSelectLayer(hSelect, -1, 0);
 for (int i = 0; i < Map::layersMap.size(); i++) {
   if(Map::layersMap[i].check) {
   mapSelectLayer(hSelect, i, 1);
 }
 else {
   mapSelectLayer(hSelect, i, 0);
   }
 }
 mapSetViewSelect(hMap, hSelect);
 ui->DMapView1->Repaint();
}
 
Здравствуйте!

Пример изменения состава отображаемых слоев можно посмотреть:
  • в примере mapobj из состава ГИС Конструктор (mainwindow.cpp, функция MapWidget::ViewSegmentObjects());
  • в разделе 3.6.11 "Управление составом отображения объектов электронной карты" Руководства программиста ГИС Конструктор (http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf).
Страницы: 1
Читают тему (гостей: 1)



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

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