OpenLayers OpenLayers

Changeset 4038

Show
Ignore:
Timestamp:
08/24/07 19:50:43 (11 months ago)
Author:
crschmidt
Message:

Allow for users to determine whether the bounding box should be encoded or
not on WMS and WFS layers. This change, by default, makes us compliant
with the WMS spec again.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/BaseTypes/Bounds.js

    r3984 r4038  
    9999                 + " right-top=(" + this.right + "," + this.top + ")" ); 
    100100    }, 
     101 
     102    /** 
     103     * APIMethod: toArray 
     104     * 
     105     * Return: 
     106     * {Array} array of left, bottom, right, top 
     107     */ 
     108    toArray: function() { 
     109        return [this.left, this.bottom, this.right, this.top]; 
     110    },     
    101111 
    102112    /**  
  • trunk/openlayers/lib/OpenLayers/Layer/WFS.js

    r3984 r4038  
    5252     */ 
    5353    vectorMode: true,  
     54     
     55    /** 
     56     * APIProperty: encodeBBOX 
     57     * {Boolean} Should the BBOX commas be encoded? The WMS spec says 'no',  
     58     * but some services want it that way. Default false. 
     59     */ 
     60    encodeBBOX: false, 
    5461 
    5562    /** 
     
    197204            var url = this.getFullRequestString(); 
    198205         
    199             var params = { BBOX:tileBounds.toBBOX() }; 
     206            var params = {BBOX: this.encodeBBOX ? tileBounds.toBBOX()  
     207                                                : tileBounds.toArray()}; 
    200208            url += "&" + OpenLayers.Util.getParameterString(params); 
    201209 
  • trunk/openlayers/lib/OpenLayers/Layer/WMS.js

    r3984 r4038  
    4444     */ 
    4545    isBaseLayer: true, 
     46     
     47    /** 
     48     * APIProperty: encodeBBOX 
     49     * {Boolean} Should the BBOX commas be encoded? The WMS spec says 'no',  
     50     * but some services want it that way. Default false. 
     51     */ 
     52    encodeBBOX: false, 
    4653  
    4754    /** 
     
    147154        var imageSize = this.getImageSize();  
    148155        return this.getFullRequestString( 
    149                      {BBOX:bounds.toBBOX(), 
     156                     {BBOX: this.encodeBBOX ?  bounds.toBBOX() : bounds.toArray(), 
    150157                      WIDTH:imageSize.w, 
    151158                      HEIGHT:imageSize.h}); 
  • trunk/openlayers/tests/BaseTypes/test_Bounds.html

    r3814 r4038  
    6161         t.eq( bounds.toString(), "left-bottom=(1,2) right-top=(3,4)", "toString() returns correct value." );  
    6262     } 
     63     function test_Bounds_toArray(t) { 
     64         t.plan( 1 ); 
     65         bounds = new OpenLayers.Bounds(1,2,3,4); 
     66         t.eq( bounds.toArray(), [1,2,3,4], "toArray() returns correct value." );  
     67     } 
    6368 
    6469     function test_04_Bounds_contains(t) { 
  • trunk/openlayers/tests/Layer/test_WFS.html

    r3076 r4038  
    2929 
    3030    } 
     31    function test_Layer_WFS_drawmap(t) { 
     32        t.plan(2); 
     33        var map = new OpenLayers.Map('map'); 
     34        layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",  
     35            "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} ); 
     36        map.addLayer(layer); 
     37 
     38        layer = new OpenLayers.Layer.WFS( "Owl Survey", 
     39            "http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?", 
     40            {typename: "OWLS", maxfeatures: 10}, 
     41            { featureClass: OpenLayers.Feature.WFS}); 
     42        map.addLayer(layer); 
     43        map.addControl(new OpenLayers.Control.LayerSwitcher()); 
     44        try {  
     45            map.setCenter(new OpenLayers.LonLat(-100, 60), 3); 
     46        } catch (Exception) { 
     47        }     
     48        t.eq(layer.tile.url, "http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?typename=OWLS&maxfeatures=10&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&SRS=EPSG%3A4326&BBOX=-187.890625,-36.6796875,-12.109375,156.6796875", "Tile URL is set correctly when not encoded"); 
     49        var map = new OpenLayers.Map('map'); 
     50        layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",  
     51            "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} 
     52            ); 
     53        map.addLayer(layer); 
     54 
     55        layer = new OpenLayers.Layer.WFS( "Owl Survey", 
     56            "http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?", 
     57            {typename: "OWLS", maxfeatures: 10}, 
     58            { featureClass: OpenLayers.Feature.WFS, 'encodeBBOX': true}); 
     59        map.addLayer(layer); 
     60        map.addControl(new OpenLayers.Control.LayerSwitcher()); 
     61        try {  
     62            map.setCenter(new OpenLayers.LonLat(-100, 60), 3); 
     63        } catch (Exception) { 
     64        }   
     65        t.eq(layer.tile.url, "http://www.bsc-eoc.org/cgi-bin/bsc_ows.asp?typename=OWLS&maxfeatures=10&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&SRS=EPSG%3A4326&BBOX=-187.890625%2C-36.679687%2C-12.109375%2C156.679688", "Tile URL is set correctly when not encoded"); 
     66    } 
     67 
    3168  // --> 
    3269  </script> 
  • trunk/openlayers/tests/Layer/test_WMS.html

    r3928 r4038  
    5858        var url = "http://octo.metacarta.com/cgi-bin/mapserv"; 
    5959        layer = new OpenLayers.Layer.WMS(name, url, params); 
     60        var map = new OpenLayers.Map('map'); 
     61        map.addLayer(layer); 
     62        var pixel = new OpenLayers.Pixel(5,6); 
     63        var tile = layer.addTile(new OpenLayers.Bounds(1,2,3,4), pixel); 
     64        tile.draw(); 
     65 
     66        var img = tile.imgDiv; 
     67        var tParams = OpenLayers.Util.extend({}, 
     68                        OpenLayers.Util.upperCaseObject(params)); 
     69        tParams = OpenLayers.Util.extend(tParams, { 
     70            SERVICE: "WMS", VERSION: "1.1.1", 
     71            REQUEST: "GetMap", STYLES: "", 
     72            EXCEPTIONS: "application/vnd.ogc.se_inimage", 
     73            SRS: "EPSG:4326", BBOX: [1,2,3,4], 
     74            WIDTH: "256", HEIGHT: "256" 
     75        }); 
     76        t.eq( img.src, 
     77             url + "?" + OpenLayers.Util.getParameterString(tParams), 
     78             "image src is created correctly via addtile" ); 
     79        t.eq( tile.frame.style.top, "6px", "image top is set correctly via addtile" ); 
     80        t.eq( tile.frame.style.left, "5px", "image top is set correctly via addtile" ); 
     81 
     82        var firstChild = layer.div.firstChild.firstChild; 
     83        if (!isMozilla) 
     84            t.ok( true, "skipping element test outside of Mozilla"); 
     85        else 
     86            t.ok( firstChild instanceof HTMLElement, "div first child is an image object" ); 
     87        t.eq( firstChild.src, 
     88             url + "?" + OpenLayers.Util.getParameterString(tParams), 
     89             "div first child is correct image object" ); 
     90        t.eq( tile.position.toString(), "x=5,y=6", "Position of tile is set correctly." ); 
     91        map.destroy(); 
     92    } 
     93     
     94    function test_Layer_WMS_bboxEncoding (t) { 
     95        t.plan( 6 ); 
     96     
     97        var url = "http://octo.metacarta.com/cgi-bin/mapserv"; 
     98        layer = new OpenLayers.Layer.WMS(name, url, params, {encodeBBOX:true}); 
    6099        var map = new OpenLayers.Map('map'); 
    61100        map.addLayer(layer); 
  • trunk/openlayers/tests/Layer/test_WrapDateLine.html

    r3323 r4038  
    128128 
    129129        var url = "http://octo.metacarta.com/cgi-bin/mapserv"; 
    130         layer = new OpenLayers.Layer.WMS(name, url, params, {'wrapDateLine':true}); 
     130        layer = new OpenLayers.Layer.WMS(name, url, params, {'wrapDateLine':true,encodeBBOX:true}); 
    131131        var m = new OpenLayers.Map('map'); 
    132132        m.addLayer(layer); 
     
    160160                     "prov_bound,fedlimit,rail,road,popplace", 
    161161             transparent: "true", format: "image/png"}, 
    162             {wrapDateLine: true, reproject: false}); 
     162            {wrapDateLine: true, reproject: false,encodeBBOX:true}); 
    163163        var m = new OpenLayers.Map('map'); 
    164164        m.addLayers([baselayer,layer]); 
  • trunk/openlayers/tests/Tile/test_Image.html

    r3725 r4038  
    6565            REQUEST: "GetMap", STYLES: "", 
    6666            EXCEPTIONS: "application/vnd.ogc.se_inimage", FORMAT: "image/jpeg", 
    67             SRS: "EPSG:4326", BBOX: "1,2,3,4"
     67            SRS: "EPSG:4326", BBOX: [1,2,3,4]
    6868            WIDTH: String(size.w), HEIGHT: String(size.h) 
    6969        }; 
     
    8787        var map = new OpenLayers.Map('map'); 
    8888        var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",  
    89             "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'}, {reproject:false});  
     89            "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'}, {reproject:false, encodeBBOX: true});  
    9090        map.addLayer(layer); 
    9191        tile = new OpenLayers.Tile.Image(layer, position, new OpenLayers.Bounds(-185,-90,-180,90), url, size);