Merge remote branch 'upstream/master'
This commit is contained in:
@@ -24,7 +24,10 @@ OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, {
|
||||
|
||||
/**
|
||||
* Supported event types:
|
||||
* - *locationupdated* Triggered when browser return a new position
|
||||
* - *locationupdated* Triggered when browser return a new position. Listeners will
|
||||
* receive an object with a 'position' property which is the browser.geolocation.position
|
||||
* native object, as well as a 'point' property which is the location transformed in the
|
||||
* current map projection.
|
||||
* - *locationfailed* Triggered when geolocation has failed
|
||||
* - *locationuncapable* Triggered when control is activated on a browser
|
||||
* which doesn't support geolocation
|
||||
|
||||
@@ -265,6 +265,16 @@ OpenLayers.Layer = OpenLayers.Class({
|
||||
* {Float}
|
||||
*/
|
||||
minResolution: null,
|
||||
|
||||
/**
|
||||
* Property: resolution
|
||||
* {Float} Current resolution that the layer is drawn in. This is
|
||||
* used to determine whether the zoom has changed when calling
|
||||
* <moveTo> from <redraw>. Subclasses may set this.resolution to
|
||||
* null prior to calling redraw to force passing zoomChanged
|
||||
* true to moveTo.
|
||||
*/
|
||||
resolution: null,
|
||||
|
||||
/**
|
||||
* APIProperty: numZoomLevels
|
||||
@@ -552,7 +562,8 @@ OpenLayers.Layer = OpenLayers.Class({
|
||||
var extent = this.getExtent();
|
||||
|
||||
if (extent && this.inRange && this.visibility) {
|
||||
var zoomChanged = true;
|
||||
zoomChanged = this.resolution == null ||
|
||||
this.resolution !== this.map.getResolution();
|
||||
this.moveTo(extent, zoomChanged, false);
|
||||
this.events.triggerEvent("moveend",
|
||||
{"zoomChanged": zoomChanged});
|
||||
@@ -577,6 +588,7 @@ OpenLayers.Layer = OpenLayers.Class({
|
||||
display = display && this.inRange;
|
||||
}
|
||||
this.display(display);
|
||||
this.resolution = this.map.getResolution();
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -632,6 +644,8 @@ OpenLayers.Layer = OpenLayers.Class({
|
||||
|
||||
// deal with gutters
|
||||
this.setTileSize();
|
||||
|
||||
this.resolution = null;
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -120,6 +120,7 @@ OpenLayers.Layer.HTTPRequest = OpenLayers.Class(OpenLayers.Layer, {
|
||||
*/
|
||||
mergeNewParams:function(newParams) {
|
||||
this.params = OpenLayers.Util.extend(this.params, newParams);
|
||||
this.resolution = null;
|
||||
var ret = this.redraw();
|
||||
if(this.map != null) {
|
||||
this.map.events.triggerEvent("changelayer", {
|
||||
@@ -144,7 +145,7 @@ OpenLayers.Layer.HTTPRequest = OpenLayers.Class(OpenLayers.Layer, {
|
||||
if (force) {
|
||||
return this.mergeNewParams({"_olSalt": Math.random()});
|
||||
} else {
|
||||
return OpenLayers.Layer.prototype.redraw.apply(this, []);
|
||||
return OpenLayers.Layer.prototype.redraw.call(this);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@@ -672,19 +672,82 @@
|
||||
// test that the moveend event was triggered
|
||||
t.ok(log.event, "an event was logged");
|
||||
t.eq(log.event.type, "moveend", "moveend was triggered");
|
||||
t.eq(log.event.zoomChanged, true, "event says zoomChanged true - poor name");
|
||||
t.eq(log.event.zoomChanged, false, "event says zoomChanged false");
|
||||
|
||||
layer.moveTo = function(bounds, zoomChanged, dragging) {
|
||||
var extent = layer.map.getExtent();
|
||||
t.ok(bounds.equals(extent),
|
||||
"redraw calls moveTo with the map extent");
|
||||
t.ok(zoomChanged,
|
||||
"redraw calls moveTo with zoomChanged true");
|
||||
t.ok(!zoomChanged,
|
||||
"redraw calls moveTo with zoomChanged false");
|
||||
t.ok(!dragging,
|
||||
"redraw calls moveTo with dragging false");
|
||||
}
|
||||
layer.redraw();
|
||||
}
|
||||
|
||||
// This function includes integration tests to verify that the
|
||||
// layer's moveTo function is called with the expected value
|
||||
// for zoomChanged
|
||||
function test_moveTo_zoomChanged(t) {
|
||||
t.plan(6);
|
||||
|
||||
var log = {};
|
||||
var map = new OpenLayers.Map('map');
|
||||
|
||||
var l1 = new OpenLayers.Layer('l1', {isBaseLayer: true});
|
||||
l1.moveTo = function(bounds, zoomChanged, dragging) {
|
||||
log.moveTo = {zoomChanged: zoomChanged};
|
||||
OpenLayers.Layer.prototype.moveTo.apply(this, arguments);
|
||||
};
|
||||
|
||||
map.addLayer(l1);
|
||||
map.zoomToMaxExtent();
|
||||
|
||||
log = {};
|
||||
l1.redraw();
|
||||
t.eq(log.moveTo.zoomChanged, false,
|
||||
"[a] redraw calls moveTo with zoomChanged false");
|
||||
|
||||
log = {};
|
||||
l1.resolution = null;
|
||||
l1.redraw();
|
||||
t.eq(log.moveTo.zoomChanged, true,
|
||||
"[b] redraw calls moveTo with zoomChanged true");
|
||||
|
||||
l1.setVisibility(false);
|
||||
log = {};
|
||||
l1.setVisibility(true);
|
||||
t.eq(log.moveTo.zoomChanged, false,
|
||||
"[c] redraw calls moveTo with zoomChanged false");
|
||||
|
||||
l1.setVisibility(false);
|
||||
map.zoomIn();
|
||||
log = {};
|
||||
l1.setVisibility(true);
|
||||
t.eq(log.moveTo.zoomChanged, true,
|
||||
"[d] redraw calls moveTo with zoomChanged true");
|
||||
|
||||
l1.moveTo = OpenLayers.Layer.prototype.moveTo;
|
||||
|
||||
var l2 = new OpenLayers.Layer('l2');
|
||||
l2.moveTo = function(bounds, zoomChanged, dragging) {
|
||||
log.moveTo = {zoomChanged: zoomChanged};
|
||||
OpenLayers.Layer.prototype.moveTo.apply(this, arguments);
|
||||
};
|
||||
log = {};
|
||||
map.addLayer(l2);
|
||||
t.eq(log.moveTo.zoomChanged, true,
|
||||
"[e] redraw calls moveTo with zoomChanged true");
|
||||
|
||||
map.removeLayer(l2);
|
||||
log = {};
|
||||
map.addLayer(l2);
|
||||
t.eq(log.moveTo.zoomChanged, true,
|
||||
"[f] redraw calls moveTo with zoomChanged true");
|
||||
|
||||
map.destroy();
|
||||
}
|
||||
|
||||
function test_layer_setIsBaseLayer(t) {
|
||||
t.plan(2);
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
}
|
||||
|
||||
function test_Layer_HTTPRequest_mergeNewParams (t) {
|
||||
t.plan( 8 );
|
||||
t.plan( 9 );
|
||||
|
||||
var map = new OpenLayers.Map('map');
|
||||
layer = new OpenLayers.Layer.HTTPRequest(name, url, params, options);
|
||||
@@ -97,7 +97,9 @@
|
||||
|
||||
layer.redraw = function() {
|
||||
t.ok(true, "layer.mergeNewParams calls layer.redraw");
|
||||
}
|
||||
t.ok(layer.resolution === null, "layer.mergeNewParams sets resolution to null");
|
||||
};
|
||||
layer.resolution = 'fake';
|
||||
layer.mergeNewParams();
|
||||
}
|
||||
|
||||
|
||||
@@ -342,6 +342,38 @@
|
||||
t.ok(tile.imgDiv == null, "image reference removed from tile");
|
||||
map.destroy();
|
||||
}
|
||||
|
||||
// test for https://github.com/openlayers/openlayers/pull/36
|
||||
// (more an integration test than a unit test)
|
||||
function test_olImageLoadError(t) {
|
||||
t.plan(2);
|
||||
|
||||
var map = new OpenLayers.Map('map');
|
||||
var layer = new OpenLayers.Layer.WMS("invalid", "", {layers: 'basic'});
|
||||
map.addLayer(layer);
|
||||
|
||||
var size = new OpenLayers.Size(5, 6);
|
||||
var position = new OpenLayers.Pixel(20, 30);
|
||||
var bounds = new OpenLayers.Bounds(1, 2, 3, 4);
|
||||
|
||||
var tile = new OpenLayers.Tile.Image(layer, position, bounds, null, size);
|
||||
tile.draw();
|
||||
|
||||
t.delay_call(0.1, function() {
|
||||
|
||||
// check initial state
|
||||
t.ok(OpenLayers.Element.hasClass(tile.imgDiv, 'olImageLoadError'),
|
||||
'tile image has the olImageLoadError class (init state)');
|
||||
|
||||
layer.setVisibility(false);
|
||||
layer.setVisibility(true);
|
||||
|
||||
t.ok(OpenLayers.Element.hasClass(tile.imgDiv, 'olImageLoadError'),
|
||||
'tile image still has the olImageLoadError class');
|
||||
|
||||
map.destroy();
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
|
||||
Reference in New Issue
Block a user