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

Александр Махин (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Александр Махин
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 55 След.
Выделение объектов по области
 
Все поправил и все работает, но как только произошел поиск по радиусу, то выделение объектов по области некорректно отображается.
Скрин 1 (до момента поиска по радиусу), Скрин 2 (после поиск по радиусу).
Выделение объектов по области
 
[QUOTE]Денис Вицко написал:
Деактивировать поиск MapFind.Active = false;Сбросить старые параметры, установить новые.Активировать поиск MapFind.Active = true;[/QUOTE]
Как правильно сбросить старые параметры поиска и установить новые???
Выделение объектов по области
 
[QUOTE]Денис Вицко написал:
при смене режима завершать текущий и перенастраивать систему поиска на новые условия, то можно не плодить MapFind+MapObj для этого, а пользоваться одним и тем же комплектом.[/QUOTE]
А как сделать правильно завершение и перенастройку системы поискана новые условия??
Выделение объектов по области
 
Я более подробно начал разбираться в своем коде и понял, что проблема возникающая при выделении объектов по области заключается в поиске объектов в точке нажатия.
Поиск объектов в точке нажатия я выполняю следующим образом:
           MapFind.Active = false;
           MapFind.FindPoint = true;
           MapFind.X = x;
           MapFind.Y = y;
           MapFind.Radius = 3;
           MapFind.cMapObj.StyleSelect = TxObjectStyleSelect.SEL_OBJUP;
           MapFind.cMapObj.St yle = TxObjectStyle.OS_SELECT;
           MapFind.Active = true;

Если я отключаю данный поиск, то выделение по области работает отлично.

Есть ли возможность организовать поиск в точке нажатия каким либо другим образом???
Выделение объектов по области
 
У меня в примерах нет демонстрации \select.
Можно попросить Вас скинуть данный проект?
Выделение объектов по области
 
А есть правильный образец кода для выделения по области?
Выделение объектов по области
 
[QUOTE]Andrey Gheleznyakov написал:
Остановить поиск - MapFind.Acnive = false.
Сбросить условия поиска MapFind.MapSelect.ClearAll[/QUOTE]
[QUOTE]Не помогло[/QUOTE]
Выделение объектов по области
 
ВЫДЕЛЕНИЕ ОБЪЕКТОВ ПО ОБЛАСТИ;

//обнулить всю имеющуюся информацию по выделению объектов по области
           int countObj = 0;
           ObjCopyFind.Clear();
           MapFindArea1.cMapView.SetObjSelected(null, new TxColorRef(), true);
           MapFindArea2.cMapView.SetObjSelected(null, new TxColorRef(), true);
           MapFindArea1.cMapSelect.UnselectSeekArea(-1); // сбросим область если была

           var aColor = new TxColorRef {Blue = 255};

           // отключить поиск и выделение на всех картах кроме шаблона
           MapFindArea1.cMapSelect.MapSites[0] = false;
           MapFindArea1.cMapSelect.MapSites[2] = false;
           MapFindArea1.cMapSelect.MapSites[3] = false;

           // создать объект ограничивающий область
           MapObjArea.CreateNullObj(0);
           MapPoint.PlaceInp = TxPPLACE.PP_PLANE;
           // установить метрику объекта (замкнутый объект, последняя точка должна совпадать с первой)
           MapPoint.SetPoint(MapSelectRect.SelectedRect.X1, MapSelectRect.SelectedRect.Y1);
           MapObjArea.Metric.Append(0, MapPoint.C_CONTAINER);
           MapPoint.SetPoint(MapSelectRect.SelectedRect.X1, MapSelectRect.SelectedRect.Y2);
           MapObjArea.Metric.Append(0, MapPoint.C_CONTAINER);
           MapPoint.SetPoint(MapSelectRect.SelectedRect.X2, MapSelectRect.SelectedRect.Y2);
           MapObjArea.Metric.Append(0, MapPoint.C_CONTAINER);
           MapPoint.SetPoint(MapSelectRect.SelectedRect.X2, MapSelectRect.SelectedRect.Y1);
           MapObjArea.Metric.Append(0, MapPoint.C_CONTAINER);
           MapPoint.SetPoint(MapSelectRect.SelectedRect.X1, MapSelectRect.SelectedRect.Y1);
           MapObjArea.Metric.Append(0, MapPoint.C_CONTAINER);
           MapFindArea1.Active = false;
           MapFindArea1.FindPoint = false;
           // установить параметры выделения объектов по области
           MapFindArea1.cMapSelect.SelectSeekArea(1, MapFindArea1.cMapObj.C_CONTAINER, 0, 1, 2, 1, 1);
           MapFindArea1.Active = true;

           //---------------------------------------Выделяем объекты на карте-----------------------------------//
           MapScreen.LoadingShow("Выполняется обработка данных...", 13);
           MapScreen.SetObjSelected(MapFindArea1.cMapSelect, aColor, true);
           MapFindArea1.first();
           while (!MapFindArea1.Eof)
           {
               //создаем копию выделенных объектов
               int hobj = MapAPI.mapCreateCopyObject((IntPtr)MapFindArea1.cMapView.MapHandle, (IntPtr)MapObjArea.ObjHandle);
               ObjCopyFind.Add(hobj);
               if (MapFindArea2.cMapSelect.SelectSample(true, MapFindArea1.cMapObj.ListName, MapFindArea1.cMapObj.Key) > 0) countObj++;
               MapEditMetricArea.MapFindGroup = MapFindArea2.C_CONTAINER;
               MapFindArea1.Next();
           }
           if (ObjCopyFind.Count <= 0) MapSelectRect.StopAction();
           MapScreen.LoadingClose();
Выделение объектов по области
 
Я разобрался из-за чего у меня не выделяются должным образом объекты после перемещения или редактирования метрики объекта. Всё это происходит после того как я выполнил поиск объекта в точке нажатия кнопкой мыши.
Как мне очистить MapFind или MapObj, ну или сделать, как будто поиск не выполнялся ещё?
Выделение объектов по области
 
Я попробывал метод EditComplite, но это не помогло.
Я так понимаю, что после перемещения или редактирования метрики объекта компонент MapObj перенастраивается и это как-то влияет на выделение объектов по области.

Так как пока я не выполню перемещение или редактирование выделение по области работает хорошо.


Что ещё можно попробовать?
Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 55 След.



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

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