undo last point when drawing linestring - possible regression

المشرف العام

Administrator
طاقم الإدارة
I would like to be able to draw a linestring and to be able to undo the last drawn point when the key ESC is pressed.

I used that code when I first wrote my application :

// create the interaction draw_interaction = new ol.interaction.Draw({ source: vector_layer.getSource(), type: /** @type {ol.geom.GeometryType} */ ($geom_type.val()) }); // add it to the map map.addInteraction(draw_interaction); // when a new feature has been drawn... draw_interaction.on('drawstart', function(evt) { var feature = evt.feature; var geom = feature.getGeometry(); document.addEventListener('keyup', function() { if (event.keyCode === 27) { if (geom.getType() === "LineString") { var coords = geom.getCoordinates(); var len = coords.length; console.log("undo"); if (len > 1) { geom.setCoordinates(geom.getCoordinates().slice(0, len - 1)); } } } }); }); You can see a live version on codepen following that link:

http://codepen.io/anon/pen/waPXyG

My problem is when I upgraded from 3.5.0 to 3.6.0, the behaviour changed :

http://codepen.io/anon/pen/LVOrrq

As you can see on the live example, when undoing (pressing ESC) it seems to be working but when you want to add a new point to the linestring, the points I removed are back in place. Looks like a caching behaviour as been added to 3.6.0

I hope someone can help me, it's either a regression or a api modification that I did not notice in the change log.



أكثر...
 
أعلى