OpenLayers OpenLayers

Changeset 1531

Show
Ignore:
Timestamp:
10/02/06 21:08:00 (2 years ago)
Author:
crschmidt
Message:

Tiles should not load data outside maxExtent unless the
'displayOutsideMaxExtent' option on the layer is set to true. Add
tests, docs, and code.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/doc/Layer.txt

    r1472 r1531  
    2323   
    2424* Parameters 
     25  displayOutsideMaxExtent -- Determine whether images or data are loaded outside the maxExtent. Default is false. 
    2526  isBaseLayer -- This determines whether the layer is a base layer or an overlay. Only one Base Layer can be displayed on the map at once. Default is false. 
    2627  projection -- SRS string to describe the layer. If this is set on the map before the Layer is added to the map, it will inherit from the map. 
  • trunk/openlayers/lib/OpenLayers/Layer.js

    r1528 r1531  
    7979    /** @type float */ 
    8080    maxScale: null, 
     81 
     82    /** @type Boolean */ 
     83    displayOutsideMaxExtent: false, 
    8184     
    8285     
  • trunk/openlayers/lib/OpenLayers/Tile/Image.js

    r1433 r1531  
    5050 
    5151        this.imgDiv.style.display = "none"; 
    52         if (this.layer.alpha) { 
    53             OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv, 
    54                     null, this.position, this.size, this.url); 
    55         } else { 
    56             this.imgDiv.src = this.url; 
    57             OpenLayers.Util.modifyDOMElement(this.imgDiv, 
    58                     null, this.position, this.size) ; 
     52        if (this.layer.displayOutsideMaxExtent || (this.layer.maxExtent &&  
     53            (this.bounds.intersectsBounds(this.layer.maxExtent,false)) 
     54            )) {  
     55            if (this.layer.alpha) { 
     56                OpenLayers.Util.modifyAlphaImageDiv(this.imgDiv, 
     57                        null, this.position, this.size, this.url); 
     58            } else { 
     59                this.imgDiv.src = this.url; 
     60                OpenLayers.Util.modifyDOMElement(this.imgDiv, 
     61                        null, this.position, this.size) ; 
     62            } 
    5963        } 
    6064    }, 
  • trunk/openlayers/lib/OpenLayers/Tile/WFS.js

    r1424 r1531  
    6464        } 
    6565        OpenLayers.Tile.prototype.draw.apply(this, arguments); 
    66         this.loadFeaturesForRegion(this.requestSuccess);         
     66        if (this.layer.displayOutsideMaxExtent || (this.layer.maxExtent &&  
     67            this.layer.maxExtent.intersectsBounds(this.bounds, false))) {  
     68            this.loadFeaturesForRegion(this.requestSuccess); 
     69        }          
    6770    }, 
    6871 
  • trunk/openlayers/tests/test_Tile_Image.html

    r1424 r1531  
    2828        t.plan( 5 ); 
    2929 
    30         var layer = new Object(); //bogus layer 
     30        var layer = {maxExtent:new OpenLayers.Bounds(-180,-90,180,90)}; //bogus layer 
    3131        layer.div = document.createElement("div"); 
    3232        var position = new OpenLayers.Pixel(20,30); 
     
    5252        t.eq( tile.imgDiv.style.height, "6px", "Image height is correct" ); 
    5353    } 
    54  
     54    function test_03_Tile_Image_OutsideMaxExtent(t) { 
     55        t.plan( 11 ); 
     56        var position = new OpenLayers.Pixel(20,30); 
     57        var bounds = new OpenLayers.Bounds(1,2,3,4); 
     58        var url = "http://www.openlayers.org/dev/tests/tileimage"; 
     59        var size = new OpenLayers.Size(5,6); 
     60        var map = new OpenLayers.Map('map'); 
     61        var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",  
     62            "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'});  
     63        map.addLayer(layer); 
     64        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-185,-90,-180,90), url, size); 
     65        tile.draw() 
     66        t.eq(tile.imgDiv.src, "", "Images against side of maxextent don't load"); 
     67        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-181,-91,180,90), url, size); 
     68        tile.draw() 
     69        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Images over edges of maxextent do load"); 
     70        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-181,-90,180,90), url, size); 
     71        tile.draw() 
     72        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Images over edges of maxextent do load"); 
     73        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-180,-90,180,90), url, size); 
     74        tile.draw() 
     75        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Image covering all of extent loads"); 
     76        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-80,-45,80,45), url, size); 
     77        tile.draw() 
     78        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Image covering small part of extent loads"); 
     79        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-185,-95,185,95), url, size); 
     80        tile.draw() 
     81        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Image covering more than all of extent loads"); 
     82         
     83        layer.displayOutsideMaxExtent=1; 
     84        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-185,-90,-180,90), url, size); 
     85        tile.draw() 
     86        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Images against side of maxextent do load with displayOutsideMaxExtent"); 
     87        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-181,-90,180,90), url, size); 
     88        tile.draw() 
     89        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Images over edges of maxextent do load with displayOutsideMaxExtent set"); 
     90        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-180,-90,180,90), url, size); 
     91        tile.draw() 
     92        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Image covering all of extent loads with display outside max extent"); 
     93        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-80,-45,80,45), url, size); 
     94        tile.draw() 
     95        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Image covering small part of extent loads with display outside max extent"); 
     96        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-185,-95,185,95), url, size); 
     97        tile.draw() 
     98        t.eq(tile.imgDiv.src, "http://www.openlayers.org/dev/tests/tileimage", "Image covering more than all of extent loads"); 
     99    }  
    55100  // --> 
    56101  </script> 
    57102</head> 
    58103<body> 
     104<div id="map"></div> 
    59105</body> 
    60106</html>