Повесить событие рисования на двойной щелчок.

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Повесить событие рисования на двойной щелчок.

Сообщение novice »

Стандартный контрол рисования добавляется на карту следующим образом:

Код: Выделить всё

 var polygonLayer = new OpenLayers.Layer.Vector("Полигон");
 mapInst.addLayers([polygonLayer]);
 polygonControl = new OpenLayers.Control.EditingToolbar(polygonLayer); 
 mapInst.addControl(polygonControl); 
Этот контрол по умолчанию начинает рисование полигона, линии или точки по одинарному клику, завершает рисование по двойному клику.

Подскажите, пожалуйста, можно ли(и как) переопределить поведение этого контрола так, чтобы он начинал рисование по двойному клику и по двойному же клику его завершал. А вместо точки рисовал маркер?
Последний раз редактировалось novice 19 июн 2013, 18:09, всего редактировалось 1 раз.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Повесить событие рисования на двойной щелчок.

Сообщение Denis Rykov »

Не понял вопрос. Контрол становится активным в тот момент, когда вы его активируете (вызываете метод activate), далее по одинарному клику добавляются узлы создаваемого вами объекта. Вы хотите именно активировать контрол по двойному клику что-ли, то есть избавиться от соответствующей кнопки на панели инструментов?
Spatial is now, more than ever, just another column- The Geometry Column.
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Re: Повесить событие рисования на двойной щелчок.

Сообщение novice »

Контрол, который был на форме сохраняется, когда он активен, то просто рисуется полигон и запоминаются его координаты, а затем этот контрол становится опять неактивным.

Дополнительно надо добавить еще 3 контрола, которые рисуют: точку, линию, полигон. Было бы здорово, если можно было бы переопределить стандартный контрол(OpenLayers.Control.EditingToolbar).

Но когда активирован контрол "точка", то рисуется не точка, а маркер. Эти контролы активируются пользователем, когда он кликает на соответствующую кнопку в виджете карты. Когда контрол активирован, то по двойному клику мышки на карту начинает добавляться геометрия(в зависимости от контрола: маркер, линия или полигон). По одинарному клику добавляются узлы в этой геометрии. По двойному щелчку мышки(тоже событие, что и при начале рисования фигуры) рисование должно прекратиться и на карте должна появиться нарисованная фигура.
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Re: Повесить событие рисования на двойной щелчок.

Сообщение novice »

Контролы активируются по одинарному клику. Геометрия начинает добавляться по двойному.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Повесить событие рисования на двойной щелчок.

Сообщение Denis Rykov »

novice писал(а):Когда контрол активирован, то по двойному клику мышки на карту начинает добавляться геометрия(в зависимости от контрола: маркер, линия или полигон). По одинарному клику добавляются узлы в этой геометрии.
Еще раз повторяю принцип работы контрола Control.DrawFeature - нет никакого "начинает добавляться геометрия". Вы активировали контрол, всё, с этого момента он ждет ввода узлов. Вы же сами пишете "по одинарному клику добавляются узлы", так вот добавление первого узла ничем не отличается от второго, третьего или десятого, активировали контрол - будьте добры, рисуйте.
Spatial is now, more than ever, just another column- The Geometry Column.
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Re: Повесить событие рисования на двойной щелчок.

Сообщение novice »

Спасибо! а переопределить поведение контрола, чтобы первый узел добавлялся по двойному клику, остальные по одинарному, а завершалось рисование по двойному, не залезая в исходники Openlayers не получится?
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Повесить событие рисования на двойной щелчок.

Сообщение Denis Rykov »

Не знаю, объясните: включен контрол рисования, но по клику не добавляется точка, а что тогда происходит? и зачем при этом должен быть включенным контрол рисования? Мне кажется у вас какие-то проблемы с логикой приложения.
Spatial is now, more than ever, just another column- The Geometry Column.
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Re: Повесить событие рисования на двойной щелчок.

Сообщение novice »

При открытии формы(один из компонентов которой карта) сразу активирована кнопка рисования точки (которая рисует вместо точек маркеры). Но пользователь может случайно кликнуть на карту. А если точки рисуются по двойному щелчку, то случайного нажатия на карту не произойдет.
Последний раз редактировалось novice 15 июн 2013, 12:31, всего редактировалось 1 раз.
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Повесить событие рисования на двойной щелчок.

Сообщение Denis Rykov »

Пользователь в таком случае может случайно и два раза кликнуть на карту. Сделайте просто контрол рисования отключенным по умолчанию и все, захотят нарисовать - включат. Что значит рисует точки а не маркеры, что по вашему такое маркер?
Spatial is now, more than ever, just another column- The Geometry Column.
novice
Гуру
Сообщения: 527
Зарегистрирован: 21 окт 2012, 00:17
Репутация: 15
Ваше звание: developer

Re: Повесить событие рисования на двойной щелчок.

Сообщение novice »

маркер - это точка с пиктограммой(хотя раньше мне не верили). Но для него надо задавать стили. Где задавать стили - не понятно. можно ли задать эти стили сразу в настройках контрола?
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Повесить событие рисования на двойной щелчок.

Сообщение Denis Rykov »

Вы же не просто рисуете объекте, а делаете это с помощью контрола, которому при инициализации указано к какому слою он прикреплен, так вот в соответствии со стилем этого слоя и будут выглядеть ваши объекты.
Spatial is now, more than ever, just another column- The Geometry Column.
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей