test_Tile_Image.html 9.12 KB
<html>
<head>
  <script src="../lib/OpenLayers.js"></script>
  <script type="text/javascript"><!--
    var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
    var tile; 
    
    function test_01_Tile_Image_constructor (t) {
        t.plan( 6 );
        
        var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
            "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'}); 

        var position = new OpenLayers.Pixel(20,30);
        var bounds = new OpenLayers.Bounds(1,2,3,4);
        var url = "http://www.openlayers.org/dev/tests/tileimage";
        var size = new OpenLayers.Size(5,6);
        tile = new OpenLayers.Tile.Image(layer, position, bounds, url, size);
        
        t.ok( tile instanceof OpenLayers.Tile.Image, "new OpenLayers.Tile returns Tile object" );
        t.ok( tile.layer == layer, "tile.layer is set correctly");
        t.ok( tile.position.equals(position), "tile.position is set correctly");
        t.ok( tile.bounds.equals(bounds), "tile.bounds is set correctly");
        t.eq( tile.url, url, "tile.url is set correctly");
        t.ok( tile.size.equals(size), "tile.size is set correctly");
    }
    function test_02_Tile_Image_draw (t) {
        t.plan( 5 );

        var map = new OpenLayers.Map('map');
        
        layer = new OpenLayers.Layer.WMS("Name", "http://labs.metacarta.com/TESTURL");  
        map.addLayer(layer);  
        var position = new OpenLayers.Pixel(20,30);
        var bounds = new OpenLayers.Bounds(1,2,3,4);
        var url = "http://www.openlayers.org/dev/tests/tileimage";
        var size = new OpenLayers.Size(5,6);
        tile = new OpenLayers.Tile.Image(layer, position, bounds, url, size);
        
        tile.draw();
        var img = tile.imgDiv;
        
        if (!isMozilla)
            t.ok( true, "skipping element test outside of Mozilla");
        else
            t.ok( tile.imgDiv instanceof HTMLElement, "tile.draw creates an image");
        if (!isMozilla)
            t.ok( true, "skipping element test outside of Mozilla");
        else
            t.ok( img instanceof HTMLImageElement, "tile.draw creates an image");
        var tParams = {
            SERVICE: "WMS", VERSION: "1.1.1",
            REQUEST: "GetMap", STYLES: "",
            EXCEPTIONS: "application/vnd.ogc.se_inimage", FORMAT: "image/jpeg",
            SRS: "EPSG:4326", BBOX: "1,2,3,4",
            WIDTH: "256", HEIGHT: "256"
        };
        t.eq( img.src,
             "http://labs.metacarta.com/TESTURL?" + OpenLayers.Util.getParameterString(tParams),
             "tile.draw creates an image");
        t.eq( tile.imgDiv.style.width, "5px", "Image width is correct" );
        t.eq( tile.imgDiv.style.height, "6px", "Image height is correct" );
    }
    function test_03_Tile_Image_OutsideMaxExtent(t) {
        t.plan( 11 );
        var position = new OpenLayers.Pixel(20,30);
        var bounds = new OpenLayers.Bounds(1,2,3,4);
        var url = "http://www.openlayers.org/dev/tests/tileimage";
        var size = new OpenLayers.Size(5,6);
        var map = new OpenLayers.Map('map');
        var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
            "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'}, {reproject:false}); 
        map.addLayer(layer);
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-185,-90,-180,90), url, size);
        tile.draw()
        t.eq(tile.imgDiv, null, "Images against side of maxextent don't load");
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-181,-91,180,90), url, size);
        tile.draw()
        var tParams = {
            LAYERS: "basic", SERVICE: "WMS", VERSION: "1.1.1",
            REQUEST: "GetMap", STYLES: "",
            EXCEPTIONS: "application/vnd.ogc.se_inimage", FORMAT: "image/jpeg",
            SRS: "EPSG:4326", BBOX: "-181,-91,180,90",
            WIDTH: "256", HEIGHT: "256"
        };
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Images over edges of maxextent do load");
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-181,-90,180,90), url, size);
        tile.draw()
        tParams = OpenLayers.Util.extend(tParams, {BBOX: "-181,-90,180,90"});
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Images over edges of maxextent do load");
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-180,-90,180,90), url, size);
        tile.draw()
        tParams = OpenLayers.Util.extend(tParams, {BBOX: "-180,-90,180,90"});
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Image covering all of extent loads");
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-80,-45,80,45), url, size);
        tile.draw()
        tParams = OpenLayers.Util.extend(tParams, {BBOX: "-80,-45,80,45"});
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Image covering small part of extent loads");
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-185,-95,185,95), url, size);
        tile.draw()
        tParams = OpenLayers.Util.extend(tParams, {BBOX: "-185,-95,185,95"});
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Image covering more than all of extent loads");

        layer.displayOutsideMaxExtent=1;
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-185,-90,-180,90), url, size);
        tile.draw()
        tParams = OpenLayers.Util.extend(tParams, {BBOX: "-185,-90,-180,90"});
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Images against side of maxextent do load with displayOutsideMaxExtent");
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-181,-90,180,90), url, size);
        tile.draw()
        tParams = OpenLayers.Util.extend(tParams, {BBOX: "-181,-90,180,90"});
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Images over edges of maxextent do load with displayOutsideMaxExtent set");
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-180,-90,180,90), url, size);
        tile.draw()
        tParams = OpenLayers.Util.extend(tParams, {BBOX: "-180,-90,180,90"});
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Image covering all of extent loads with display outside max extent");
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-80,-45,80,45), url, size);
        tile.draw()
        tParams = OpenLayers.Util.extend(tParams, {BBOX: "-80,-45,80,45"});
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Image covering small part of extent loads with display outside max extent");
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-185,-95,185,95), url, size);
        tile.draw()
        tParams = OpenLayers.Util.extend(tParams, {BBOX: "-185,-95,185,95"});
        t.eq(tile.imgDiv.src,
             "http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
             "Image covering more than all of extent loads");
    } 
    function test_04_Tile_Image_Display_After_Move(t) {
        t.plan(2);
        var position = new OpenLayers.Pixel(20,30);
        var bounds = new OpenLayers.Bounds(1,2,3,4);
        var url = "http://www.openlayers.org/dev/tests/tileimage";
        var size = new OpenLayers.Size(5,6);
        var map = new OpenLayers.Map('map');
        var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
            "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'}); 
        map.addLayer(layer);
        map.zoomToMaxExtent();
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-90,-85,-90,85), url, size);
        tile.draw();
        tile.moveTo(new OpenLayers.Bounds(-185,-90,-180,-80), new OpenLayers.Pixel(-180,-85), true);
        t.delay_call( 1, function() { t.eq(tile.imgDiv, null, "Tile imgDiv is null.") } );
        var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
            "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'}, {'alpha':true});
        map.addLayer(layer);
        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-90,-85,-90,85), url, size);
        tile.draw();
        tile.moveTo(new OpenLayers.Bounds(-185,-90,-180,-80), new OpenLayers.Pixel(-180,-85), true)
        t.delay_call( 1, function() { t.eq(tile.imgDiv, null, "Alpha tile imgDiv is null.") } );
        
    }
  // -->
  </script>
</head>
<body>
<div id="map" style="height:500px;width:500px"></div>
</body>
</html>