Merge branch 'master' of github.com:openlayers/openlayers into convenience

This commit is contained in:
tschaub
2011-11-08 08:44:33 -07:00
31 changed files with 1191 additions and 620 deletions
+2 -2
View File
@@ -6,7 +6,7 @@
function test_read_exception(t) {
t.plan(6);
var text = '<?xml version="1.0" encoding="UTF-8"?>' +
'<ows:ExceptionReport xml:lang="en" version="1.0.0"' +
'<ows:ExceptionReport xml:lang="en" version="1.1.0"' +
' xsi:schemaLocation="http://www.opengis.net/ows http://schemas.opengis.net/ows/1.1.0/owsExceptionReport.xsd"' +
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows/1.1">' +
' <ows:Exception locator="foo" exceptionCode="InvalidParameterValue">' +
@@ -18,7 +18,7 @@
var format = new OpenLayers.Format.OWSCommon();
var result = format.read(text);
var report = result.exceptionReport;
t.eq(report.version, "1.0.0", "Version parsed correctly");
t.eq(report.version, "1.1.0", "Version parsed correctly");
t.eq(report.language, "en", "Language parsed correctly");
var exception = report.exceptions[0];
t.eq(exception.code, "InvalidParameterValue", "exceptionCode properly parsed");
+1 -1
View File
@@ -40,7 +40,7 @@
t.eq(obj.serviceProvider.serviceContact.contactInfo.phone.voice, "+49-251-83-30088", "Voice phone correctly parsed");
// operationsMetadata (from OWSCommon)
t.eq(obj.operationsMetadata.DescribeSensor.dcp.http.post, "http://v-swe.uni-muenster.de:8080/WeatherSOS/sos", "POST url for DescribeSensor correctly parsed");
t.eq(obj.operationsMetadata.DescribeSensor.dcp.http.post[0].url, "http://v-swe.uni-muenster.de:8080/WeatherSOS/sos", "POST url for DescribeSensor correctly parsed");
var counter = 0;
for (var key in obj.operationsMetadata.DescribeSensor.parameters.procedure.allowedValues) {
if (counter == 0) {
+15 -6
View File
@@ -4,7 +4,7 @@
<script type="text/javascript">
function test_ows(t) {
t.plan(17);
t.plan(20);
var xml = document.getElementById("ogcsample").firstChild.nodeValue;
var doc = new OpenLayers.Format.XML().read(xml);
var obj = new OpenLayers.Format.WMTSCapabilities().read(doc);
@@ -30,9 +30,18 @@
// ows:OperationsMetadata
var operationsMetadata = obj.operationsMetadata;
t.eq(operationsMetadata.GetCapabilities.dcp.http.get, "http://www.miramon.uab.es/cgi-bin/MiraMon5_0.cgi?", "ows:OperationsMetadata GetCapabilities url is correct");
t.eq(operationsMetadata.GetFeatureInfo.dcp.http.get, "http://www.miramon.uab.es/cgi-bin/MiraMon5_0.cgi?", "ows:OperationsMetadata GetFeatureInfo url is correct");
t.eq(operationsMetadata.GetTile.dcp.http.get, "http://www.miramon.uab.es/cgi-bin/MiraMon5_0.cgi?", "ows:OperationsMetadata GetTile url is correct");
t.eq(operationsMetadata.GetCapabilities.dcp.http.get[0].url, "http://www.miramon.uab.es/cgi-bin/MiraMon5_0.cgi?", "ows:OperationsMetadata GetCapabilities url is correct");
t.eq(operationsMetadata.GetCapabilities.dcp.http.get[0].constraints.GetEncoding.allowedValues,
{'KVP': true},
"ows:OperationsMetadata GetCapabilities Constraints Get is correct");
t.eq(operationsMetadata.GetFeatureInfo.dcp.http.get[0].url, "http://www.miramon.uab.es/cgi-bin/MiraMon5_0.cgi?", "ows:OperationsMetadata GetFeatureInfo url is correct");
t.eq(operationsMetadata.GetFeatureInfo.dcp.http.get[0].constraints,
undefined,
"ows:OperationsMetadata GetFeatureInfo Constraints Get is correct");
t.eq(operationsMetadata.GetTile.dcp.http.get[0].url, "http://www.miramon.uab.es/cgi-bin/MiraMon5_0.cgi?", "ows:OperationsMetadata GetTile url is correct");
t.eq(operationsMetadata.GetTile.dcp.http.get[0].constraints,
undefined,
"ows:OperationsMetadata GetTile Constraints Get is correct");
}
function test_layers(t) {
@@ -47,7 +56,7 @@
t.eq(numOfLayers, 1, "correct count of layers");
var layer = contents.layers[0];
t.eq(layer.abstract, "Coastline/shorelines (BA010)", "layer abstract is correct");
t.eq(layer['abstract'], "Coastline/shorelines (BA010)", "layer abstract is correct");
t.eq(layer.identifier, "coastlines", "layer identifier is correct");
t.eq(layer.title, "Coastlines", "layer title is correct");
@@ -90,7 +99,7 @@
var dimensions = layer.dimensions;
t.eq(dimensions.length, 1, "correct count of dimensions");
t.eq(dimensions[0].title, "Time", "first dimension title is correct");
t.eq(dimensions[0].abstract, "Monthly datasets", "first dimension abstract is correct");
t.eq(dimensions[0]['abstract'], "Monthly datasets", "first dimension abstract is correct");
t.eq(dimensions[0].identifier, "TIME", "first dimension identifier is correct");
t.eq(dimensions[0]['default'], "default", "first dimension default is correct");
t.eq(dimensions[0].values.length, 3, "first dimension has correct count of values");
+366 -4
View File
@@ -49,7 +49,7 @@
}
function test_Layer_Grid_clearTiles (t) {
t.plan(3);
t.plan(4);
var map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.WMS(name, url, params);
@@ -85,6 +85,7 @@
t.ok( layer.grid != null, "layer.grid does not get nullified" );
t.eq(tilesDeleted, numTiles, "all tiles destroy()ed properly");
t.ok(allTilesUnhooked, "all tiles unhooked before being destroyed");
t.eq(layer.gridResolution, null, "gridResolution set to null");
OpenLayers.Tile.Image.prototype.destroy =
OpenLayers.Tile.Image.prototype._destroy;
@@ -167,6 +168,7 @@
var map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.WMS(name, url, params);
layer.destroy = function() {}; //we're going to do funky things with the grid
layer.applyBackBuffer = function() {}; // backbuffering isn't under test here
map.addLayer(layer);
//make sure null bounds doesnt cause script error.
@@ -390,6 +392,8 @@
getLayerPxFromLonLat: function(ul) {
t.ok(ul.equals(desiredUL), "correct ul passed to translation");
return translatedPX;
},
getResolution: function() {
}
}
@@ -482,6 +486,7 @@
g_events = [];
layer.grid = [[{}]]; // to prevent error in updateBackBuffer
tile.onLoadEnd.apply(layer);
t.eq(g_events[0], "tileloaded", "tileloaded triggered when numLoadingTiles is 0");
t.eq(g_events[1], "loadend", "loadend event triggered when numLoadingTiles is 0");
@@ -586,7 +591,7 @@
function test_Layer_Grid_destroy (t) {
t.plan( 8 );
t.plan( 9 );
var map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.Grid(name, url, params);
@@ -603,16 +608,20 @@
map.setCenter(new OpenLayers.LonLat(0,0), 10);
map.setCenter(new OpenLayers.LonLat(1,1));
//grab a reference to one of the tiles
var tile = layer.grid[1][1];
t.eq( tile.imgDiv.className, "olTileImage", "Tile has an image" );
var removeBackBufferCalled = false;
layer.removeBackBuffer = function() {
removeBackBufferCalled = true;
};
layer.destroy();
t.eq( tile.imgDiv, null, "Tile destroyed" );
t.eq( layer.timerId, null, "Tile loading timeout cleared");
t.ok( layer.grid == null, "tiles appropriately destroyed")
t.ok( removeBackBufferCalled, "destroy calls removeBackBuffer");
// destroy after remove from map
layer = new OpenLayers.Layer.WMS(name, url, params);
@@ -759,6 +768,92 @@
map.destroy();
}
function test_moveTo_backbuffer_singletile(t) {
t.plan(4);
var map = new OpenLayers.Map('map', {
resolutions: [1, 0.5, 0.025]
});
var resolution;
var layer = new OpenLayers.Layer.WMS('', '', {}, {
singleTile: true,
isBaseLayer: true,
transitionEffect: 'resize',
applyBackBuffer: function(res) {
resolution = res;
}
});
map.addLayer(layer);
// initial resolution is 0.025
resolution = undefined;
map.setCenter(new OpenLayers.LonLat(0, 0), 2);
t.eq(resolution, 0.025,
'applyBackBuffer not called on first moveTo');
// move to (-90, 45)
resolution = undefined;
map.setCenter(new OpenLayers.LonLat(-90, 45));
t.eq(resolution, 0.025,
'applyBackBuffer called when map is moved');
// change to resolution 1
resolution = undefined;
map.zoomTo(0);
t.eq(resolution, 1,
'applyBackBuffer called when map is zoomed out');
// change to resolution 0.5
resolution = undefined;
map.zoomTo(1);
t.eq(resolution, 0.5,
'applyBackBuffer called when map is zoomed out');
map.destroy();
}
function test_moveTo_backbuffer(t) {
t.plan(4);
var map = new OpenLayers.Map('map', {
resolutions: [1, 0.5, 0.025]
});
var resolution;
var layer = new OpenLayers.Layer.WMS('', '', {}, {
isBaseLayer: true,
transitionEffect: 'resize',
applyBackBuffer: function(res) {
resolution = res;
}
});
map.addLayer(layer);
// initial resolution is 0.025
resolution = undefined;
map.setCenter(new OpenLayers.LonLat(0, 0), 2);
t.eq(resolution, 0.025,
'applyBackBuffer not called on first moveTo');
// move to (-90, 45)
resolution = undefined;
map.setCenter(new OpenLayers.LonLat(-90, 45));
t.eq(resolution, undefined,
'applyBackBuffer not called when map is moved');
// change to resolution 1
resolution = undefined;
map.zoomTo(0);
t.eq(resolution, 1,
'applyBackBuffer called when map is zoomed out');
// change to resolution 0.5
map.zoomTo(1);
t.eq(resolution, 0.5,
'applyBackBuffer called when map is zoomed out');
map.destroy();
}
function test_transformDiv(t) {
t.plan(8);
@@ -814,6 +909,273 @@
map.destroy();
}
function test_applyBackBuffer(t) {
t.plan(13);
var map = new OpenLayers.Map('map2');
var layer = new OpenLayers.Layer.WMS('', '', {}, {
isBaseLayer: true
});
map.addLayer(layer);
map.zoomToMaxExtent();
var backBuffer;
// test #1
layer.createBackBuffer = function() {
return;
};
layer.applyBackBuffer(2);
t.eq(layer.backBuffer, undefined,
'back buffer not created if createBackBuffer returns undefined');
// test #2
layer.createBackBuffer = function() {
backBuffer = document.createElement('div');
return backBuffer;
};
layer.gridResolution = 32;
layer.grid[0][0].bounds = new OpenLayers.Bounds(0, 1, 1, 0);
layer.applyBackBuffer(2);
t.ok(layer.backBuffer === backBuffer,
'back buffer set in layer');
t.ok(layer.div.firstChild === backBuffer,
'back buffer inserted as first child');
t.eq(layer.backBuffer.style.width, '1600%',
'back buffer has correct width');
t.eq(layer.backBuffer.style.height, '1600%',
'back buffer has correct height');
t.eq(layer.backBuffer.style.left, '250%',
'back buffer has correct left');
t.eq(layer.backBuffer.style.top, '275%',
'back buffer has correct top');
// test #3
layer.createBackBuffer = function() {
backBuffer = document.createElement('div');
return backBuffer;
};
layer.gridResolution = 32;
layer.grid[0][0].bounds = new OpenLayers.Bounds(0, 1, 1, 0);
map.layerContainerDiv.style.left = '20px';
map.layerContainerDiv.style.top = '-20px';
layer.applyBackBuffer(2);
t.ok(layer.backBuffer === backBuffer,
'back buffer set in layer');
t.ok(layer.div.firstChild === backBuffer,
'back buffer inserted as first child');
t.eq(layer.backBuffer.style.width, '1600%',
'back buffer has correct width');
t.eq(layer.backBuffer.style.height, '1600%',
'back buffer has correct height');
t.eq(layer.backBuffer.style.left, '230%',
'back buffer has correct left');
t.eq(layer.backBuffer.style.top, '295%',
'back buffer has correct top');
map.destroy();
}
function test_createBackBuffer(t) {
t.plan(7);
var map = new OpenLayers.Map('map');
var layer = new OpenLayers.Layer.WMS('', '', {}, {
isBaseLayer: true
});
map.addLayer(layer);
map.zoomToMaxExtent();
var createBackBuffer = OpenLayers.Tile.Image.prototype.createBackBuffer;
var backBuffer;
OpenLayers.Tile.Image.prototype.createBackBuffer = function() {
return;
};
backBuffer = layer.createBackBuffer();
t.ok(backBuffer != undefined,
'createBackBuffer returns a back buffer');
t.eq(backBuffer.childNodes.length, 0,
'returned back buffer has no child nodes');
OpenLayers.Tile.Image.prototype.createBackBuffer = function() {
return document.createElement('div');
};
backBuffer = layer.createBackBuffer();
t.ok(backBuffer != undefined,
'createBackBuffer returns a back buffer');
t.eq(backBuffer.childNodes[0].style.left, '0%',
'first tile has correct left');
t.eq(backBuffer.childNodes[0].style.top, '0%',
'first tile has correct top');
t.eq(backBuffer.childNodes[1].style.left, '256%',
'second tile has correct left');
t.eq(backBuffer.childNodes[1].style.top, '0%',
'second tile has correct top');
map.destroy();
OpenLayers.Tile.Image.prototype.createBackBuffer = createBackBuffer;
}
function test_removeBackBuffer(t) {
t.plan(3);
var map = new OpenLayers.Map('map');
var layer = new OpenLayers.Layer.WMS('', '', {}, {isBaseLayer: true});
map.addLayer(layer);
// add a fake back buffer
var backBuffer = document.createElement('div');
layer.backBuffer = backBuffer;
layer.div.appendChild(backBuffer);
layer.backBufferResolution = 32;
layer.removeBackBuffer();
t.eq(layer.backBuffer, null, 'backBuffer set to null in layer');
t.eq(layer.backBufferResolution, null,
'backBufferResolution set to null in layer');
t.ok(backBuffer.parentNode !== layer.div,
'back buffer removed from layer');
map.destroy();
}
function test_singleTile_move_and_zoom(t) {
//
// In single tile mode with no transition effect, we insert a non-scaled
// backbuffer when the layer is moved. But if a zoom occurs right after
// a move, i.e. before the new image is received, we need to remove the
// backbuffer, or an ill-positioned image will be visible during the
// zoom transition.
//
t.plan(2);
var map = new OpenLayers.Map('map');
var layer = new OpenLayers.Layer.WMS('', '', {}, {
isBaseLayer: true,
singleTile: true,
ratio: 1
});
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(0, 0), 0);
// move
map.setCenter(new OpenLayers.LonLat(10, 10));
t.ok(layer.backBuffer && layer.backBuffer.parentNode === layer.div,
'backbuffer inserted after map move');
// zoom
map.zoomTo(1);
t.eq(layer.backBuffer, null,
'back buffer removed when zooming');
map.destroy();
}
function test_backbuffer_scaled_layer(t) {
t.plan(12);
//
// set up
//
var map = new OpenLayers.Map('map', {
resolutions: [32, 16, 8, 4, 2, 1]
});
var layer = new OpenLayers.Layer.WMS(
"WMS",
window.location.href + "#",
null,
{transitionEffect: "resize"}
);
layer.serverResolutions = [32, 16, 8];
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(0, 0), 2);
layer.createBackBuffer = function() {
return document.createElement('div');
};
// we want to control when the back buffer is removed
var removeBackBuffer = OpenLayers.Function.bind(
layer.removeBackBuffer, layer);
layer.removeBackBuffer = function() {};
//
// test
//
// change resolution from 8 to 4
map.zoomTo(3);
t.eq(layer.backBuffer.style.width, '100%',
'[8->4] back buffer not scaled');
removeBackBuffer();
// change resolution from 8 to 2
map.zoomTo(2); removeBackBuffer(); map.zoomTo(4);
t.eq(layer.backBuffer.style.width, '100%',
'[8->2] back buffer not scaled');
removeBackBuffer();
// change resolution from 16 to 4
map.zoomTo(1); removeBackBuffer(); map.zoomTo(3);
t.eq(layer.backBuffer.style.width, '200%',
'[16->4] back buffer width is as expected');
t.eq(layer.backBuffer.style.width, '200%',
'[16->4] back buffer height is as expected');
removeBackBuffer();
// change resolution from 32 to 1
map.zoomTo(0); removeBackBuffer(); map.zoomTo(5);
t.eq(layer.backBuffer.style.width, '400%',
'[32->1] back buffer width is as expected');
t.eq(layer.backBuffer.style.width, '400%',
'[32->1] back buffer height is as expected');
removeBackBuffer();
// change resolution from 4 to 2
map.zoomTo(3); removeBackBuffer(); map.zoomTo(4);
t.eq(layer.backBuffer.style.width, '100%',
'[4->2] back buffer not scaled');
removeBackBuffer();
// change resolution from 4 to 1
map.zoomTo(3); removeBackBuffer(); map.zoomTo(5);
t.eq(layer.backBuffer.style.width, '100%',
'[4->1] back buffer not scaled');
removeBackBuffer();
// change resolution from 1 to 4
map.zoomTo(5); removeBackBuffer(); map.zoomTo(3);
t.eq(layer.backBuffer.style.width, '100%',
'[1->4] back buffer not scaled');
removeBackBuffer();
// change resolution from 4 to 8
map.zoomTo(3); removeBackBuffer(); map.zoomTo(2);
t.eq(layer.backBuffer.style.width, '100%',
'[4->8] back buffer not scaled');
removeBackBuffer();
// change resolution from 4 to 16
map.zoomTo(3); removeBackBuffer(); map.zoomTo(1);
t.eq(layer.backBuffer.style.width, '50%',
'[4->16] back buffer width is as expected');
t.eq(layer.backBuffer.style.width, '50%',
'[4->16] back buffer height is as expected');
removeBackBuffer();
//
// tear down
//
map.destroy();
}
</script>
</head>
<body>
+33
View File
@@ -220,6 +220,39 @@
t.eq(tileurl1, "http://example.com/wmts/1.0.0/world/blue_marble/arcgis_online/1/0/0.jpg", "layer1 getURL returns correct url");
map.destroy();
}
function test_getURL_resourceUrl(t) {
t.plan(2);
var xml = document.getElementById("capabilities").firstChild.nodeValue;
var doc = new OpenLayers.Format.XML().read(xml);
var obj = new OpenLayers.Format.WMTSCapabilities().read(doc);
var template = "http://www.example.com/{style}/{Time}/{style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png";
var layer = new OpenLayers.Layer.WMTS({
requestEncoding: "REST",
url: template,
layer: "GeoWebCache_USA_WMTS",
style: "foo",
matrixSet: "arcgis-online",
params: {Time: "2011"},
dimensions: ["Time"]
});
var map = new OpenLayers.Map("map", {
layers: [layer],
projection: "EPSG:4326",
maxResolution: 0.3515625,
maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90)
});
map.setCenter(new OpenLayers.LonLat(-97.0, 38.0), 1);
t.eq(layer.getURL(new OpenLayers.Bounds(-135.0, 0.0, -90.0, 45.0)),
"http://www.example.com/foo/2011/foo/arcgis-online/1/1/1.png", "getURL returns correct url");
map.zoomIn();
t.eq(layer.getURL(new OpenLayers.Bounds(-180.0, 0.0, -90.0, 90.0)),
"http://www.example.com/foo/2011/foo/arcgis-online/2/2/2.png", "getURL returns correct url");
map.destroy();
}
function test_destroy (t) {
t.plan(3);
-260
View File
@@ -1,260 +0,0 @@
<html>
<head>
<script src="../OLLoader.js"></script>
<script type="text/javascript">
var tile;
var map, layer;
function setUp() {
map = new OpenLayers.Map("map");
layer = new OpenLayers.Layer.WMS(
"WMS",
window.location.href + "#",
null,
{transitionEffect: "resize"}
);
map.addLayer(layer)
map.setCenter(new OpenLayers.LonLat(0, 0));
}
function tearDown() {
map.destroy();
map = null;
layer = null;
}
var position = new OpenLayers.Pixel(20,30);
var bounds = new OpenLayers.Bounds(1,2,3,4);
function test_initialize (t) {
t.plan(2);
setUp();
tile = new OpenLayers.Tile.Image(layer, position, bounds, null);
t.eq(tile.backBufferData, {}, "back buffer data initialized");
t.eq(tile.size.w, 256, "size object with default width created");
tearDown();
}
function test_backBufferMode(t) {
t.plan(4);
var l;
var map = new OpenLayers.Map("map");
l = new OpenLayers.Layer.WMS('', window.location.href + '#');
map.addLayer(l);
map.zoomToMaxExtent();
tile = new OpenLayers.Tile.Image(l, position, bounds, null);
t.eq(tile.backBufferMode, 0,
'backBufferMode correctly set [tiled]');
l = new OpenLayers.Layer.WMS('', window.location.href + '#',
null, {singleTile: true});
map.addLayer(l);
tile = new OpenLayers.Tile.Image(l, position, bounds, null);
t.eq(tile.backBufferMode, 1,
'backBufferMode correctly set [singleTile]');
l = new OpenLayers.Layer.WMS('', window.location.href + '#',
null, {transitionEffect: 'resize'});
map.addLayer(l);
tile = new OpenLayers.Tile.Image(l, position, bounds, null);
t.eq(tile.backBufferMode, 2,
'backBufferMode correctly set [tiled, transition]');
l = new OpenLayers.Layer.WMS('', window.location.href + '#',
null, {singleTile: true,
transitionEffect: 'resize'});
map.addLayer(l);
tile = new OpenLayers.Tile.Image(l, position, bounds, null);
t.eq(tile.backBufferMode, 3,
'backBufferMode correctly set [singleTile, transition]');
map.destroy();
}
function test_setBackBufferData(t) {
t.plan(2);
setUp();
tile = new OpenLayers.Tile.Image(layer, position, bounds, null);
tile.draw();
// moveTo calls setBackBufferData
tile.moveTo(new OpenLayers.Bounds(1,2,3,4),
new OpenLayers.Pixel(30,40), true);
t.eq(tile.backBufferData.bounds.toString(), bounds.toString(),
"bounds stored correctly");
t.eq(tile.backBufferData.resolution, map.getResolution(),
"resolution stored correctly");
tearDown();
}
function test_updateBackBuffer(t) {
t.plan(1);
setUp();
tile = new OpenLayers.Tile.Image(layer, position, bounds, null);
tile.draw();
tile.isLoading = false;
map.zoomIn();
tile.updateBackBuffer();
t.eq(tile.backBufferData.tile.style.width, (layer.tileSize.w*2)+"%",
"backBuffer frame correctly resized");
tearDown();
}
function test_removeBackBuffer(t) {
t.plan(2);
setUp();
tile = new OpenLayers.Tile.Image(layer, position, bounds, null);
tile.draw();
tile.isLoading = false;
map.zoomIn();
tile.updateBackBuffer();
var backBuffer = tile.backBufferData.tile;
tile.removeBackBuffer();
t.eq(tile.backBufferData.tile, null,
"backBuffer reference removed");
t.ok(backBuffer.parentNode !== layer.div,
"backBuffer removed from layer");
tearDown();
}
function test_updateBackBuffer_scaled_layer(t) {
t.plan(16);
//
// set up
//
var backBuffer;
var map = new OpenLayers.Map('map', {
resolutions: [32, 16, 8, 4, 2, 1]
});
var layer = new OpenLayers.Layer.WMS(
"WMS",
window.location.href + "#",
null,
{transitionEffect: "resize"}
);
var serverResolitions = layer.serverResolutions;
layer.serverResolutions = [32, 16, 8];
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(0, 0), 2);
tile = new OpenLayers.Tile.Image(layer, position, bounds, null);
tile.backBufferMode = 2; // transition effect
// mock createBackBuffer to avoid removing the image
// div from the tile
tile.insertBackBuffer = function() {
return this.frame.cloneNode(false);
};
tile.removeBackBuffer = function() {
};
//
// test
//
tile.draw();
// check initial state
t.eq(tile.backBufferData.resolution, 8,
'resolution 8 is set in the back buffer data');
tile.isLoading = false;
// change resolution from 8 to 4
map.zoomTo(3);
backBuffer = tile.updateBackBuffer();
t.ok(backBuffer == undefined,
'[8->4] updateBackBuffer returns undefined');
// change resolution from 8 to 2
map.zoomTo(2); tile.setBackBufferData(); map.zoomTo(4);
backBuffer = tile.updateBackBuffer();
t.ok(backBuffer == undefined,
'[8->2] updateBackBuffer returns undefined');
// change resolution from 16 to 4
map.zoomTo(1); tile.setBackBufferData(); map.zoomTo(3);
backBuffer = tile.updateBackBuffer();
t.ok(backBuffer != undefined,
'[16->4] updateBackBuffer returns a back buffer tile');
t.eq(backBuffer.style.width, '512%',
'[16->4] back buffer width is as expected');
t.eq(backBuffer.style.width, '512%',
'[16->4] back buffer height is as expected');
// change resolution from 32 to 1
map.zoomTo(0); tile.setBackBufferData(); map.zoomTo(5);
backBuffer = tile.updateBackBuffer();
t.ok(backBuffer != undefined,
'[32->1] updateBackBuffer returns a back buffer tile');
t.eq(backBuffer.style.width, '1024%',
'[32->1] back buffer width is as expected');
t.eq(backBuffer.style.width, '1024%',
'[32->1] back buffer height is as expected');
// change resolution from 4 to 2
map.zoomTo(3); tile.setBackBufferData(); map.zoomTo(4);
backBuffer = tile.updateBackBuffer();
t.ok(backBuffer == undefined,
'[4->2] updateBackBuffer returns undefined');
// change resolution from 4 to 1
map.zoomTo(3); tile.setBackBufferData(); map.zoomTo(5);
backBuffer = tile.updateBackBuffer();
t.ok(backBuffer == undefined,
'[4->1] updateBackBuffer returns undefined');
// change resolution from 1 to 4
map.zoomTo(5); tile.setBackBufferData(); map.zoomTo(3);
backBuffer = tile.updateBackBuffer();
t.ok(backBuffer == undefined,
'[1->4] updateBackBuffer returns undefined');
// change resolution from 4 to 8
map.zoomTo(3); tile.setBackBufferData(); map.zoomTo(2);
backBuffer = tile.updateBackBuffer();
t.ok(backBuffer == undefined,
'[4->8] updateBackBuffer returns undefined');
// change resolution from 4 to 16
map.zoomTo(3); tile.setBackBufferData(); map.zoomTo(1);
backBuffer = tile.updateBackBuffer();
t.ok(backBuffer != undefined,
'[4->16] updateBackBuffer returns a back buffer tile');
t.eq(backBuffer.style.width, '128%',
'[4->16] back buffer width is as expected');
t.eq(backBuffer.style.width, '128%',
'[4->16] back buffer height is as expected');
//
// tear down
//
map.removeLayer(layer);
map.destroy();
}
</script>
</head>
<body>
<div id="map" style="height:550px;width:500px"></div>
</body>
</html>
+13 -6
View File
@@ -317,8 +317,8 @@
map.destroy();
}
function test_insertBackBuffer(t) {
t.plan(4);
function test_createBackBuffer(t) {
t.plan(3);
var map = new OpenLayers.Map('map');
var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
@@ -326,11 +326,18 @@
map.addLayer(layer);
map.setCenter(new OpenLayers.LonLat(0,0), 5);
var tile = layer.grid[0][0];
// we're going to create a back buffer while the image
// is actually loading, so we call stopObservingElement
// to avoid any unexpected behavior
tile.isLoading = false;
OpenLayers.Event.stopObservingElement(tile.imgDiv);
var img = tile.imgDiv;
var backBuffer = tile.insertBackBuffer();
t.eq(backBuffer.style.left, tile.frame.style.left, "backBuffer tile has same left style as frame");
t.ok(backBuffer.parentNode === layer.div, "backBuffer inserted into layer div");
t.ok(backBuffer.firstChild === img, "image appended to backBuffer");
var bb = tile.createBackBuffer();
t.eq(bb.style.left, tile.frame.style.left,
"backbuffer has same left style as frame");
t.ok(bb.firstChild === img, "image appended to bb");
t.ok(tile.imgDiv == null, "image reference removed from tile");
map.destroy();
}
+1 -3
View File
@@ -15,7 +15,7 @@
var wmsUrl = "http://labs.metacarta.com/wms/vmap0?";
function test_Tile_Image_IFrame_create (t) {
t.plan( 5 );
t.plan( 3 );
map = new OpenLayers.Map('map');
var bar = new Array(205).join("1234567890");
layer = new OpenLayers.Layer.WMS(name, wmsUrl,
@@ -25,7 +25,6 @@
map.addLayer(layer);
var tile = layer.addTile(bounds, position);
t.eq(tile.backBufferMode, 2, "backBufferMode is 2 after tile creation");
tile.draw();
t.eq(tile.imgDiv.nodeName.toLowerCase(), "iframe", "IFrame used for long URL");
@@ -33,7 +32,6 @@
layer.mergeNewParams({foo: null});
tile.draw();
t.eq(tile.imgDiv.nodeName.toLowerCase(), "img", "IMG used for short URL");
t.eq(tile.backBufferMode, 2, "backBufferMode reset to 2");
tile.maxGetUrlLength = 0;
tile.draw();
-1
View File
@@ -224,7 +224,6 @@
<li>Symbolizer/Text.html</li>
<li>Tile.html</li>
<li>Tile/Image.html</li>
<li>Tile/BackBufferable.html</li>
<li>Tile/Image/IFrame.html</li>
<li>Tile/WFS.html</li>
<li>Tween.html</li>