Adding tileloadstart event to layer.

For this to be useful (i.e. so listeners can see/modify the tile url), a change in Tile.Image is required so we do not fire the loadstart event before we have the url to load.
This commit is contained in:
ahocevar
2012-03-06 14:40:08 +01:00
parent 81b2b524ec
commit a05eab29db
3 changed files with 12 additions and 6 deletions

View File

@@ -21,9 +21,9 @@
OpenLayers.Tile.Image = OpenLayers.Class(OpenLayers.Tile, {
/**
* Property: url
* APIProperty: url
* {String} The URL of the image being requested. No default. Filled in by
* layer.getURL() function.
* layer.getURL() function. May be modified by loadstart listeners.
*/
url: null,
@@ -166,10 +166,10 @@ OpenLayers.Tile.Image = OpenLayers.Class(OpenLayers.Tile, {
}
if (this.isLoading) {
//if we're already loading, send 'reload' instead of 'loadstart'.
this.events.triggerEvent("reload");
this._loadEvent = "reload";
} else {
this.isLoading = true;
this.events.triggerEvent("loadstart");
this._loadEvent = "loadstart";
}
this.positionTile();
this.renderTile();
@@ -287,6 +287,7 @@ OpenLayers.Tile.Image = OpenLayers.Class(OpenLayers.Tile, {
* Creates the content for the frame on the tile.
*/
initImage: function() {
this.events.triggerEvent(this._loadEvent);
var img = this.getImage();
if (this.url && img.getAttribute("src") == this.url) {
this.onImageLoad();