From 0fd66294591b5743d5cc70847bdf8d226d8069fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 21 Aug 2012 06:54:42 +0200 Subject: [PATCH 1/6] map renderer should not render if map is not defined --- src/ol/dom/maprenderer.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ol/dom/maprenderer.js b/src/ol/dom/maprenderer.js index 2014f10901..3198901244 100644 --- a/src/ol/dom/maprenderer.js +++ b/src/ol/dom/maprenderer.js @@ -96,6 +96,10 @@ ol.dom.MapRenderer.prototype.createLayerRenderer = function(layer) { */ ol.dom.MapRenderer.prototype.handleCenterChanged = function() { goog.base(this, 'handleCenterChanged'); + var map = this.getMap(); + if (!map.isDef()) { + return; + } // FIXME: shiftLayersPane_ and resetLayersPane_ should be called // elsewhere as we may be frozen here if (goog.isDef(this.renderedCenter_)) { @@ -112,6 +116,10 @@ ol.dom.MapRenderer.prototype.handleCenterChanged = function() { */ ol.dom.MapRenderer.prototype.handleResolutionChanged = function() { goog.base(this, 'handleResolutionChanged'); + var map = this.getMap(); + if (!map.isDef()) { + return; + } // FIXME: resetLayersPane_ should be called // elsewhere as we may be frozen here this.resetLayersPane_(); From 042893a81771b198e968b63b4fe5c42ddcc520b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 21 Aug 2012 06:55:21 +0200 Subject: [PATCH 2/6] enable DOM in two-layers example --- demos/two-layers/index.html.in | 2 +- demos/two-layers/two-layers.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/demos/two-layers/index.html.in b/demos/two-layers/index.html.in index 96c1c5922b..0e3abdb732 100644 --- a/demos/two-layers/index.html.in +++ b/demos/two-layers/index.html.in @@ -18,7 +18,7 @@ WebGL -
Coming soon...
+
diff --git a/demos/two-layers/two-layers.js b/demos/two-layers/two-layers.js index 6b6b2a39c2..e2f7a7634a 100644 --- a/demos/two-layers/two-layers.js +++ b/demos/two-layers/two-layers.js @@ -11,7 +11,7 @@ goog.require('ol.layer.TileJSON'); * FIXME Remove this define when it does * @define {boolean} Enable DOM map. */ -ol.TWO_LAYERS_DEMO_ENABLE_DOM = false; +ol.TWO_LAYERS_DEMO_ENABLE_DOM = true; var layer1 = new ol.layer.BingMaps( From 95a2b3845c4fb26e81a2da80587fe49ba4a1b862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 21 Aug 2012 06:55:57 +0200 Subject: [PATCH 3/6] map renderer should call map.render instead of this.render --- src/ol/dom/maprenderer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ol/dom/maprenderer.js b/src/ol/dom/maprenderer.js index 3198901244..460b333d36 100644 --- a/src/ol/dom/maprenderer.js +++ b/src/ol/dom/maprenderer.js @@ -107,7 +107,7 @@ ol.dom.MapRenderer.prototype.handleCenterChanged = function() { } else { this.resetLayersPane_(); } - this.render(); + map.render(); }; @@ -123,7 +123,7 @@ ol.dom.MapRenderer.prototype.handleResolutionChanged = function() { // FIXME: resetLayersPane_ should be called // elsewhere as we may be frozen here this.resetLayersPane_(); - this.render(); + map.render(); }; From 3afe799cf3765505c10574aae047ed8961a907f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 21 Aug 2012 21:23:45 +0200 Subject: [PATCH 4/6] dom.LayerRenderer.handleLayerLoad addition --- src/ol/dom/layerrenderer.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ol/dom/layerrenderer.js b/src/ol/dom/layerrenderer.js index 7667c13b30..777da25442 100644 --- a/src/ol/dom/layerrenderer.js +++ b/src/ol/dom/layerrenderer.js @@ -45,6 +45,14 @@ ol.dom.LayerRenderer.prototype.getMapRenderer = function() { }; +/** + * @inheritDoc + */ +ol.dom.LayerRenderer.prototype.handleLayerLoad = function() { + this.getMap().render(); +}; + + /** * @inheritDoc */ From e0a6f3aeebdff307b11addbb8d96b02b9c0aba58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 21 Aug 2012 21:24:12 +0200 Subject: [PATCH 5/6] remove ol.TWO_LAYERS_DEMO_ENABLE_DOM from two-layers example --- demos/two-layers/two-layers.js | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/demos/two-layers/two-layers.js b/demos/two-layers/two-layers.js index e2f7a7634a..fdc3cb0633 100644 --- a/demos/two-layers/two-layers.js +++ b/demos/two-layers/two-layers.js @@ -6,14 +6,6 @@ goog.require('ol.layer.BingMaps'); goog.require('ol.layer.TileJSON'); -/** - * FIXME The DOM renderer doesn't support partially-loaded layers yet - * FIXME Remove this define when it does - * @define {boolean} Enable DOM map. - */ -ol.TWO_LAYERS_DEMO_ENABLE_DOM = true; - - var layer1 = new ol.layer.BingMaps( ol.BingMapsStyle.AERIAL, 'AheP841R-MsLErKQChaTba_xDoOCl40-EeTubD9uNhNAyQTePwFY9iVD1_pyqqlE'); @@ -32,19 +24,14 @@ goog.events.listen(layer2, goog.events.EventType.LOAD, function() { webglMap.setResolution(layer2.getStore().getResolutions()[5]); }); -var domMap; -if (ol.TWO_LAYERS_DEMO_ENABLE_DOM) { - domMap = ol.createMap( - document.getElementById('domMap'), - {}, - ol.RendererHint.DOM); - domMap.bindTo('center', webglMap); - domMap.bindTo('layers', webglMap); - domMap.bindTo('resolution', webglMap); - domMap.bindTo('rotation', webglMap); -} else { - domMap = null; -} +var domMap = ol.createMap( + document.getElementById('domMap'), + {}, + ol.RendererHint.DOM); +domMap.bindTo('center', webglMap); +domMap.bindTo('layers', webglMap); +domMap.bindTo('resolution', webglMap); +domMap.bindTo('rotation', webglMap); var attributionControl = new ol.control.Attribution(webglMap); document.getElementById('attribution').appendChild( From d0ffc6186d36c2a840363cbfac569ae7c3c7a391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 22 Aug 2012 10:33:30 +0200 Subject: [PATCH 6/6] remove FIXMEs --- src/ol/dom/tilelayerrenderer.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/ol/dom/tilelayerrenderer.js b/src/ol/dom/tilelayerrenderer.js index 5c66bcf786..25a77b3a5c 100644 --- a/src/ol/dom/tilelayerrenderer.js +++ b/src/ol/dom/tilelayerrenderer.js @@ -1,6 +1,3 @@ -// FIXME ol.dom.TileLayerRenderer should cope with "not ready" layers -// FIXME ol.dom.TileLayerRenderer should re-render when layer loads - goog.provide('ol.dom.TileLayerRenderer'); goog.require('goog.dom');