diff --git a/examples/draw-features.js b/examples/draw-features.js index f9285538d5..e33ff3a3bd 100644 --- a/examples/draw-features.js +++ b/examples/draw-features.js @@ -87,26 +87,7 @@ var vector = new ol.layer.Vector({ }) }); -var modeSelect = document.getElementById('mode'); - -var draw = new ol.interaction.Draw({ - layer: vector, - mode: /** @type {ol.interaction.DrawMode} */ - (modeSelect.options[modeSelect.selectedIndex].value) -}); - - -/** - * Let user change the draw mode. - * @param {Event} e Change event. - */ -modeSelect.onchange = function(e) { - draw.setMode(/** @type {ol.interaction.DrawMode} */ - (modeSelect.options[modeSelect.selectedIndex].value)); -}; - var map = new ol.Map({ - interactions: ol.interaction.defaults().extend([draw]), layers: [raster, vector], renderer: ol.RendererHint.CANVAS, target: 'map', @@ -115,3 +96,27 @@ var map = new ol.Map({ zoom: 4 }) }); + +var modeSelect = document.getElementById('mode'); + +var draw; // global so we can remove it later +function addInteraction() { + draw = new ol.interaction.Draw({ + layer: vector, + mode: /** @type {ol.interaction.DrawMode} */ + (modeSelect.options[modeSelect.selectedIndex].value) + }); + map.addInteraction(draw); +} + + +/** + * Let user change the draw mode. + * @param {Event} e Change event. + */ +modeSelect.onchange = function(e) { + map.removeInteraction(draw); + addInteraction(); +}; + +addInteraction(); diff --git a/src/ol/interaction/drawinteraction.js b/src/ol/interaction/drawinteraction.js index 28070b188a..03807276a5 100644 --- a/src/ol/interaction/drawinteraction.js +++ b/src/ol/interaction/drawinteraction.js @@ -347,20 +347,6 @@ ol.interaction.Draw.prototype.abortDrawing_ = function() { }; -/** - * Set the drawing mode. - * TODO: Decide if we want interactions to be purely event driven - if so, this - * method would be removed, and users would remove this interaction and create a - * new one with the desired mode instead. - * @param {ol.interaction.DrawMode} mode Draw mode ('point', 'linestring', or - * 'polygon'). - */ -ol.interaction.Draw.prototype.setMode = function(mode) { - this.abortDrawing_(); - this.mode_ = mode; -}; - - /** * Draw mode. * @enum {string} diff --git a/src/ol/map.exports b/src/ol/map.exports index d6dd963a75..68ff166ae7 100644 --- a/src/ol/map.exports +++ b/src/ol/map.exports @@ -1,5 +1,6 @@ @exportClass ol.Map ol.MapOptions @exportProperty ol.Map.prototype.addControl +@exportProperty ol.Map.prototype.addInteraction @exportProperty ol.Map.prototype.addLayer @exportProperty ol.Map.prototype.addOverlay @exportProperty ol.Map.prototype.beforeRender @@ -14,6 +15,7 @@ @exportProperty ol.Map.prototype.getRenderer @exportProperty ol.Map.prototype.getViewport @exportProperty ol.Map.prototype.removeControl +@exportProperty ol.Map.prototype.removeInteraction @exportProperty ol.Map.prototype.removeLayer @exportProperty ol.Map.prototype.removeOverlay @exportProperty ol.Map.prototype.updateSize