Map.setCenter() should not call Layer.moveTo if inRange has changed to false.

With this patch you should no longer see tiles loading if your layer is out of
range or not visible. Hopefully! r=crschmidt (closes #937)


git-svn-id: http://svn.openlayers.org/trunk/openlayers@5913 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Éric Lemoine
2008-01-27 22:59:31 +00:00
parent 8487829362
commit 221967cc3f
2 changed files with 9 additions and 14 deletions
+1 -2
View File
@@ -244,8 +244,7 @@ OpenLayers.Layer.WFS = OpenLayers.Class(
var outOfBounds = (!firstRendering && var outOfBounds = (!firstRendering &&
!this.tile.bounds.containsBounds(bounds)); !this.tile.bounds.containsBounds(bounds));
if ( (zoomChanged || firstRendering || (!dragging && outOfBounds)) if (zoomChanged || firstRendering || (!dragging && outOfBounds)) {
&& this.inRange) {
//determine new tile bounds //determine new tile bounds
var center = bounds.getCenterLonLat(); var center = bounds.getCenterLonLat();
var tileWidth = bounds.getWidth() * this.ratio; var tileWidth = bounds.getWidth() * this.ratio;
+8 -12
View File
@@ -1341,23 +1341,19 @@ OpenLayers.Map = OpenLayers.Class({
for (var i = 0; i < this.layers.length; i++) { for (var i = 0; i < this.layers.length; i++) {
var layer = this.layers[i]; var layer = this.layers[i];
if (!layer.isBaseLayer) { if (!layer.isBaseLayer) {
var moveLayer;
var inRange = layer.calculateInRange(); var inRange = layer.calculateInRange();
if (layer.inRange != inRange) { if (layer.inRange != inRange) {
// Layer property has changed. We are going // the inRange property has changed. If the layer is
// to call moveLayer so that the layer can be turned // no longer in range, we turn it off right away. If
// off or on. // the layer is no longer out of range, the moveTo
// call below will turn on the layer.
layer.inRange = inRange; layer.inRange = inRange;
moveLayer = true; if (!inRange) {
layer.display(false);
}
this.events.triggerEvent("changelayer"); this.events.triggerEvent("changelayer");
} else {
// If nothing has changed, then we only move the layer
// if it is visible and inrange.
moveLayer = (layer.visibility && layer.inRange);
} }
if (inRange && layer.visibility) {
if (moveLayer) {
layer.moveTo(bounds, zoomChanged, dragging); layer.moveTo(bounds, zoomChanged, dragging);
} }
} }