1
/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD
2
* license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
3
* full text of the license. */
6
* @requires OpenLayers/Filter.js
10
* Class: OpenLayers.Filter.Spatial
11
* This class represents a spatial filter.
12
* Currently implemented: BBOX, DWithin and Intersects
15
* - <OpenLayers.Filter>
17
OpenLayers.Filter.Spatial = OpenLayers.Class(OpenLayers.Filter, {
21
* {String} Type of spatial filter.
23
* The type should be one of:
24
* - OpenLayers.Filter.Spatial.BBOX
25
* - OpenLayers.Filter.Spatial.INTERSECTS
26
* - OpenLayers.Filter.Spatial.DWITHIN
31
* APIProperty: property
32
* {String} Name of the context property to compare.
38
* {<OpenLayers.Bounds> || <OpenLayers.Geometry>} The bounds or geometry
39
* to be used by the filter. Use bounds for BBOX filters and geometry
40
* for INTERSECTS or DWITHIN filters.
45
* APIProperty: distance
46
* {Number} The distance to use in a DWithin spatial filter.
51
* APIProperty: distanceUnits
52
* {String} The units to use for the distance, e.g. 'm'.
57
* Constructor: OpenLayers.Filter.Spatial
58
* Creates a spatial filter.
61
* options - {Object} An optional object with properties to set on the
65
* {<OpenLayers.Filter.Spatial>}
67
initialize: function(options) {
68
OpenLayers.Filter.prototype.initialize.apply(this, [options]);
73
* Evaluates this filter for a specific feature.
76
* feature - {<OpenLayers.Feature.Vector>} feature to apply the filter to.
79
* {Boolean} The feature meets filter criteria.
81
evaluate: function(feature) {
82
var intersect = false;
84
case OpenLayers.Filter.Spatial.BBOX:
85
case OpenLayers.Filter.Spatial.INTERSECTS:
86
if(feature.geometry) {
87
var geom = this.value;
88
if(this.value.CLASS_NAME == "OpenLayers.Bounds") {
89
geom = this.value.toGeometry();
91
if(feature.geometry.intersects(geom)) {
97
OpenLayers.Console.error(
98
OpenLayers.i18n("filterEvaluateNotImplemented"));
104
CLASS_NAME: "OpenLayers.Filter.Spatial"
107
OpenLayers.Filter.Spatial.BBOX = "BBOX";
108
OpenLayers.Filter.Spatial.INTERSECTS = "INTERSECTS";
109
OpenLayers.Filter.Spatial.DWITHIN = "DWITHIN";