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

использование функции mapViewSelect

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 5 6
RSS
использование функции mapViewSelect, прикладная задача для ГИС Панорама12
 
Добрый день! Ошибка сборки пропала, но теперь при использовании данной функции при запуске модуля в ГИС "Панорама" возникает следующий ошибки ??? Когда убираешь в коде использование данной функции то ошибки пропадают.
123.PNG (9 КБ)
1231.PNG (4.47 КБ)
Изменено: Дарья Лунченко - 26.12.2017 12:52:03
 
Цитата
Дарья Лунченко написал:
Добрый день! Ошибка сборки пропала, но теперь при использовании данной функции при запуске модуля в ГИС "Панорама" возникает следующий ошибки ??? Когда убираешь в коде использование данной функции то ошибки пропадают.
Обновите пожалуйста до актуальной версии программу ГИС "Панорама" 12.5.3 от 15.12.2017
http://gisinfo.ru/download?id=215
 
Добрый день, установила, все работает, спасибо!)
Изменено: Дарья Лунченко - 08.01.2018 19:49:55
 
Здравствуйте, возник такой вопрос, как осуществить поиск и выделение объектов-мультиполигонов среди всех объектов нескольких открытых карт, делаю это следующим образом, но при этом почему-то выделяются все объекты всех карт?
Код
   

       HSITE hSite = stFindSelectParm.hSite;
   
   HSELECT hSelect1;
   HSELECT hSelect2;
   if (hSite == 0)
   {
      hSelect1 = mapCreateMapSelectContext(HMap);
      mapGetSiteViewSelect(HMap, hSite, hSelect1);

   }else hSelect1 = stFindSelectParm.hSelect;
   

   if (mapCheckLocal(hSelect1, LOCAL_SQUARE) == 0)
   {
      mapDeleteSelectContext(hSelect1);
      return 0;
   }
   
   if (hSite == 0)
       hSelect2 = mapCreateMapSelectContext(HMap);
   else
       hSelect2 = mapCreateSiteSelectContext(HMap, hSite);
      mapClearSample(hSelect2);

   
   // Создать пустой объект для обработки выделенных
   HOBJ hObj = mapCreateObject(HMap);
   if (!hObj) return 0;

   
   int flag = WO_FIRST;
   

   int numb;
   numb = mapGetSiteNumber(HMap, stFindSelectParm.hSite);
   

   int nSelect = 0;


   mapSetTotalSeekViewRule(HMap, 1);
   
   if (hSite == 0)
   {
      while (mapTotalSeekObject(HMap, hObj, flag) != 0)
      {

         flag = WO_NEXT;
         if (mapIsMultiPolygon(hObj) != 0)
         {
            if (mapObjectLocal(hObj) == LOCAL_SQUARE)
            {
               
               mapSelectSampleByNumber(hSelect2, 1, mapObjectNumber(hObj));
               
            }
         }
      }
   }

      if (hSite!=0)
       mapSetTotalSeekMapRule(HMap, numb);
      else mapSetTotalSeekMapRule(HMap, -1);
      
      mapSetTotalSelectFlag(HMap, 1);
       mapSetSiteSeekSelect(HMap, hSite, hSelect2);
   
 
Например, так:
Код
// Будем выделять объекты на всех картах
mapSetTotalSeekMapRule(HMap, -1);

HSELECT hSelect = mapCreateMapSelectContext(HMap);
HOBJ hObj = mapCreateObject(HMap);

int mapcount = mapGetSiteCount(HMap);
for(int i = 0; i <= mapcount; i++)
{
  // Формируем списки по каждой карте
  HSITE hSite = mapGetSiteIdent(HMap, i);

  // Очистить список и привязать к другой карте
  mapClearSelectContextEx(hSelect, HMap, hSite);

  int count = 0;

  int listcount = mapGetSiteListCount(HMap, hSite);
  for(int j = 1; j <= listcount; j++)
  {
    int objectcount = mapGetSiteObjectCountInList(HMap, hSite, j);
    for(int k = 1; k < objectcount; k++)
    {
      if (mapReadObjectByNumberEx(HMap, hSite, hObj, j, k) == 2)
        {
          // Пропускаем удаленный объект
          continue;
        }

      if (mapIsMultiPolygon(hObj) != 0)
        {
          // Занести мультиполигон в список
          mapSelectSampleByNumber(hSelect, j, k);
          count++;
        } 
    }
  }

  if (count == 0)
    {
      // Список пуст - запретить выделение на этой карте
      mapSelectLocal(hSelect, -1, 0);
    }

  // Установить список для выделения
  mapSetSiteSeekSelect(HMap, hSite, hSelect);

}

// Освободить ресурсы
mapFreeObject(hObj);
mapDeleteSelectContext(hSelect);

// Обновить изображение
... 
 
Здравствуйте, спасибо.
Изменено: Дарья Лунченко - 10.01.2018 16:09:38
 
  Добрый день! Подскажите пожалуйста, как получить HSITE карты на которой находится объект имея его hObj?
 
Например, так:
Код
  // Определить идентификатор открытой пользовательской карты
  // для заданного объекта
  // hMap  - идентификатор открытой основной карты
  // hObj  - идентификатор объекта пользовательской карты
  // При ошибке возвращает ноль

_MAPIMP HSITE _MAPAPI mapGetObjectSiteIdent(HMAP hMap, HOBJ hObj);
Страницы: Пред. 1 2 3 4 5 6
Читают тему (гостей: 1)



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

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