Allow freehand drawing without a modifier key

This commit is contained in:
Tim Schaub
2016-10-14 18:10:20 -06:00
parent 8d68d68c9d
commit fad6d368a6
2 changed files with 21 additions and 6 deletions
+10
View File
@@ -2695,6 +2695,16 @@ olx.interaction.DrawOptions.prototype.geometryName;
olx.interaction.DrawOptions.prototype.condition; olx.interaction.DrawOptions.prototype.condition;
/**
* Operate in freehand mode for lines, polygons, and circles. This makes the
* interaction always operate in freehand mode and takes precedence over any
* `freehandCondition` option.
* @type {boolean|undefined}
* @api
*/
olx.interaction.DrawOptions.prototype.freehand;
/** /**
* Condition that activates freehand drawing for lines and polygons. This * Condition that activates freehand drawing for lines and polygons. This
* function takes an {@link ol.MapBrowserEvent} and returns a boolean to * function takes an {@link ol.MapBrowserEvent} and returns a boolean to
+11 -6
View File
@@ -251,8 +251,13 @@ ol.interaction.Draw = function(options) {
* @private * @private
* @type {ol.EventsConditionType} * @type {ol.EventsConditionType}
*/ */
this.freehandCondition_ = options.freehandCondition ? this.freehandCondition_;
options.freehandCondition : ol.events.condition.shiftKeyOnly; if (options.freehand) {
this.freehandCondition_ = ol.events.condition.always;
} else {
this.freehandCondition_ = options.freehandCondition ?
options.freehandCondition : ol.events.condition.shiftKeyOnly;
}
ol.events.listen(this, ol.events.listen(this,
ol.Object.getChangeEventType(ol.interaction.Interaction.Property.ACTIVE), ol.Object.getChangeEventType(ol.interaction.Interaction.Property.ACTIVE),
@@ -319,15 +324,15 @@ ol.interaction.Draw.handleEvent = function(mapBrowserEvent) {
* @private * @private
*/ */
ol.interaction.Draw.handleDownEvent_ = function(event) { ol.interaction.Draw.handleDownEvent_ = function(event) {
if (this.condition_(event)) { if (this.freehand_) {
this.downPx_ = event.pixel;
return true;
} else if (this.freehand_) {
this.downPx_ = event.pixel; this.downPx_ = event.pixel;
if (!this.finishCoordinate_) { if (!this.finishCoordinate_) {
this.startDrawing_(event); this.startDrawing_(event);
} }
return true; return true;
} else if (this.condition_(event)) {
this.downPx_ = event.pixel;
return true;
} else { } else {
return false; return false;
} }