New eventListeners APIProperty for OpenLayers.Tile.
Same behavior as Map.eventListeners or Layer.eventListeners.
New listeners can be registered using the options parameter:
new OpenLayers.Tile.Image(layer, position, bounds, null, size, {
eventListeners: {
loadstart: function(evt) {
// ...
},
loadend: function(evt) {
// ...
}
}
});
This commit is contained in:
@@ -38,6 +38,15 @@ OpenLayers.Tile = OpenLayers.Class({
|
||||
*/
|
||||
events: null,
|
||||
|
||||
/**
|
||||
* APIProperty: eventListeners
|
||||
* {Object} If set as an option at construction, the eventListeners
|
||||
* object will be registered with <OpenLayers.Events.on>. Object
|
||||
* structure must be a listeners object as shown in the example for
|
||||
* the events.on method.
|
||||
*/
|
||||
eventListeners: null,
|
||||
|
||||
/**
|
||||
* Property: id
|
||||
* {String} null
|
||||
@@ -109,10 +118,13 @@ OpenLayers.Tile = OpenLayers.Class({
|
||||
|
||||
//give the tile a unique id based on its BBOX.
|
||||
this.id = OpenLayers.Util.createUniqueID("Tile_");
|
||||
|
||||
this.events = new OpenLayers.Events(this);
|
||||
|
||||
OpenLayers.Util.extend(this, options);
|
||||
|
||||
this.events = new OpenLayers.Events(this);
|
||||
if (this.eventListeners instanceof Object) {
|
||||
this.events.on(this.eventListeners);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -139,7 +151,11 @@ OpenLayers.Tile = OpenLayers.Class({
|
||||
this.size = null;
|
||||
this.position = null;
|
||||
|
||||
if (this.eventListeners) {
|
||||
this.events.un(this.eventListeners);
|
||||
}
|
||||
this.events.destroy();
|
||||
this.eventListeners = null;
|
||||
this.events = null;
|
||||
},
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
|
||||
function test_Tile_constructor (t) {
|
||||
t.plan( 12 );
|
||||
t.plan( 13 );
|
||||
|
||||
setUp();
|
||||
|
||||
@@ -33,7 +33,11 @@
|
||||
var url = "bobob";
|
||||
var size = new OpenLayers.Size(5,6);
|
||||
|
||||
tile = new OpenLayers.Tile(layer, position, bounds, url, size);
|
||||
tile = new OpenLayers.Tile(layer, position, bounds, url, size, {
|
||||
eventListeners: {
|
||||
loadstart: OpenLayers.Function.False
|
||||
}
|
||||
});
|
||||
|
||||
t.ok(tile instanceof OpenLayers.Tile, "new OpenLayers.Tile returns Tile object");
|
||||
t.ok(tile.layer === layer, "tile.layer set correctly");
|
||||
@@ -48,7 +52,9 @@
|
||||
t.ok(tile.id != null, "tile is given an id");
|
||||
t.ok(OpenLayers.String.startsWith(tile.id, "Tile_"),
|
||||
"tile's id starts correctly");
|
||||
t.ok(tile.events != null, "tile's events intitialized");
|
||||
t.ok(tile.events != null, "tile's events initialized");
|
||||
t.ok(tile.events.listeners.loadstart.length == 1,
|
||||
"tile's events initialized from eventListeners option");
|
||||
|
||||
tearDown();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user