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

Как правильно искать объекты?

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Как правильно искать объекты?, Как правильно искать объекты
 
Я пытаюсь найти объекты совпадающие с вновь создаваемым, т.е попадающие во внутрь создаваемого. Код следующий:
Код
HOBJ hObj = mapCreateObject (hMap) ;
mapAppendSemanticUnicode(hObj, .............) ;
mapRegisterObjectByKey(hObj, .....);

mapAppendPointPlane(hObj, x1, y1) ;  // Формирую метрику
mapAppendPointPlane(hObj, x2, y2) ;
.................
.................

HSELECT hSelect = mapCreateMapSelectContext(hMap);  
mapSelectSeekArea(hSelect, hObj) ;

int numSelectObj = mapSeekSelectObjectCount (hMap, hSelect) ;
В numSelectObj получаю количество объектов уже существующие на карте.
Что я не правильно делаю?
 
Большинство параметров функции вы указали по умолчанию. Среди умалчиваемых - action, который означает, что количество подходящих объектов заранее не определяется и надо выполнить просто перебор подходящих в цикле.

// Установить в контексте параметры поиска объектов по области.
 // hselect - контекст поиска об'ектов
 // object - объект-область поиска
 // distance - расстояние поиска в метрах
 // флажки,описывающие критерии поиска :
 // filter  - учитывать/не учитывать(1/0) фильтр объектов
 //           (параметры фильтра должны быть установлены заранее
 //           в контексте поиска)
 // inside  - границы поиска объектов по области :
 //           0 - внутри области по расстоянию от заданного объекта,
 //           1 - внутри области от заданного объекта, включая пересечение границы,
 //               если задано расстояние, то с учетом расстояния,
 //           2 - целиком внутри области без касания или пересечения границы,
 //           4 - целиком снаружи области без касания или пересечения границы,
 // visible - с учетом/без учета(1/0) видимости объектов на карте
 // action   - порядок поиска объектов :
 //            0 - последовательный поиск по мере запроса объектов,
 //            1 - предварительный отбор всех объектов (главному
 //            окну приложения посылается WM_PROGRESSBAR - maptype.h),
 //            ускоряет многократный запрос отобранных объектов;
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSelectSeekArea(HSELECT hselect, HOBJ object,
                                          double distance = 0.0,
                                          long int filter = 0,
                                          long int inside = 1,
                                          long int visible = 0,
                                          long int action = 0);
 
Цитата
надо выполнить просто перебор подходящих в цикле.
по ходу автор темы это и спрашивает =)
Алексей, после этих строк
Цитата
HSELECT hSelect = mapCreateMapSelectContext(hMap);  
mapSelectSeekArea(hSelect, hObj) ;
int numSelectObj = mapSeekSelectObjectCount (hMap, hSelect) ;
пишите следующее
Цитата
HOBJ info = mapCreateObject (hMap) ;
int flag = WO_FIRST;    
while (mapSeekSelectObject(hMap, hSelect, info, flag) != 0)
{
   // читаем информацмию с объекта info
   flag = WO_NEXT;
}
mapFreeObject(info);
Не тот глуп кто не знает, а тот, кто не знает где искать.
Страницы: 1
Читают тему (гостей: 1)



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

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