diff --git a/examples/mobile-wmts-vienna.js b/examples/mobile-wmts-vienna.js index 183240a81a..ea38c3c186 100644 --- a/examples/mobile-wmts-vienna.js +++ b/examples/mobile-wmts-vienna.js @@ -168,7 +168,7 @@ var map; {layer:"lb"}, defaults )); labels = format.createLayer(caps, OpenLayers.Util.applyDefaults( - {layer:"beschriftung", isBaseLayer: false}, + {layer:"beschriftung", isBaseLayer: false, transitionEffect: 'map-resize'}, defaults )); map.addLayers([fmzk, aerial, labels]); @@ -217,7 +217,8 @@ var map; ], layer: "beschriftung", style: "normal", - isBaseLayer: false + isBaseLayer: false, + transitionEffect: 'map-resize' }, defaults)); map.addLayers([fmzk, aerial, labels]); diff --git a/lib/OpenLayers/Layer/Grid.js b/lib/OpenLayers/Layer/Grid.js index d3ccfebc3e..1187dabb06 100644 --- a/lib/OpenLayers/Layer/Grid.js +++ b/lib/OpenLayers/Layer/Grid.js @@ -98,9 +98,14 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { * Two posible values: * * "resize" - Existing tiles are resized on zoom to provide a visual - * effect of the zoom having taken place immediately. As the - * new tiles become available, they are drawn over top of the - * resized tiles (this is the default setting). + * effect of the zoom having taken place immediately. As the + * new tiles become available, they are drawn on top of the + * resized tiles (this is the default setting). + * "map-resize" - Existing tiles are resized on zoom and placed below the + * base layer. New tiles for the base layer will cover existing tiles. + * This setting is recommended when having an overlay duplicated during + * the transition is undesirable (e.g. street labels or big transparent + * fills). * null - No transition effect. * * Using "resize" on non-opaque layers can cause undesired visual @@ -705,6 +710,12 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, { backBuffer.id = this.div.id + '_bb'; backBuffer.className = 'olBackBuffer'; backBuffer.style.position = 'absolute'; + var map = this.map; + backBuffer.style.zIndex = this.transitionEffect === 'resize' ? + this.getZIndex() - 1 : + // 'map-resize': + map.Z_INDEX_BASE.BaseLayer - + (map.getNumLayers() - map.getLayerIndex(this)); for(var i=0, lenI=this.grid.length; i