( ). , String. , . .
var lineStringdraw = new ol.interaction.Draw({
features: features,
type: "LineString",
geometryFunction:geometryChange
});
function geometryChange(coordinates, geometry){
if (!geometry) {
console.info("what did you do?");
geometry = new ol.geom.LineString(null);
}
var coords = geometry.getCoordinates();
var diff = coordinates.length - coords.length;
if (diff > 1) {
coordinates.splice(coordinates.length - diff, diff - 1);
if (coordinates.length === 1){
lineStringdraw.finishDrawing();
var emptyFeature = vector2.getSource().getFeatures()[vector2.getSource().getFeatures().length-1];
vector2.getSource().removeFeature(emptyFeature);
}
}
geometry.setCoordinates(coordinates);
coordinates= geometry.getCoordinates();
return geometry;
}
var keydown = function(evt){
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode === 27 && drawing === true){
var geom = drawing_feature.getGeometry();
geom.setCoordinates(geom.getCoordinates().slice(0, -1));
undo=true;
}
};
var drawing=false,drawing_feature=null;
lineStringdraw.on('drawstart', function(e1) {
drawing = true;
drawing_feature = e1.feature;
drawing_feature.setProperties({'FID': featureID})
var featureGeom = drawing_feature.getGeometry();
});
lineStringdraw.on('drawend', function(e2) {
drawing = false;
drawing_feature = null;
});