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:
@@ -244,8 +244,7 @@ OpenLayers.Layer.WFS = OpenLayers.Class(
|
||||
var outOfBounds = (!firstRendering &&
|
||||
!this.tile.bounds.containsBounds(bounds));
|
||||
|
||||
if ( (zoomChanged || firstRendering || (!dragging && outOfBounds))
|
||||
&& this.inRange) {
|
||||
if (zoomChanged || firstRendering || (!dragging && outOfBounds)) {
|
||||
//determine new tile bounds
|
||||
var center = bounds.getCenterLonLat();
|
||||
var tileWidth = bounds.getWidth() * this.ratio;
|
||||
|
||||
@@ -1341,23 +1341,19 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
for (var i = 0; i < this.layers.length; i++) {
|
||||
var layer = this.layers[i];
|
||||
if (!layer.isBaseLayer) {
|
||||
|
||||
var moveLayer;
|
||||
var inRange = layer.calculateInRange();
|
||||
if (layer.inRange != inRange) {
|
||||
// Layer property has changed. We are going
|
||||
// to call moveLayer so that the layer can be turned
|
||||
// off or on.
|
||||
// the inRange property has changed. If the layer is
|
||||
// no longer in range, we turn it off right away. If
|
||||
// the layer is no longer out of range, the moveTo
|
||||
// call below will turn on the layer.
|
||||
layer.inRange = inRange;
|
||||
moveLayer = true;
|
||||
if (!inRange) {
|
||||
layer.display(false);
|
||||
}
|
||||
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 (moveLayer) {
|
||||
if (inRange && layer.visibility) {
|
||||
layer.moveTo(bounds, zoomChanged, dragging);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user