OpenLayers OpenLayers

Changeset 7945

Show
Ignore:
Timestamp:
09/04/08 06:54:30 (3 months ago)
Author:
elemoine
Message:

apply changes made in patch-Spatial-1543-r7944-A0.diff (from ticket #1543)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sandbox/camptocamp/unhcr/lib/OpenLayers/Filter/Spatial.js

    r7826 r7945  
    2121     * {String} type: type of spatial filter. This is one of 
    2222     * - OpenLayers.Filter.Spatial.BBOX                 = "BBOX"; 
    23      * - OpenLayers.Filter.Spatial.INTERSECTS             = "INTERSECTS"; 
    24      * - OpenLayers.Filter.Spatial.DWITHIN                = "DWITHIN"; 
     23     * - OpenLayers.Filter.Spatial.INTERSECTS           = "INTERSECTS"; 
     24     * - OpenLayers.Filter.Spatial.DWITHIN              = "DWITHIN"; 
    2525     */ 
    2626    type: null, 
     
    7171 
    7272   /** 
    73     * 
     73    * Method: evaluate 
     74    * Evaluates this filter for a specific feature. 
     75    *  
     76    * Parameters: 
     77    * feature - {<OpenLayers.Feature.Vector>} feature to apply the filter to. 
     78    *  
     79    * Returns: 
     80    * {Boolean} false if the feature is filtered out, true otherwise. 
    7481    */ 
    75     evaluate: function(){ 
    76         //to be implemented 
     82    evaluate: function(feature){ 
     83        var intersect = false; 
     84        switch(this.type) { 
     85            case OpenLayers.Filter.Spatial.BBOX: 
     86            case OpenLayers.Filter.Spatial.INTERSECTS: 
     87                if(feature.geometry) { 
     88                    var geom = this.value; 
     89                    if(this.value.CLASS_NAME == "OpenLayers.Bounds") { 
     90                        geom = this.value.toGeometry(); 
     91                    } 
     92                    if(feature.geometry.intersects(geom)) { 
     93                        intersect = true; 
     94                    } 
     95                } 
     96                break; 
     97            default: 
     98                OpenLayers.Console.error( 
     99                    OpenLayers.i18n("filterEvaluateNotImplemented")); 
     100                break; 
     101        } 
     102        return intersect; 
    77103    }, 
    78104 
     
    82108 
    83109OpenLayers.Filter.Spatial.BBOX                 = "BBOX"; 
    84 OpenLayers.Filter.Spatial.INTERSECTS             = "INTERSECTS"; 
    85 OpenLayers.Filter.Spatial.DWITHIN                = "DWITHIN"; 
     110OpenLayers.Filter.Spatial.INTERSECTS           = "INTERSECTS"; 
     111OpenLayers.Filter.Spatial.DWITHIN              = "DWITHIN"; 
  • sandbox/camptocamp/unhcr/tests/Filter/Spatial.html

    r7826 r7945  
    2424     
    2525    function test_Spatial_evaluate(t) { 
    26         t.plan(0); 
    27       
     26        t.plan(4); 
     27         
     28        var filer, feature, res, geom, bounds; 
     29 
     30        bounds = new OpenLayers.Bounds(0, 0, 10, 10); 
     31        filter = new OpenLayers.Filter.Spatial({ 
     32            type: OpenLayers.Filter.Spatial.BBOX, 
     33            value: bounds 
     34        }); 
     35 
     36        // 1 test 
     37        feature = new OpenLayers.Feature.Vector( 
     38            new OpenLayers.Geometry.Point(2, 2)); 
     39        res = filter.evaluate(feature); 
     40        t.eq(res, true, 
     41            "evaluates returns correct value when feature intersects bounds"); 
     42 
     43        // 1 test 
     44        feature = new OpenLayers.Feature.Vector( 
     45            new OpenLayers.Geometry.Point(20, 20)); 
     46        res = filter.evaluate(feature); 
     47        t.eq(res, false, 
     48            "evaluates returns correct value when feature does not intersect bounds"); 
     49 
     50        // 1 test 
     51        geom = bounds.toGeometry(); 
     52        feature = new OpenLayers.Feature.Vector( 
     53            new OpenLayers.Geometry.Point(2, 2)); 
     54        filter = new OpenLayers.Filter.Spatial({ 
     55            type: OpenLayers.Filter.Spatial.INTERSECTS, 
     56            value: geom 
     57        }); 
     58        res = filter.evaluate(feature); 
     59        t.eq(res, true, 
     60            "evaluates returns correct value when feature intersects bounds"); 
     61 
     62        // 1 test 
     63        geom = bounds.toGeometry(); 
     64        feature = new OpenLayers.Feature.Vector( 
     65            new OpenLayers.Geometry.Point(20, 20)); 
     66        filter = new OpenLayers.Filter.Spatial({ 
     67            type: OpenLayers.Filter.Spatial.INTERSECTS, 
     68            value: geom 
     69        }); 
     70        res = filter.evaluate(feature); 
     71        t.eq(res, false, 
     72            "evaluates returns correct value when feature does not intersect bounds"); 
    2873    } 
    2974    </script>