updates to allow a wfs layer to query multiple wfs servers with the same parameters. untested, but all tests pass.
git-svn-id: http://svn.openlayers.org/trunk/openlayers@941 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -93,7 +93,7 @@ OpenLayers.Layer.HTTPRequest.prototype =
|
|||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
/** combine the layer's url with its params and these newParams.
|
/** combine url with layer's params and these newParams.
|
||||||
*
|
*
|
||||||
* does checking on the serverPath variable, allowing for cases when it
|
* does checking on the serverPath variable, allowing for cases when it
|
||||||
* is supplied with trailing ? or &, as well as cases where not.
|
* is supplied with trailing ? or &, as well as cases where not.
|
||||||
@@ -102,13 +102,17 @@ OpenLayers.Layer.HTTPRequest.prototype =
|
|||||||
* "server?key1=value1&key2=value2&key3=value3"
|
* "server?key1=value1&key2=value2&key3=value3"
|
||||||
*
|
*
|
||||||
* @param {Object} newParams
|
* @param {Object} newParams
|
||||||
|
* @param {String} altUrl Use this as the url instead of the layer's url
|
||||||
*
|
*
|
||||||
* @type String
|
* @type String
|
||||||
*/
|
*/
|
||||||
getFullRequestString:function(newParams) {
|
getFullRequestString:function(newParams, altUrl) {
|
||||||
|
|
||||||
//requestString always starts with url
|
// use layer's url unless altUrl passed in
|
||||||
var requestString = this.url;
|
var url = (altUrl == null) ? this.url : altUrl;
|
||||||
|
|
||||||
|
// requestString always starts with url
|
||||||
|
var requestString = url;
|
||||||
|
|
||||||
// create a new params hash with all the layer params and the
|
// create a new params hash with all the layer params and the
|
||||||
// new params together. then convert to string
|
// new params together. then convert to string
|
||||||
|
|||||||
@@ -110,11 +110,20 @@ OpenLayers.Layer.WFS.prototype =
|
|||||||
* @type OpenLayers.Tile.WFS
|
* @type OpenLayers.Tile.WFS
|
||||||
*/
|
*/
|
||||||
addTile:function(bounds, position) {
|
addTile:function(bounds, position) {
|
||||||
var url = this.getFullRequestString(
|
var urls = new Array();
|
||||||
{ BBOX:bounds.toBBOX() });
|
|
||||||
|
//add standard URL
|
||||||
|
urls.push( this.getFullRequestString( { BBOX:bounds.toBBOX() }) );
|
||||||
|
|
||||||
|
// if there are more urls, add them.
|
||||||
|
for(var i=0; i < this.urls.length; i++) {
|
||||||
|
var newUrl = this.getFullRequestString( { BBOX:bounds.toBBOX() },
|
||||||
|
this.urls[i] );
|
||||||
|
urls.push(newUrl);
|
||||||
|
}
|
||||||
|
|
||||||
return new OpenLayers.Tile.WFS(this, position, bounds,
|
return new OpenLayers.Tile.WFS(this, position, bounds,
|
||||||
url, this.tileSize);
|
urls, this.tileSize);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,14 @@ OpenLayers.Tile.WFS.prototype =
|
|||||||
* @param {OpenLayers.Layer} layer
|
* @param {OpenLayers.Layer} layer
|
||||||
* @param {OpenLayers.Pixel} position
|
* @param {OpenLayers.Pixel} position
|
||||||
* @param {OpenLayers.Bounds} bounds
|
* @param {OpenLayers.Bounds} bounds
|
||||||
* @param {String} url
|
* @param {Array} urls
|
||||||
* @param {OpenLayers.Size} size
|
* @param {OpenLayers.Size} size
|
||||||
*/
|
*/
|
||||||
initialize: function(layer, position, bounds, url, size) {
|
initialize: function(layer, position, bounds, urls, size) {
|
||||||
|
var newArguments = [layer, position, bounds, null, size];
|
||||||
OpenLayers.Tile.prototype.initialize.apply(this, arguments);
|
OpenLayers.Tile.prototype.initialize.apply(this, arguments);
|
||||||
|
|
||||||
|
this.urls = urls;
|
||||||
this.features = new Array();
|
this.features = new Array();
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -57,13 +59,17 @@ OpenLayers.Tile.WFS.prototype =
|
|||||||
|
|
||||||
if (!this.loaded) {
|
if (!this.loaded) {
|
||||||
|
|
||||||
if (this.url != "") {
|
if (this.urls != null) {
|
||||||
|
|
||||||
// TODO: Hmmm, this stops multiple loads of the data when a
|
// TODO: Hmmm, this stops multiple loads of the data when a
|
||||||
// result isn't immediately retrieved, but it's hacky.
|
// result isn't immediately retrieved, but it's hacky.
|
||||||
// Do it better.
|
// Do it better.
|
||||||
this.loaded = true;
|
this.loaded = true;
|
||||||
OpenLayers.loadURL(this.url, null, this, success, failure);
|
|
||||||
|
for(var i=0; i < this.urls.length; i++) {
|
||||||
|
OpenLayers.loadURL(this.urls[i], null, this,
|
||||||
|
success, failure);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
tParams = { layers: 'basic',
|
tParams = { layers: 'basic',
|
||||||
format: 'image/png'};
|
format: 'image/png'};
|
||||||
|
|
||||||
t.plan( 7 );
|
t.plan( 8 );
|
||||||
|
|
||||||
// without ?
|
// without ?
|
||||||
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
|
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
|
||||||
@@ -158,6 +158,12 @@
|
|||||||
layers:"road" } );
|
layers:"road" } );
|
||||||
t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&chicken=6&layers=road", "getFullRequestString() works for layer with null params passing in new params");
|
t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?param1=5&chicken=6&layers=road", "getFullRequestString() works for layer with null params passing in new params");
|
||||||
|
|
||||||
|
// with specified altUrl parameter
|
||||||
|
tUrl = "http://octo.metacarta.com/cgi-bin/mapserv";
|
||||||
|
layer = new OpenLayers.Layer.HTTPRequest(name, "chicken", tParams, null);
|
||||||
|
str = layer.getFullRequestString(null, tUrl);
|
||||||
|
t.eq(str, "http://octo.metacarta.com/cgi-bin/mapserv?layers=basic&format=image/png", "getFullRequestString() works for url sans ?");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function test_99_Layer_HTTPRequest_destroy (t) {
|
function test_99_Layer_HTTPRequest_destroy (t) {
|
||||||
|
|||||||
Reference in New Issue
Block a user