[OpenLayers-Commits] r11015 - in trunk/openlayers:
lib/OpenLayers/Protocol tests/Protocol
commits-20090109 at openlayers.org
commits-20090109 at openlayers.org
Thu Jan 6 16:39:15 EST 2011
Author: tschaub
Date: 2011-01-06 13:39:14 -0800 (Thu, 06 Jan 2011)
New Revision: 11015
Modified:
trunk/openlayers/lib/OpenLayers/Protocol/HTTP.js
trunk/openlayers/tests/Protocol/HTTP.html
Log:
Optionally include SRS id in serialized BBOX by constructing a HTTP protocol with srsInBBOX true. r=elemoine (closes #3006).
Modified: trunk/openlayers/lib/OpenLayers/Protocol/HTTP.js
===================================================================
--- trunk/openlayers/lib/OpenLayers/Protocol/HTTP.js 2011-01-05 19:34:59 UTC (rev 11014)
+++ trunk/openlayers/lib/OpenLayers/Protocol/HTTP.js 2011-01-06 21:39:14 UTC (rev 11015)
@@ -80,6 +80,15 @@
wildcarded: false,
/**
+ * APIProperty: srsInBBOX
+ * {Boolean} Include the SRS identifier in BBOX query string parameter.
+ * Default is false. If true and the layer has a projection object set,
+ * any BBOX filter will be serialized with a fifth item identifying the
+ * projection. E.g. bbox=-1000,-1000,1000,1000,EPSG:900913
+ */
+ srsInBBOX: false,
+
+ /**
* Constructor: OpenLayers.Protocol.HTTP
* A class for giving layers generic HTTP protocol.
*
@@ -200,6 +209,9 @@
switch(filter.type) {
case OpenLayers.Filter.Spatial.BBOX:
params.bbox = filter.value.toArray();
+ if (this.srsInBBOX && filter.projection) {
+ params.bbox.push(filter.projection.getCode());
+ }
break;
case OpenLayers.Filter.Spatial.DWITHIN:
params.tolerance = filter.distance;
Modified: trunk/openlayers/tests/Protocol/HTTP.html
===================================================================
--- trunk/openlayers/tests/Protocol/HTTP.html 2011-01-05 19:34:59 UTC (rev 11014)
+++ trunk/openlayers/tests/Protocol/HTTP.html 2011-01-06 21:39:14 UTC (rev 11015)
@@ -199,29 +199,43 @@
}
function test_read_bbox(t) {
- t.plan(1);
- var protocol = new OpenLayers.Protocol.HTTP();
+ t.plan(6);
- // fake XHR request object
- var request = {'status': 200};
-
var _get = OpenLayers.Request.GET;
var bounds = new OpenLayers.Bounds(1, 2, 3, 4);
var filter = new OpenLayers.Filter.Spatial({
type: OpenLayers.Filter.Spatial.BBOX,
value: bounds,
- projection: "foo"
+ projection: new OpenLayers.Projection("foo")
});
+ // log requests
+ var log, exp;
OpenLayers.Request.GET = function(options) {
- t.eq(options.params['bbox'].toString(), bounds.toArray().toString(),
- 'GET called with bbox filter in params');
- return request;
+ log.push(options.params.bbox);
+ return {status: 200};
};
- var resp = protocol.read({filter: filter});
+ // 1) issue request with default protocol
+ log = [];
+ new OpenLayers.Protocol.HTTP().read({filter: filter});
+ t.eq(log.length, 1, "1) GET called once");
+ t.ok(log[0] instanceof Array, "1) bbox param is array");
+ exp = bounds.toArray();
+ t.eq(log[0], exp, "1) bbox param doesn't include SRS id by default");
+
+ // 2) issue request with default protocol
+ log = [];
+ new OpenLayers.Protocol.HTTP({srsInBBOX: true}).read({filter: filter});
+
+ t.eq(log.length, 1, "2) GET called once");
+ t.ok(log[0] instanceof Array, "2) bbox param is array");
+ exp = bounds.toArray();
+ exp.push("foo");
+ t.eq(log[0], exp, "2) bbox param includes SRS id if srsInBBOX is true");
+
OpenLayers.Request.GET = _get;
}
More information about the Commits
mailing list