Change getUrlAsync parameters.

Instead of giving the function a bound, a scope, a property to update
and a callback, only give the bound and a callback.

When the url is retrieved by getUrlAsync, simply call the callback
with the url as argument and let the caller manage this.
This commit is contained in:
fredj
2012-01-27 13:23:08 +01:00
parent 9aa1c4450e
commit fe202cef14
3 changed files with 10 additions and 19 deletions

View File

@@ -205,12 +205,9 @@ OpenLayers.Layer.ArcIMS = OpenLayers.Class(OpenLayers.Layer.Grid, {
* Parameters:
* bounds - {<OpenLayers.Bounds>} A bounds representing the bbox for the
* request.
* scope - {Object} The scope of the callback method.
* prop - {String} The name of the property in the scoped object to
* recieve the image url.
* callback - {Function} Function to call when image url is retrieved.
*/
getURLasync: function(bounds, scope, prop, callback) {
getURLasync: function(bounds, callback) {
bounds = this.adjustBounds(bounds);
// create an arcxml request to generate the image
@@ -239,11 +236,7 @@ OpenLayers.Layer.ArcIMS = OpenLayers.Class(OpenLayers.Layer.Grid, {
var axlResp = new OpenLayers.Format.ArcXML();
var arcxml = axlResp.read(doc);
scope[prop] = this.getUrlOrImage(arcxml.image.output);
// call the callback function to recieve the updated property on the
// scoped object
callback.apply(scope);
callback(this.getUrlOrImage(arcxml.image.output));
},
scope: this
});

View File

@@ -168,15 +168,14 @@ OpenLayers.Tile.Image = OpenLayers.Class(OpenLayers.Tile, {
this.layer.div.appendChild(this.getTile());
if (this.layer.async) {
// Asynchronous image requests call the asynchronous getURL method
// on the layer to fetch an image that covers 'this.bounds', in the scope of
// 'this', setting the 'url' property of the layer itself, and running
// the callback 'initImage' when the image request returns.
var myId = this.asyncRequestId = (this.asyncRequestId || 0) + 1;
this.layer.getURLasync(this.bounds, this, "url", function() {
if (myId == this.asyncRequestId) {
// on the layer to fetch an image that covers 'this.bounds'.
var id = this.asyncRequestId = (this.asyncRequestId || 0) + 1;
this.layer.getURLasync(this.bounds, OpenLayers.Function.bind(function(url) {
if (id == this.asyncRequestId) {
this.url = url;
this.initImage();
}
});
}, this));
} else {
// synchronous image requests get the url immediately.
this.url = this.layer.getURL(this.bounds);

View File

@@ -85,9 +85,8 @@
var layer = new OpenLayers.Layer.WMS(
"Name",
"http://labs.metacarta.com/TESTURL?",
{layers: 'basic'}, {async: true, getURLasync: function(bounds, scope, url, callback) {
scope.url = this.getURL(bounds);
callback.call(scope);
{layers: 'basic'}, {async: true, getURLasync: function(bounds, callback) {
callback(this.getURL(bounds));
}}
);
map.addLayer(layer);