No new argument for Layer::redraw.
Instead, make _resolution a private property (resolution) which is set to null to make redraw call moveTo with zoomChanged set to true.
This commit is contained in:
+13
-8
@@ -266,6 +266,14 @@ OpenLayers.Layer = OpenLayers.Class({
|
|||||||
*/
|
*/
|
||||||
minResolution: null,
|
minResolution: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Property: resolution
|
||||||
|
* {Float} Current resolution that the layer is drawn in. Used by
|
||||||
|
* subclasses to determine whether the zoom has changed when calling
|
||||||
|
* <moveTo>.
|
||||||
|
*/
|
||||||
|
resolution: null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APIProperty: numZoomLevels
|
* APIProperty: numZoomLevels
|
||||||
* {Integer}
|
* {Integer}
|
||||||
@@ -541,9 +549,7 @@ OpenLayers.Layer = OpenLayers.Class({
|
|||||||
* Returns:
|
* Returns:
|
||||||
* {Boolean} The layer was redrawn.
|
* {Boolean} The layer was redrawn.
|
||||||
*/
|
*/
|
||||||
redraw: function(zoomChanged) {
|
redraw: function() {
|
||||||
// zoomChanged forces a zoom change in the layer's moveTo
|
|
||||||
// call. This isn't documented because not part of the API.
|
|
||||||
var redrawn = false;
|
var redrawn = false;
|
||||||
if (this.map) {
|
if (this.map) {
|
||||||
|
|
||||||
@@ -554,9 +560,8 @@ OpenLayers.Layer = OpenLayers.Class({
|
|||||||
var extent = this.getExtent();
|
var extent = this.getExtent();
|
||||||
|
|
||||||
if (extent && this.inRange && this.visibility) {
|
if (extent && this.inRange && this.visibility) {
|
||||||
zoomChanged = zoomChanged ||
|
zoomChanged = this.resolution == null ||
|
||||||
this._resolution === undefined ||
|
this.resolution !== this.map.getResolution();
|
||||||
this._resolution !== this.map.getResolution();
|
|
||||||
this.moveTo(extent, zoomChanged, false);
|
this.moveTo(extent, zoomChanged, false);
|
||||||
this.events.triggerEvent("moveend",
|
this.events.triggerEvent("moveend",
|
||||||
{"zoomChanged": zoomChanged});
|
{"zoomChanged": zoomChanged});
|
||||||
@@ -581,7 +586,7 @@ OpenLayers.Layer = OpenLayers.Class({
|
|||||||
display = display && this.inRange;
|
display = display && this.inRange;
|
||||||
}
|
}
|
||||||
this.display(display);
|
this.display(display);
|
||||||
this._resolution = this.map.getResolution();
|
this.resolution = this.map.getResolution();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -638,7 +643,7 @@ OpenLayers.Layer = OpenLayers.Class({
|
|||||||
// deal with gutters
|
// deal with gutters
|
||||||
this.setTileSize();
|
this.setTileSize();
|
||||||
|
|
||||||
delete this._resolution;
|
this.resolution = null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,8 @@ OpenLayers.Layer.HTTPRequest = OpenLayers.Class(OpenLayers.Layer, {
|
|||||||
*/
|
*/
|
||||||
mergeNewParams:function(newParams) {
|
mergeNewParams:function(newParams) {
|
||||||
this.params = OpenLayers.Util.extend(this.params, newParams);
|
this.params = OpenLayers.Util.extend(this.params, newParams);
|
||||||
var ret = OpenLayers.Layer.prototype.redraw.call(this, true);
|
this.resolution = null;
|
||||||
|
var ret = this.redraw();
|
||||||
if(this.map != null) {
|
if(this.map != null) {
|
||||||
this.map.events.triggerEvent("changelayer", {
|
this.map.events.triggerEvent("changelayer", {
|
||||||
layer: this,
|
layer: this,
|
||||||
@@ -142,10 +143,9 @@ OpenLayers.Layer.HTTPRequest = OpenLayers.Class(OpenLayers.Layer, {
|
|||||||
*/
|
*/
|
||||||
redraw: function(force) {
|
redraw: function(force) {
|
||||||
if (force) {
|
if (force) {
|
||||||
return this.mergeNewParams({"_olSalt": Math.random()});
|
this.params["_olSalt"] = Math.random();
|
||||||
} else {
|
|
||||||
return OpenLayers.Layer.prototype.redraw.call(this);
|
|
||||||
}
|
}
|
||||||
|
return OpenLayers.Layer.prototype.redraw.call(this);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+2
-1
@@ -710,7 +710,8 @@
|
|||||||
"[a] redraw calls moveTo with zoomChanged false");
|
"[a] redraw calls moveTo with zoomChanged false");
|
||||||
|
|
||||||
log = {};
|
log = {};
|
||||||
l1.redraw(true);
|
l1.resolution = null;
|
||||||
|
l1.redraw();
|
||||||
t.eq(log.moveTo.zoomChanged, true,
|
t.eq(log.moveTo.zoomChanged, true,
|
||||||
"[b] redraw calls moveTo with zoomChanged true");
|
"[b] redraw calls moveTo with zoomChanged true");
|
||||||
|
|
||||||
|
|||||||
@@ -95,8 +95,8 @@
|
|||||||
t.eq( layer.params.chickpeas, "image/png", "mergeNewParams() makes clean copy of hash");
|
t.eq( layer.params.chickpeas, "image/png", "mergeNewParams() makes clean copy of hash");
|
||||||
|
|
||||||
var redraw = OpenLayers.Layer.prototype.redraw;
|
var redraw = OpenLayers.Layer.prototype.redraw;
|
||||||
OpenLayers.Layer.prototype.redraw = function(forceZoomChanged) {
|
OpenLayers.Layer.prototype.redraw = function() {
|
||||||
t.eq(forceZoomChanged, true, 'mergeNewParams() sends true to Layer.redraw');
|
t.eq(this.resolution, null, 'mergeNewParams sets layer resolution to null, causing redraw to call moveTo with zoomChanged set to true');
|
||||||
};
|
};
|
||||||
layer.mergeNewParams();
|
layer.mergeNewParams();
|
||||||
OpenLayers.Layer.prototype.redraw = redraw;
|
OpenLayers.Layer.prototype.redraw = redraw;
|
||||||
|
|||||||
Reference in New Issue
Block a user