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

Кастомный компонент на основе Задача "Поиск по области"

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » GIS WebToolKit
Страницы: 1
RSS
Кастомный компонент на основе Задача "Поиск по области"
 
Доброго времени суток. Решил сделать на основе выбора области полигона в задаче области.
В целом он повторяет выбор области полигона, только окончание выбора области необходимо сделать двойным кликом, а не нажатием на выбор области.
Для этого я в src\components\GwtkSearchArea\actions\SelectMapPolygonAction­.ts сделал обработку события onMouseDoubleClick
А в нем  выполняю

           this.map.setActiveObject( this.currentObject );

После этого область выделяется, но курсор не меняется и контуры остаются.
Судя по коду я так понял нужно было еще выполнить, this.setState, для смены состояния(в нем выполняется doAction). Но сделав обработку и вызвав doAction, выделенная область просто исчезла.
Просьба помочь
 
Добрый день,

В обработчике SelectMapPolygonAction­.ts двойной клик (обработка в методе commit) завершает построение области (с последующим поиском по созданному полигону).

Не совсем ясно, что требуется изменить в текущем поведении?
 
Хочется не выполнять commit, а что бы событие закончилось но область осталась выделенная без возможности выделения далее, как происходит когда нажимаем на кнопку выделенным красным(где цифра 1)
Незнаю как прикрепить здесь изображение. Выложил сюда
https://files.fm/f/xuvwkbhaf
 
Здравствуйте! Обработчик SelectMapPolygonAction­.ts в методах commit и destroy чистит объект: mapObject.removeAllPoints();
Удалите эти строки.
 
Цитата
Ольга Нефедьева написал:
Здравствуйте! Обработчик SelectMapPolygonAction­.ts в методах commit и destroy чистит объект: mapObject.removeAllPoints();
Удалите эти строки.
В commit вижу:
           this.parentTask.setState( AREA_SEARCH, true );
           super.commit();
           mapObject.removeAllPoints();

Если убрать             mapObject.removeAllPoints();, то очистка происходит все равно. Если убрать this.parentTask.setState( AREA_SEARCH, true ); и  mapObject.removeAllPoints();, область остается, но остается пунктирной и остается возможность продолжать выделять. А хочется достичь того, что происходит когда нажимаем на выделение окружности(показано на изображении выше)
 
Стандартно обработчик SelectMapPolygonAction­.ts при двойном клике перестает добавлять точки и его надо отключить.

Выбранные точки области хранятся в объекте карты в задаче, Вам его не надо очищать (removeAllPoints()).

Функция this.parentTask.setState(AREA_SEARCH, true) - сообщает задаче, что область выбрана.
Задача в этом случае вызывает метод run();
В run() :
       1)   this.postRequest( crossmethod );   - запрос на поиск по области
       2)  setTimeout( () => this.setAction( actionid, false ), 0 ) - отключение обработчика выбора области.
В setAction() при отключении обработчика не очищайте активный объект карты: // this.map.clearActiveObject();
 
 
Спасибо. Помогло
Страницы: 1
Читают тему (гостей: 1)



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

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