From 113888120f9d0ba8eaba1935af365cc300f8ebbf Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 20 Aug 2014 10:38:39 +0200 Subject: [PATCH 1/4] Use goog.math.toDegrees --- src/ol/control/rotatecontrol.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ol/control/rotatecontrol.js b/src/ol/control/rotatecontrol.js index 3de372ce91..8b64185d34 100644 --- a/src/ol/control/rotatecontrol.js +++ b/src/ol/control/rotatecontrol.js @@ -5,6 +5,7 @@ goog.require('goog.dom'); goog.require('goog.dom.TagName'); goog.require('goog.events'); goog.require('goog.events.EventType'); +goog.require('goog.math'); goog.require('ol.animation'); goog.require('ol.control.Control'); goog.require('ol.css'); @@ -146,7 +147,7 @@ ol.control.Rotate.prototype.handleMapPostrender = function(mapEvent) { return; } var rotation = frameState.viewState.rotation; - var transform = 'rotate(' + rotation * 360 / (Math.PI * 2) + 'deg)'; + var transform = 'rotate(' + goog.math.toDegrees(rotation) + 'deg)'; if (this.autoHide_) { this.element.style.opacity = (rotation === 0) ? 0 : 1; } From 7c1439913386cc226f5077086162299d76285789 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 20 Aug 2014 10:45:39 +0200 Subject: [PATCH 2/4] Add missing jsdoc tag --- src/ol/control/rotatecontrol.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ol/control/rotatecontrol.js b/src/ol/control/rotatecontrol.js index 8b64185d34..3aba7fdd17 100644 --- a/src/ol/control/rotatecontrol.js +++ b/src/ol/control/rotatecontrol.js @@ -34,6 +34,11 @@ ol.control.Rotate = function(opt_options) { var label = goog.dom.createDom(goog.dom.TagName.SPAN, { 'class': 'ol-compass' }, goog.isDef(options.label) ? options.label : '\u21E7'); + + /** + * @type {Element} + * @private + */ this.label_ = label; var tipLabel = goog.isDef(options.tipLabel) ? From 27ae50e67367181567adc7775a1388c394139e41 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 20 Aug 2014 10:53:44 +0200 Subject: [PATCH 3/4] Only update rotate control element when it's needed To avoid a lot of 'Recalculate style' events by the browser. --- src/ol/control/rotatecontrol.js | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/ol/control/rotatecontrol.js b/src/ol/control/rotatecontrol.js index 3aba7fdd17..9e4d9bf5de 100644 --- a/src/ol/control/rotatecontrol.js +++ b/src/ol/control/rotatecontrol.js @@ -88,6 +88,12 @@ ol.control.Rotate = function(opt_options) { */ this.autoHide_ = goog.isDef(options.autoHide) ? options.autoHide : true; + /** + * @private + * @type {number|undefined} + */ + this.rotation_ = undefined; + element.style.opacity = (this.autoHide_) ? 0 : 1; }; @@ -152,11 +158,14 @@ ol.control.Rotate.prototype.handleMapPostrender = function(mapEvent) { return; } var rotation = frameState.viewState.rotation; - var transform = 'rotate(' + goog.math.toDegrees(rotation) + 'deg)'; - if (this.autoHide_) { - this.element.style.opacity = (rotation === 0) ? 0 : 1; + if (rotation != this.rotation_) { + var transform = 'rotate(' + goog.math.toDegrees(rotation) + 'deg)'; + if (this.autoHide_) { + this.element.style.opacity = (rotation === 0) ? 0 : 1; + } + this.label_.style.msTransform = transform; + this.label_.style.webkitTransform = transform; + this.label_.style.transform = transform; } - this.label_.style.msTransform = transform; - this.label_.style.webkitTransform = transform; - this.label_.style.transform = transform; + this.rotation_ = rotation; }; From 7f086e138ae39101318284a927bb66a3b579b31f Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Wed, 20 Aug 2014 11:17:44 +0200 Subject: [PATCH 4/4] Remove unnecessary local variable --- src/ol/control/rotatecontrol.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/ol/control/rotatecontrol.js b/src/ol/control/rotatecontrol.js index 9e4d9bf5de..0d041b8554 100644 --- a/src/ol/control/rotatecontrol.js +++ b/src/ol/control/rotatecontrol.js @@ -31,15 +31,13 @@ ol.control.Rotate = function(opt_options) { var className = goog.isDef(options.className) ? options.className : 'ol-rotate'; - var label = goog.dom.createDom(goog.dom.TagName.SPAN, - { 'class': 'ol-compass' }, - goog.isDef(options.label) ? options.label : '\u21E7'); - /** * @type {Element} * @private */ - this.label_ = label; + this.label_ = goog.dom.createDom(goog.dom.TagName.SPAN, + { 'class': 'ol-compass' }, + goog.isDef(options.label) ? options.label : '\u21E7'); var tipLabel = goog.isDef(options.tipLabel) ? options.tipLabel : 'Reset rotation'; @@ -51,7 +49,7 @@ ol.control.Rotate = function(opt_options) { 'class': className + '-reset ol-has-tooltip', 'name' : 'ResetRotation', 'type' : 'button' - }, tip, label); + }, tip, this.label_); var handler = new ol.pointer.PointerEventHandler(button); this.registerDisposable(handler);