Allow freehand drawing without a modifier key
This commit is contained in:
@@ -2695,6 +2695,16 @@ olx.interaction.DrawOptions.prototype.geometryName;
|
||||
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
|
||||
* function takes an {@link ol.MapBrowserEvent} and returns a boolean to
|
||||
|
||||
@@ -251,8 +251,13 @@ ol.interaction.Draw = function(options) {
|
||||
* @private
|
||||
* @type {ol.EventsConditionType}
|
||||
*/
|
||||
this.freehandCondition_ = options.freehandCondition ?
|
||||
options.freehandCondition : ol.events.condition.shiftKeyOnly;
|
||||
this.freehandCondition_;
|
||||
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.Object.getChangeEventType(ol.interaction.Interaction.Property.ACTIVE),
|
||||
@@ -319,15 +324,15 @@ ol.interaction.Draw.handleEvent = function(mapBrowserEvent) {
|
||||
* @private
|
||||
*/
|
||||
ol.interaction.Draw.handleDownEvent_ = function(event) {
|
||||
if (this.condition_(event)) {
|
||||
this.downPx_ = event.pixel;
|
||||
return true;
|
||||
} else if (this.freehand_) {
|
||||
if (this.freehand_) {
|
||||
this.downPx_ = event.pixel;
|
||||
if (!this.finishCoordinate_) {
|
||||
this.startDrawing_(event);
|
||||
}
|
||||
return true;
|
||||
} else if (this.condition_(event)) {
|
||||
this.downPx_ = event.pixel;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user