Я начал использовать OpenLayers3 в моем приложении, и до сих пор, мне удалось создать рабочие версии:OpenLayers3 - возможно ли комбинировать операции модификации/рисования/выбора?
- комбинированный Жеребьевка/изменить страницу (на основании соответствующего примера,
draw-and-modify-features.js
) - в в сочетании выбора/редактирования страницы (на основе соответствующего примера,
modify-features.js
)
В случае (1), экземпляр ol.interaction.Modify
указывает, что он будет работать на особенности внутри ol.FeatureOverlay
например:
var modify = new ol.interaction.Modify({
features: featureOverlay.getFeatures()
...
... и это то, что ol.FeatureOverlay
содержит все новые функции, нарисованные пользователем.
В случае (2), экземпляр ol.interaction.Modify
указывает, что он будет работать на особенности внутри ol.interaction.Select
например:
var select = new ol.interaction.Select();
var modify = new ol.interaction.Modify({
features: select.getFeatures()
});
... и если я не ошибаюсь, это создает скрытый ol.FeatureOverlay
что содержит выбранную в данный момент функцию, которая затем редактируется.
Однако я не вижу способа объединить все 3 - то есть удобный способ, позволяющий пользователю рисовать, выбирать и изменять полигоны.
Что бы я хотел (желательно) - это функциональность рисования/модификации, но в тот момент, когда я нажимаю и удерживаю Ctrl нажатой, курсор больше не работает в режиме «рисования», а в режиме «выбрать», что позволяет мне выбрать один из существующих полигонов, а затем нанести на клавиатуре Delete на клавиатуре, чтобы удалить его, или просто отредактировать его вершины с помощью мыши. Как только я выхожу за пределы всех полигонов, я возвращаюсь в режим рисования/изменения.
Я сделал наивный тест - добавление ol.interaction.Select
к взаимодействию экземпляра draw/modify Map - что приводит к веселым результатам :-) Например, после завершения рисования многоугольника (т. Е. нажмите, чтобы закрыть его), и его выбрали ... и щелчок в любом месте (внутри или снаружи многоугольников) просто запускает новый новый край многоугольника, он никогда не выбирает ранее существовавший - и т. д.
Моя единственная мысль о решении далеко ... для меня реализовать «эмуляцию VI» :-), т. е. режим «команда» (то есть состояние выбора/изменения) и режим «вставки» (то есть состояние рисования/изменения) - и вы выберите, в каком режиме вы находитесь, нажав кнопку «Переключение состояния» внутри карты (пользовательский элемент управления OL3) или вне карты (обычная кнопка HTML).
Я, однако, ищет лучший способ, как тот, который я предложил с проведением Ctrl ...
Любые идеи/предложения приветствуются.
Помогает ли это? http://openlayers.org/en/v3.0.0/examples/draw-and-modify-features.html?q=modify Вы должны использовать ключи-модификаторы, но мне удалось рисовать, удалять и изменять полигоны (после прочтения источник, нужно сказать :-)) –
@ JohnBarça: Спасибо, Джон, но вы просто повторяете ту же ссылку, что и в моем собственном вопросе (modify.js), не сообщая мне, как вам удалось все 3 (нарисовать, выбрать , изменить) :-) Не забудьте поделиться своим решением? – ttsiodras
Извините, я не видел эту ссылку в вашем вопросе, и у меня нет решения. Что это за пример, который не работает для вас? –