The new base layer may previously have been out of range, in which case setVisibility(true) would do nothing if the layer was visible already. So we check if it was previously out of range, and redraw it if necessary.
With the buttonclick event, we can also handle clicks on layer names and checkboxes/radiobuttons when they get the olButton class. To make this work on iOS, we have to add a check in buttonclick.js to handle the case where the event occurred on a text element (nodeType === 3).
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) {
// ...
}
}
});
Since draw is the only tile operation that we defer, the tile queue can be an array of tiles and queue handling can be simplified. We now use the beforedraw event to defer drawing, and remove all occurrences of a tile from the tile queue when we draw it.
Instead of layers that want to defer tile drawing having to override the tile's draw method, layers can now abort drawing by returning false from a beforedraw listener, and later call draw(true) to draw the tile directly, without clearing it first.
This saves server requests, and because we use OpenLayers.Animation, setting img.src on a tile should not freeze iOS any more, so we can hopefully get rid of scheduleMoveGriddedTiles.
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.
Whitespace fixed from patch, and removed docs for beforefeatureselected and featureselected events because they are fired on the layer, not the control.
p=mosesonline, r=me (closes http://trac.osgeo.org/openlayers/ticket/3538)