From 8edc2be103920a7ca31b6627c751c09bd278add9 Mon Sep 17 00:00:00 2001 From: simonseyock Date: Thu, 1 Dec 2016 16:06:13 +0100 Subject: [PATCH] Added hitTolerance to TranslateInteraction --- externs/olx.js | 13 ++++++++++++- src/ol/interaction/select.js | 4 ++++ src/ol/interaction/translate.js | 31 ++++++++++++++++++++++++++++++- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/externs/olx.js b/externs/olx.js index 8056fa3203..30411d8546 100644 --- a/externs/olx.js +++ b/externs/olx.js @@ -2910,7 +2910,8 @@ olx.interaction.ExtentOptions.prototype.wrapX; /** * @typedef {{ * features: (ol.Collection.|undefined), - * layers: (undefined|Array.|function(ol.layer.Layer): boolean) + * layers: (undefined|Array.|function(ol.layer.Layer): boolean), + * hitTolerance: (number|undefined) * }} */ olx.interaction.TranslateOptions; @@ -2937,6 +2938,16 @@ olx.interaction.TranslateOptions.prototype.features; olx.interaction.TranslateOptions.prototype.layers; +/** + * Hit-detection tolerance. Pixels inside the radius around the given position + * will be checked for features. This only works for the canvas renderer and + * not for WebGL. + * @type {number|undefined} + * @api + */ +olx.interaction.TranslateOptions.prototype.hitTolerance; + + /** * @typedef {{condition: (ol.EventsConditionType|undefined), * duration: (number|undefined), diff --git a/src/ol/interaction/select.js b/src/ol/interaction/select.js index dbcd376efc..55d6f6c740 100644 --- a/src/ol/interaction/select.js +++ b/src/ol/interaction/select.js @@ -82,6 +82,10 @@ ol.interaction.Select = function(opt_options) { this.filter_ = options.filter ? options.filter : ol.functions.TRUE; + /** + * @private + * @type {number} + */ this.hitTolerance_ = options.hitTolerance ? options.hitTolerance : 0; var featureOverlay = new ol.layer.Vector({ diff --git a/src/ol/interaction/translate.js b/src/ol/interaction/translate.js index b1aade1db1..68f0864b0f 100644 --- a/src/ol/interaction/translate.js +++ b/src/ol/interaction/translate.js @@ -70,6 +70,12 @@ ol.interaction.Translate = function(opt_options) { */ this.layerFilter_ = layerFilter; + /** + * @private + * @type {number} + */ + this.hitTolerance_ = options.hitTolerance ? options.hitTolerance : 0; + /** * @type {ol.Feature} * @private @@ -198,11 +204,34 @@ ol.interaction.Translate.prototype.featuresAtPixel_ = function(pixel, map) { return feature; } }, this, { - layerFilter: this.layerFilter_ + layerFilter: this.layerFilter_, + hitTolerance: this.hitTolerance_ }); }; +/** + * Returns the Hit-detection tolerance. + * @returns {number} Hit tolerance. + * @api + */ +ol.interaction.Translate.prototype.getHitTolerance = function() { + return this.hitTolerance_; +}; + + +/** + * Hit-detection tolerance. Pixels inside the radius around the given position + * will be checked for features. This only works for the canvas renderer and + * not for WebGL. + * @param {number} hitTolerance Hit tolerance. + * @api + */ +ol.interaction.Translate.prototype.setHitTolerance = function(hitTolerance) { + this.hitTolerance_ = hitTolerance; +}; + + /** * @classdesc * Events emitted by {@link ol.interaction.Translate} instances are instances of