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:
@@ -196,6 +196,9 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
|
||||
* element - {DOMElement} A reference to layer.events.element.
|
||||
*
|
||||
* Supported event types:
|
||||
* tileloadstart - Triggered when a tile starts loading. Listeners receive
|
||||
* an object as first argument, which has a tile property that
|
||||
* references the tile that starts loading.
|
||||
* tileloaded - Triggered when each new tile is
|
||||
* loaded, as a means of progress update to listeners.
|
||||
* listeners can access 'numLoadingTiles' if they wish to keep
|
||||
@@ -971,6 +974,7 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
|
||||
if (this.numLoadingTiles == 0) {
|
||||
this.events.triggerEvent("loadstart");
|
||||
}
|
||||
this.events.triggerEvent("tileloadstart", {tile: tile});
|
||||
this.numLoadingTiles++;
|
||||
};
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user