From 5c40e1d570fda27608dc60c67245e33abb489be0 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Wed, 11 Jul 2012 21:20:05 +0200 Subject: [PATCH] Listen for all camera property changes --- src/ol/maprenderer.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/ol/maprenderer.js b/src/ol/maprenderer.js index 5340c1ac8e..4231062259 100644 --- a/src/ol/maprenderer.js +++ b/src/ol/maprenderer.js @@ -2,8 +2,10 @@ goog.provide('ol.MapRenderer'); goog.require('goog.array'); goog.require('goog.events'); +goog.require('goog.object'); goog.require('ol.Array'); goog.require('ol.Camera'); +goog.require('ol.CameraProperty'); goog.require('ol.LayerRenderer'); goog.require('ol.Object'); goog.require('ol.Projection'); @@ -36,6 +38,12 @@ ol.MapRenderer = function(target, opt_values) { */ this.target_ = target; + /** + * @private + * @type {Array.} + */ + this.cameraListenerKeys_ = null; + /** * @private * @type {Array.} @@ -109,6 +117,26 @@ ol.MapRenderer.prototype.getTarget = function() { * @protected */ ol.MapRenderer.prototype.handleCameraChanged = function() { + if (!goog.isNull(this.cameraListenerKeys_)) { + goog.array.forEach(this.cameraListenerKeys_, goog.events.unlistenByKey); + this.cameraListenerKeys_ = null; + } + var camera = this.getCamera(); + if (!goog.isNull(camera)) { + this.cameraListenerKeys_ = goog.array.map( + goog.object.getValues(ol.CameraProperty), + function(cameraProperty) { + return goog.events.listen(camera, cameraProperty, + this.handleCameraPropertyChanged, false, this); + }); + } +}; + + +/** + * @protected + */ +ol.MapRenderer.prototype.handleCameraPropertyChanged = function() { };